diff --git a/b_jd_wx_luckDraw.js b/b_jd_wx_luckDraw.js new file mode 100644 index 0000000..1d6c419 --- /dev/null +++ b/b_jd_wx_luckDraw.js @@ -0,0 +1,539 @@ +/* +幸运抽奖beta v2.0.6 + +https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=56f3d081b3394dd0bf78c3b2ad8ada99 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10046&templateId=20210714190900lhj011&activityId=1706582977057599489&nodeId=101001&prd=cjwx +https://jinggeng-isv.isvjcloud.com/ql/front/loadBlindBox?id=9e8080f28b7c3eeb018b7f17e0e01f0a&user_id=1000003788 +https://hdb-isv.isvjcloud.com/h5/pages/pointDraw/pointDraw?id=aa5737bac99a9b9f5a4defad272ba8df&userId=131385 +https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable11?id=715459808c66e8fe5cac9bad3e1aab46&userId=11744671 +https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/gameDZPWw_1.html?activityId=bdcbe31ba346449a93e95d749a1c493b +https://hzbz-isv.isvjcloud.com/bigdraw/draw.h4?id=d571bc02uzix +https://hdds-isv.isvjcloud.com/bigdraw/draw.h4?id=f0c6c831megx +https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30003/1001/?shopId=819551&activityId=1783351662425452546 + +export B_WX_LUCK_DRAW_URL="" +export B_WX_NOT_LUCK_DRAW_LIST="" # 积分不跑 @分割 例子: a2海外@马可波罗@合田家@风向标@罗技二手外设 +export B_WX_BLACK_LUCK_DRAW_RULE="" # 拉黑的店铺 例子: FITURE|FITURE +export B_WX_LUCK_OPEN_MODE="0" # 强制开卡 0:不开卡 1:开卡 默认值0 +export B_WX_NOT_LUCK_LIMIT="100" # 前N没有次数跳出 默认值100 + +cron: 7 7 7 7 7 * +const $ = new Env("幸运抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.B_WX_LUCK_DRAW_URL); + +if (mode) { +} +const { + RunMode: _0x14c5ce, + UserMode: _0x2785a5, + baseCommonEnv: _0x34c2bd, + baseCommonEnvKey: _0x42af3f +} = require("./bear"); +let _0x32ba81 = ["10020", "10021", "10026", "10031", "10041", "10042", "10046", "10062", "10063", "10073", "10080"]; +process.env.B_WX_LUCK_ACTIVITY_TYPES ? process.env.B_WX_LUCK_ACTIVITY_TYPES.split(/[@,&|]/).forEach(_0x3b0926 => _0x32ba81.push(_0x3b0926)) : ""; +_0x34c2bd.notLuckDrawList = process.env.B_WX_NOT_LUCK_DRAW_LIST ? process.env.B_WX_NOT_LUCK_DRAW_LIST.split(/[@,&|]/) : "a2海外@马可波罗@合田家@风向标@罗技二手外设".split("@"); +_0x34c2bd.blackLuckDrawRule = process.env.B_WX_BLACK_LUCK_DRAW_RULE || "FITURE|FITURE"; +_0x34c2bd.openCardMode = parseInt(process.env.B_WX_LUCK_OPEN_MODE || 0); +_0x34c2bd.notLuckLimit = parseInt(process.env.B_WX_NOT_LUCK_LIMIT || 100); +_0x34c2bd.activityTypes = _0x32ba81; +_0x42af3f.B_WX_NOT_LUCK_DRAW_LIST = "__notLuckDrawList__"; +_0x42af3f.B_WX_BLACK_LUCK_DRAW_RULE = "blackLuckDrawRule"; +_0x42af3f.B_WX_LUCK_OPEN_MODE = "openCardMode"; +_0x42af3f.B_WX_LUCK_ACTIVITY_TYPES = "__activityTypes__"; +_0x42af3f.B_WX_NOT_LUCK_LIMIT = "notLuckLimit"; +_0x14c5ce.envInfo = { + "name": "B幸运抽奖", + "runName": "b_jd_wx_luckDraw", + "env": "B_WX_LUCK_DRAW_URL", + "version": "2.0.6" +}; +let _0x5002ff = 0; +class _0x2f7451 extends _0x2785a5 { + constructor(_0x2a4581, _0x463154) { + super(_0x2a4581, _0x463154); + this.lzkjOpenCard = true; + _0x34c2bd.openCardMode === 1 && (this.openCardTypes = [...this.openCardTypes, ..._0x32ba81]); + } + async ["followShop"](_0x3dd62e) { + let _0x9882db = await this.wxApi(this.type + "/follow", { + "pin": this.secretPin, + "skuId": _0x3dd62e + }); + if (_0x9882db && _0x9882db.result) { + return _0x9882db.data; + } + return false; + } + ["exitShop"]() { + if (this.shopName?.["match"](_0x34c2bd.blackLuckDrawRule) || _0x34c2bd.notLuckDrawList.some(_0x13379e => this.shopName?.["includes"](_0x13379e))) { + return this.putMsg("已屏蔽"), this.stop(); + } + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "v2") { + await this.login(); + if (this.index == 0) { + await this.v2getPrizes(); + } + this.exitShop(); + if (_0x34c2bd.openCardMode === 1 && !this.openCard) { + await this.bindWithVender(); + } + let _0x20f2a7; + if (!["30003"].includes(this.activityType)) { + await this.v2Task(); + let _0x4eef74 = await this.v2Api("api/" + this.activityType + "/chanceNum"); + _0x20f2a7 = _0x4eef74?.["data"] ?? 5; + } else _0x20f2a7 = 3; + if (_0x20f2a7 === 0) return _0x5002ff++, _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()), this.putMsg("无抽奖次数"); + while (_0x20f2a7-- > 0) { + let _0x59e27e = await this.v2Api("api/" + this.activityType + "/lotteryDraw"); + this.log(_0x59e27e); + if (_0x59e27e && _0x59e27e.code === 200) { + this.putMsg(_0x59e27e?.["data"]?.["prizeName"] || "空气"); + _0x59e27e?.["data"]?.["result"]?.["result"] !== "true" && _0x59e27e?.["data"]?.["result"]?.["result"] !== true && _0x59e27e?.["data"]?.["activityPrizeId"] && (this.addressId = _0x59e27e?.["data"]?.["result"]?.["result"], this.prizeName = _0x59e27e?.["data"]?.["prizeName"], this.activityPrizeId = _0x59e27e?.["data"]?.["activityPrizeId"], await this.saveAddress()); + continue; + } + let _0x3e41dc = _0x59e27e?.["message"] || "抽奖失败"; + this.putMsg(_0x3e41dc); + await this.wxStopSync(_0x3e41dc); + return; + } + return; + } + if (this.mode === "hzbz") { + let _0x5d029d = await this.taskGet(this.activityUrl); + if (!_0x5d029d) return; + if (_0x5d029d.includes("活动已结束")) { + this.putMsg("活动已经结束,手动确认"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + let _0x115d53 = this.textToHtml(_0x5d029d), + _0x3e36cb = _0x115d53("#draw_info").text(); + _0x3e36cb = this.parseJSON(_0x3e36cb); + let _0x48fcd2 = _0x3e36cb?.["condtions"] || [], + _0x562996 = _0x3e36cb?.["stime"] || 0, + _0x204f49 = _0x3e36cb?.["etime"] || 0; + this.shopName = _0x3e36cb?.["shopName"]; + this.shopId = _0x3e36cb?.["shopId"]; + this.rule = _0x3e36cb?.["drawRule"]; + _0x2785a5.activity.shopId = this.shopId; + _0x2785a5.activity.venderId = this.shopId; + _0x2785a5.activity.shopName = this.shopName; + _0x2785a5.activity.startTime = _0x562996; + _0x2785a5.activity.endTime = _0x204f49; + if (_0x562996 && _0x562996 > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (_0x204f49 && _0x204f49 < this.timestamp()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + this.exitShop(); + let _0x7a15b7 = await this.hzbzApi("LoadUserData.json", { + "id": this.activityId, + "token": this.isvToken, + "buyerFrom": "01" + }); + this.debug(_0x7a15b7); + if (_0x7a15b7 && _0x7a15b7.code !== 0 && _0x7a15b7.code !== 1) { + this.putMsg(_0x7a15b7?.["txt"]); + } + this.wxStop(_0x7a15b7?.["txt"]); + for (let _0x2dca05 of _0x48fcd2) { + this.debug(_0x2dca05?.["type"]); + _0x2dca05?.["type"] === "sc_shop" && (await this.hzbzApi("CollectShopToDraw.json", { + "conditionid": _0x2dca05?.["id"] + })); + _0x2dca05?.["type"] === "sign_draw" && (await this.hzbzApi("SingedInfo.json", { + "conditionid": _0x2dca05?.["id"] + })); + if (_0x2dca05?.["type"] === "ll_goods") { + let _0x3cd470 = JSON.parse(_0x2dca05.condition), + _0x5eb9e9 = _0x3cd470?.["allMax"] ?? 0, + _0x11b89b = _0x3cd470?.["dayMax"] ?? 0, + _0x410394 = _0x3cd470?.["viewCount"] ?? 0; + this.debug(_0x5eb9e9, _0x11b89b, _0x410394); + this.debug(_0x11b89b ?? _0x410394); + await this.hzbzApi("ViewGoodsToDraw.json", { + "conditionid": _0x2dca05?.["id"], + "count": _0x11b89b ?? _0x410394 + }); + } + if (_0x2dca05?.["type"] === "sc_goods") { + let _0x4adff0 = JSON.parse(_0x2dca05.condition), + _0x1b871f = _0x4adff0?.["viewCount"] ?? 0, + _0xcfc62 = _0x4adff0?.["dayMax"] ?? 0; + await this.hzbzApi("CollectGoodsToDraw.json", { + "conditionid": _0x2dca05?.["id"], + "count": _0xcfc62 ?? _0x1b871f + }); + } + } + _0x7a15b7 = await this.hzbzApi("LoadUserData.json", { + "id": this.activityId, + "token": this.isvToken, + "buyerFrom": "01" + }); + this.debug(_0x7a15b7); + if (_0x7a15b7?.["code"] !== 0) { + this.putMsg(_0x7a15b7?.["txt"]); + return; + } + let _0x5a6e98 = _0x7a15b7?.["drawChances"] ?? 0; + _0x5a6e98 = Math.min(_0x5a6e98, 3); + while (_0x5a6e98-- > 0) { + await this.sleep(1000); + let _0x9c8b99 = await this.hzbzApi("DoDraw.json", { + "needCollectShop": _0x7a15b7.needCollectShop ?? false + }); + this.debug(_0x9c8b99); + if (_0x9c8b99?.["prizeName"]) { + this.putMsg(_0x9c8b99?.["prizeName"]); + _0x9c8b99?.["needInputInfo"] && (this.addressId = _0x9c8b99?.["prizeId"], this.prizeName = _0x9c8b99?.["prizeName"], await this.saveAddress()); + continue; + } + let _0x15fd7c = _0x9c8b99?.["txt"]; + this.putMsg(_0x15fd7c); + this.wxStop(_0x15fd7c); + } + return; + } + if (this.mode === "gzsl") { + let _0x1da79b = await this.gzslApi("getLottery"); + this.debug(_0x1da79b); + if (_0x1da79b && _0x1da79b.status === "1") { + let _0x3ee58d = _0x1da79b?.["activity"] || {}; + this.shopId = _0x3ee58d.shopId; + this.venderId = _0x3ee58d.customerId ?? this.shopId; + this.rule = _0x3ee58d.rule; + this.shopName = _0x3ee58d.shopName; + let { + startTime: _0x2cc036, + endTime: _0x173ea5 + } = _0x3ee58d; + _0x2785a5.activity.shopId = this.shopId; + _0x2785a5.activity.venderId = this.venderId; + _0x2785a5.activity.shopName = this.shopName; + _0x2785a5.activity.startTime = _0x2cc036; + _0x2785a5.activity.endTime = _0x173ea5; + _0x2785a5.activity.actType = 'gzsl' + _0x2785a5.activity.prizeList = _0x1da79b.prizeList + if (_0x2cc036 && _0x2cc036 > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (_0x173ea5 && _0x173ea5 < this.timestamp()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + this.exitShop(); + let _0x3d7147 = Math.max(0, _0x1da79b?.["leftTime"] ?? 0); + if (_0x3d7147 === 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + _0x3d7147 = Math.min(_0x3d7147, 3); + this.debug(_0x3d7147); + while (_0x3d7147-- > 0) { + await this.sleep(2000, 3000); + let _0x1a513e = await this.gzslApi("draw"); + this.log(_0x1a513e); + if (_0x1a513e && _0x1a513e.status === "1") this.putMsg(_0x1a513e?.["data"]?.["name"] + _0x1a513e?.["data"]?.["detail"] || "空气"); else { + if (_0x1a513e && _0x1a513e.status === "-14") { + this.putMsg("非会员"); + return; + } else { + if (_0x1a513e && _0x1a513e.status === "-3") { + this.log("关注"); + let _0x2e44a0 = await this.taskPostByJson("wuxian/user/flowShop/" + this.shopId + "/" + this.venderId, { + "shopId": this.shopId, + "venderId": this.venderId, + "token": this.isvToken, + "source": "01" + }); + if (_0x2e44a0 && _0x2e44a0.status !== "1") return this.putMsg(_0x1a513e?.["msg"]); + _0x3d7147++; + continue; + } else { + let _0x3ef19c = _0x1a513e?.["msg"]; + this.putMsg(_0x3ef19c); + await this.wxStopSync(_0x3ef19c); + return; + } + } + } + } + } else { + let _0x3bd477 = _0x1da79b?.["msg"]; + this.putMsg(_0x3bd477); + await this.wxStopSync(_0x3bd477); + return; + } + return; + } + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.jinggengShopInfo(); + this.exitShop(); + let _0x37c70a = { + "user_id": this.userId, + "act_id": this.activityId + }, + _0x5afddd = ""; + if (this.activityUrl.includes("showDrawOne")) _0x5afddd = "postFrontCheckDrawOne"; else { + if (this.activityUrl.includes("showTaskDraw")) { + _0x5afddd = "postFrontTaskDraw"; + _0x37c70a.drawCountNumFlag = true; + } else { + if (this.activityUrl.includes("loadBlindBox")) _0x5afddd = "postBlindBox"; else { + this.putMsg("未知活动类型"); + this.stop(); + return; + } + } + } + let _0x5953ac = 1; + while (_0x5953ac-- > 0) { + await this.sleep(1000, 2000); + let _0x4a715c = await this.jinggengApi(_0x5afddd, _0x37c70a); + this.debug(_0x4a715c); + if (_0x4a715c && _0x4a715c.succ) { + this.log(_0x4a715c); + let _0x41ffd2 = _0x4a715c.msg ?? "{}", + _0x4e7ab2 = JSON.parse(_0x41ffd2); + if (_0x4e7ab2?.["isSendSucc"]) { + let _0x5b0978 = _0x4e7ab2?.["drawAwardDto"]?.["awardName"]; + this.putMsg("" + _0x4e7ab2?.["drawAwardDto"]?.["awardDenomination"] + _0x5b0978); + if (_0x4e7ab2?.["drawAwardDto"]?.["awardType"] === "JD_GOODS") { + this.addressId = _0x4e7ab2?.["drawAwardDto"]?.["actLogId"]; + this.prizeName = _0x5b0978; + await this.saveAddress(); + } + } + } else { + let _0x15ba92 = _0x4a715c?.["msg"] || "抽奖失败"; + if (_0x15ba92?.["includes"]("部分会员") && _0x34c2bd.openCardMode === 1) { + this.debug("尝试开卡", this.venderId, this.shopId); + await this.bindWithVender(); + if (this.canNotOpenCard) return; + _0x5953ac++; + continue; + } + if (_0x15ba92?.["includes"]("关注店铺")) { + await this.taskPost("front/followShop", { + "userId": this.userId + }); + _0x5953ac++; + continue; + } + _0x5953ac = _0x4a715c?.["drawNum"] ?? _0x5953ac; + this.putMsg(_0x15ba92); + this.wxStop(); + } + } + return; + } + if (this.mode === "hdb") { + await this.login(); + await this.reportPVUV(); + await this.loadFrontAct(); + await this.loadFrontAward(); + this.exitShop(); + _0x34c2bd.openCardMode === 1 && this.openCard === 0 && (this.debug("尝试开卡", this.venderId, this.shopId), await this.bindWithVender()); + let _0x50018a = 1; + if (this.actType === "pointDraw") { } else { + let _0x5d1189 = await this.hdbApi("showTaskList", {}, true); + if (_0x5d1189 && _0x5d1189.succ) { + let _0x2e2805 = _0x5d1189?.["result"]?.["taskList"] ?? []; + if (_0x2e2805.some(_0x5c72e1 => _0x5c72e1.conditionType === "favouriteShop" && _0x5c72e1.isFinish === 0)) { + let _0x241748 = await this.hdbApi("completeActivityTask", { + "conditionType": "favouriteShop" + }, true); + this.debug(_0x241748); + } + } + let _0x31118e = await this.hdbApi("getDrawTimes"); + this.debug(_0x31118e); + if (_0x31118e && _0x31118e.succ) { + _0x50018a = _0x31118e?.["result"]?.["giveTimes"] ?? 1; + } + } + if (_0x50018a === 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + _0x50018a = Math.min(_0x50018a, 3); + while (_0x50018a-- > 0) { + await this.sleep(1500); + let _0x196699 = await this.hdbApi(this.actType === "pointDraw" ? "postPointDraw" : "postDraw", { + "drawTimes": 1 + }); + this.log(_0x196699); + if (_0x196699 && _0x196699.succ) { + if (_0x196699.result.succ) { + this.putMsg(_0x196699.result?.["dmActivityLog"]?.["awardName"] || "空气"); + _0x196699.result?.["msg"]?.["includes"]("填写信息") && (this.addressId = _0x196699.result?.["dmActivityLog"]?.["id"], this.prizeName = _0x196699.result?.["dmActivityLog"]?.["awardName"], await this.saveAddress()); + return; + } else this.putMsg(_0x196699.result?.["errorMsg"] || _0x196699.result?.["message"]); + } + let _0x4e39b5 = _0x196699?.["message"]; + if (_0x4e39b5?.["includes"]("您未中奖")) { + this.putMsg("空气"); + continue; + } + if (_0x4e39b5?.["includes"]("关注店铺") && (await this.follow())) { + _0x50018a++; + continue; + } + this.putMsg(_0x4e39b5); + await this.wxStopSync(_0x4e39b5); + return; + } + return; + } + await this.getDefenseUrls(); + if (_0x32ba81.includes(this.activityType)) { + await this.login(); + this.exitShop(); + if (![10026, 10080].includes(this.actType)) { + let _0x29cd8a = await this.lzkjApi("api/task/" + this.type + "/activity"); + if (_0x29cd8a && _0x29cd8a.resp_code === 0) { + let _0x431f59 = _0x29cd8a.data?.["taskList"] || []; + await this.lzkjTask(_0x431f59); + } + } + let _0x7b628d = await this.lzkjApi("api/prize/drawPrize"); + this.drawNumber = 5; + _0x7b628d && _0x7b628d.resp_code === 0 && (this.drawNumber = _0x7b628d.data?.["drawNumber"]); + [10026, 10080].includes(this.actType) && (this.drawNumber = 3); + if (this.drawNumber <= 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + this.drawNumber = Math.min(this.drawNumber, 7); + while (this.drawNumber-- > 0) { + let _0x5aceaa = await this.lzkjApi("api/prize/draw", { + "consumePoints": 0, + "actId": this.activityId + }); + this.debug(_0x5aceaa); + if (_0x5aceaa && _0x5aceaa.resp_code === 0) { + if (_0x5aceaa.data === "1") { + this.putMsg("积分不足"); + return; + } + this.putMsg(_0x5aceaa.data?.["prizeName"] || "空气"); + _0x5aceaa.data && _0x5aceaa.data?.["prizeName"] && _0x5aceaa.data?.["prizeType"] === 3 && _0x5aceaa.data?.["addressId"] && _0x5aceaa.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = _0x5aceaa.data.addressId, this.prizeName = _0x5aceaa.data?.["prizeName"], await this.saveAddress()); + await this.sleep(200); + } else { + let _0x524f34 = _0x5aceaa?.["resp_msg"]; + this.putMsg(_0x524f34); + await this.wxStopSync(_0x524f34); + return; + } + } + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + if (this.index === 0) { + await this.getShopInfo(); + if (this.shopName && ([26, 128, 129].includes(this.activityType) && _0x34c2bd.notLuckDrawList.some(_0x3d777b => this.shopName.includes(_0x3d777b)) || this.shopName.match(_0x34c2bd.blackLuckDrawRule))) { + this.putMsg("已屏蔽"); + this.stop(); + return; + } + } + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let _0x7b6d73 = await this.activityContent(); + if (!_0x7b6d73?.["result"] || !_0x7b6d73?.["data"]) { + this.putMsg(_0x7b6d73?.["errorMessage"]); + return; + } + let _0x16966d = _0x7b6d73.data?.["canDrawTimes"] ?? 5, + _0xd7f791 = _0x7b6d73.data?.["dayMaxDraw"] || 5, + _0x7dead6 = _0x7b6d73.data?.["hasFollow"] || false, + _0x1eb877 = _0x7b6d73.data?.["needFollow"] || false, + _0x17c7b8 = _0x7b6d73.data?.["content"]["filter"](_0x2a8f53 => [6, 7, 13, 14, 15, 16].includes(_0x2a8f53.type)); + if (_0x17c7b8.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let _0x55f613 = await this.getGiveContent(); + if (_0x55f613 && _0x55f613.data) { + let _0x2085f4 = _0x55f613.data; + if (_0x2085f4?.["follow"] && _0x2085f4.follow.hasGetGiveTimes < _0x2085f4.follow.maxGiveTimes) { + this.log("做关注任务"); + let _0x2e965c = _0x55f613.data.follow.skuIdsList; + const _0x5d0d21 = _0x2085f4?.["followRecordVO"]?.["hasFollowSkuIdsList"]; + _0x2e965c = _0x5d0d21 ? this.different(_0x2e965c, _0x5d0d21) : _0x2e965c; + for (let _0x5b0c3f = 0; _0x5b0c3f < _0x2085f4.follow.followTimes - _0x2085f4.follow.hasFollowTimes; _0x5b0c3f++) { + await this.followShop(_0x2e965c[_0x5b0c3f]); + await this.sleep(100); + } + _0x16966d++; + } + } + _0x16966d = Math.min(_0x16966d, _0xd7f791, 7); + if (_0x16966d <= 0) return _0x5002ff++, _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()), this.putMsg("无抽奖次数"); + _0x1eb877 && !_0x7dead6 && (this.log("关注店铺"), await this.wxApi("wxActionCommon/newFollowShop", { + "buyerPin": this.secretPin, + "venderId": this.venderId, + "activityType": this.activityType + })); + _0x16966d = Math.min(_0x16966d, 7); + while (_0x16966d-- > 0) { + let _0x53578c = await this.wxApi(this.type + "/start", { + "pin": this.secretPin + }); + this.debug(_0x53578c); + if (_0x53578c && _0x53578c.result) this.putMsg("" + (_0x53578c.data?.["name"] || "空气")), _0x53578c.data?.["drawInfoType"] === 7 && _0x53578c.data?.["needWriteAddress"] === "y" && _0x53578c.data?.["addressId"] && (this.addressId = _0x53578c.data.addressId, this.prizeName = _0x53578c.data.name, await this.saveAddress()), await this.sleep(500); else { + let _0x2db8bd = _0x53578c?.["errorMessage"]; + if (_0x2db8bd?.["includes"]("未关注") && (await this.follow())) { + _0x16966d++; + continue; + } + if (_0x34c2bd.openCardMode === 1 && ["不是会员", "店铺会员"].some(_0x336e5a => _0x2db8bd?.["includes"](_0x336e5a))) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + _0x16966d++; + continue; + } + this.putMsg(_0x2db8bd); + await this.wxStopSync(_0x2db8bd); + return; + } + } + } +} +_0x14c5ce.activity = { + "activityUrl": activityUrl +}; +_0x14c5ce.TaskClass = _0x2f7451; +_0x14c5ce.run({ + "whitelist": ["1-20000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/b_jd_wx_shopSign.js b/b_jd_wx_shopSign.js new file mode 100644 index 0000000..e54ff46 --- /dev/null +++ b/b_jd_wx_shopSign.js @@ -0,0 +1,264 @@ +/* +签到有礼beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac +https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?activityId=1752260456689242113&shopId=1000001706 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10002&activityId=1764492473030377474&templateId=20201228083300lxqdsl011&nodeId=101001003&prd=cjwx +https://jinggeng-rc.isvjcloud.com/ql/front/showSign?id=9e80802c8dc9f04d018df48f286509c1&user_id=10028198 +https://txzj-isv.isvjcloud.com/sign_in/home?a=UHpDWkVHNFhlTzhGZ2MrYUV3 + +export B_WX_SIGN_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("签到有礼beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.B_WX_SHOP_SIGN_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?activityId=1763116670225666049&shopId=10034889"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/showSign?id=9e80802c8dc9f04d018df48f286509c1&user_id=10028198"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10002&activityId=1764492473030377474&templateId=20201228083300lxqdsl011&nodeId=101001003&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10023&activityId=1752867173633544194&templateId=2023110802rlqd&nodeId=101001&prd=cjwx"; + activityUrl = "https://txzj-isv.isvjcloud.com/sign_in/home?a=UHpDWkVHNFhlTzhGZ2MrYUV3"; + activityUrl = "https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId=f6bfaa803f59453b897876ccccd08cef&venderId=1000084244&adsource=tg_storePage"; + activityUrl = "https://txzj-isv.isvjcloud.com/sign_in/home?a=TUdPWlJXOFFlK29GZ2MrZUV3"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10040&activityId=1772829299506323457&templateId=20210518190900qrqd011&nodeId=101001&prd=cjwx"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/SignIn/SignIn?id=2085faf335324522080865dbc20ba790&userId=1000007503"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10023&templateId=20210518190900rlqd011&activityId=1791052003950125057"; + activityUrl = "https://jingyun-rc.isvjcloud.com/sign_h5/pages/BudweiserSignIn/SignIn?id=0c9992da962de13b2f205b1000dac90d&userId=1000002552"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=b3a4db52e1dc43598b71c946bdcae9bd"; +} +const { + RunMode: I, + UserMode: J +} = require("./bear"); +I.envInfo = { + "name": "B签到有礼", + "runName": "b_jd_wx_shopSign", + "env": "B_WX_SHOP_SIGN_URL", + "version": "2.0.0" +}; +let K = process.env.B_WX_SHOP_SIGN_BEAN_GOODS ? process.env.B_WX_SHOP_SIGN_BEAN_GOODS : false, + M = ["10001", "10002", "10003", "10004", "10023", "10040"]; +process.env.B_WX_SIGN_ACTIVITY_TYPES ? process.env.B_WX_SIGN_ACTIVITY_TYPES.split(/[@,&|]/).forEach(e => M.push(e)) : ""; +class N extends J { + constructor(e, f) { + super(e, f); + } + async ["v2Sign"](e = true) { + let g = await this.v2Api("api/" + this.activityType + "/sign"); + this.debug(g); + if (g && g.code === 200) this.putMsg(g.data?.["prizeName"] || "签到成功"); else { + if (g?.["message"]["includes"]("不是店铺会员") && e) { + await this.bindWithVender(); + await this.sign(false); + } + } + } + async ["signPost"](e = true) { + let g = await this.hdbApi(this.hdbPrefix ? this.hdbPrefix + "front/cusActivity/cusSignPost" : "signPost"); + if (g && g.succ) { + g?.["result"]?.["awardRes"]?.["needSend"] && this.putMsg(g.result?.["awardRes"]?.["dmActivityLog"]?.["awardName"] || "空气"); + let j = g.result?.["signLog"]?.["continueCount"]; + this.putMsg("已连续签到" + j + "天"); + return; + } + let h = g?.["message"]; + if (e && h?.["includes"]("关注店铺") && (await this.follow())) { + return await this.signPost(false); + } + this.putMsg(h); + this.wxStop(h); + return; + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "txzj") { + if (!this.activityId) return this.putMsg("活动链接错误"), this.stop(); + let h = await this.taskPost("front/jd_store_user_info", { + "token": this.isvToken + }); + if (!h || h.code !== "success") { + let k = h.msg || "获取用户信息失败"; + return this.putMsg(k), this.wxStop(k); + } + let i = await this.taskPost("sign_in/receive_prize", { + "pid": this.activityId + }); + this.debug(i); + if (i && i.code === "success") { + this.putMsg("签到成功"); + if (i?.["data"]?.["prize_title"]) switch (i?.["data"]?.["prize_title"]["type"]) { + case "coupon": + this.putMsg("优惠券"); + break; + case "bean": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "京豆"); + break; + case "integral": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "积分"); + break; + case "goods": + this.putMsg("" + i.data.prize_title.prize_name); + break; + default: + this.putMsg(JSON.stringify(i?.["data"]?.["prize_title"])); + } + return; + } + let j = i?.["msg"] || "签到失败"; + this.putMsg(j); + this.wxStop(j); + return; + } + if (this.mode === "v2") { + await this.login(); + await this.v2Sign(); + if (this.index == 0) { + await this.getShopInfo(); + await this.v2getPrizeList(); + await this.v2getRule(); + } + let m = await this.v2Api("api/" + this.activityType + "/calendar"); + this.debug(m); + if (m && m.code === 200) { + let n = m.data.continuousSignDays; + this.putMsg("已连续签到" + n + "天"); + } + return; + } + if (this.mode === "jinggeng") { + this.userId = this.userId || this.getQueryString(this.activityUrl, "userId"); + this.activityId = this.activityId || this.getQueryString(this.activityUrl, "actId"); + await this.setMixNick(); + await this.jinggengShopInfo(); + await this.taskPost("front/followShop", { + "userId": this.userId + }); + let p = await this.jinggengApi("saveSignIn"); + this.debug(p); + if (p && p.succ) { + if (p?.["msg"]?.["includes"]("签到成功但不需要发奖")) this.putMsg("签到成功"); else { + let s = JSON.parse(p.msg); + s?.["isSendSucc"] ? this.putMsg(s?.["actLogDto"]?.["remark"]) : this.putMsg("空气"); + } + return; + } + let q = p?.["msg"] || "签到失败"; + this.putMsg(q); + this.wxStop(q); + return; + } + if (this.mode === "hdb") { + return this.hdbPrefix = "", this.activityUrl?.["includes"]("BudweiserSignIn") && (this.hdbEncript = true, this.hdbLoginPath = "sign_java/front/fans/login", this.hdbPrefix = "sign_java/"), await this.login(), await this.reportPVUV(this.hdbPrefix + "front/activity/reportPVUV"), await this.loadFrontAct(this.hdbPrefix + "front/activity/loadFrontAct"), await this.signPost(); + } + await this.getDefenseUrls(); + if (M.includes(this.activityType)) { + await this.login(); + let v = ["10001", "10002", "10003", "10004"].includes(this.activityType) ? "api/task/sign/add" : "api/task/daySign/getSignClick", + w = await this.lzkjApi(v); + this.debug(w); + if (w && w.resp_code === 0) { + this.putMsg("签到成功"); + let y = w?.["data"]?.["prizeName"]; + this.putMsg(y); + w.data && w.data?.["prizeName"] && w.data?.["prizeType"] === 3 && w.data?.["addressId"] && w.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = w.data.addressId, this.prizeName = w.data?.["prizeName"], await this.saveAddress()); + return; + } + let x = w?.["resp_msg"] || "签到失败"; + this.putMsg(x); + this.wxStop(x); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + if (this.index === 0) { + await this.getShopInfo(); + } + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + this.isSevenDay = this.activityUrl?.["includes"]("sevenDay"); + this.isCj = this.activityUrl?.["includes"]("//cjhy"); + this.signNew = this.activityUrl?.["includes"]("signNew"); + + if (this.index === 0) { + let z = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/getActivity" : (this.signNew ? "signNew/wx/getActivity" : "sign/wx/getActivity"), { + "actId": this.activityId, + "venderId": this.venderId + }); + this.debug(z); + if(z?.isOk) { + let jsondata = JSON.parse(z?.act?.giftJson); + J.activity.prizeList = jsondata.giftConditions; + } + + if (!z || !z.isOk) { + let A = z?.["msg"] || "活动已结束"; + this.putMsg(A); + this.wxStop(A); + } else { + let B = z?.["act"]?.["startTime"], + C = z?.["act"]?.["endTime"]; + J.activity.startTime = B; + J.activity.endTime = C; + if (B && B > this.timestamp()) { + return this.putMsg("活动未开始"), this.stop(); + } + if (C && C < this.timestamp()) return this.putMsg("活动已结束"), this.stop(); + let D = []; + if (this.isSevenDay) { + for (let Q of z?.["act"]?.["giftBean"]?.["giftConditions"] || []) { + Q.gift && (Q.gift.dayNum = Q.dayNum, D.push(Q.gift)); + } + } else { + z?.["act"]?.["wxSignActivityGiftBean"]?.["hasGiftEveryDay"] === "y" && D.push(z?.["act"]?.["wxSignActivityGiftBean"]?.["gift"]); + if (z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"]?.["length"] > 0) { + for (let R of z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"] || []) { + R.gift && (R.gift.dayNum = R.dayNum, D.push(R.gift)); + } + } + } + D = D.filter(T => ["6", "7", "9", "13", "14", "15", "16"].includes(T.giftType) && !T.insufficient); + if (D.length === 0) return this.putMsg("垃圾或领完"), this.stop(); + if (K && D.filter(T => ["6", "7", "13", "14", "15", "16"].includes(T.giftType)).length === 0) return this.putMsg("垃圾或领完"), this.stop(); + } + } + this.debug(this.isSevenDay ? "sign/sevenDay/wx/signUp" : (this.signNew ? "signNew/wx/signUp" : "sign/wx/signUp")); + let f = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/signUp" : (this.signNew ? "signNew/wx/signUp" : "sign/wx/signUp"), { + "actId": this.activityId, + "pin": this.secretPin + }); + this.debug(f); + if (f && f.isOk) { + this.putMsg("签到成功"); + let U = this.isSevenDay ? f.signResult?.["gift"] : f.gift, + V = ""; + if (U) { + let W = this.isSevenDay ? f.signResult?.["gift"]?.["giftName"] : f?.["gift"]?.["giftName"], + X = this.isCj ? f?.["signResult"]?.["send"] ? "" : "(已发完)" : f?.["isSend"] ? "" : "(已发完)"; + V = "" + W + X; + this.addressId = f?.["addressId"]; + f?.["needWriteAddress"] === "y" && this.addressId && (this.prizeName = W, await this.saveAddress()); + } + this.putMsg(V); + return; + } + let g = f?.["msg"] || f?.["errMsg"] || "签到失败"; + this.putMsg(g); + this.wxStop(g); + } +} +I.activity = { + "activityUrl": activityUrl +}; +I.TaskClass = N; +I.run({ + "whitelist": ["1-100000"], + "main_thread": 5, + "wxProxyCheck": 2 +}); \ No newline at end of file diff --git a/bear.js b/bear.js new file mode 100644 index 0000000..6dc65f3 --- /dev/null +++ b/bear.js @@ -0,0 +1,4358 @@ +const l1liiii1 = require("https"), + IliilIlI = require("axios"), + iIl1llII = require("qs"), + II11il11 = require("crypto-js"), + iiliilll = require("base-64"), + i111lii1 = require("node-rsa"), + l1I11II1 = require("fs"), + ilI1il = require("path"), + { + format: i1I1IlI1 + } = require("date-fns"), + Il1ii11 = require("./jdCookie.js"), + { + HttpsProxyAgent: IIIlIII1 + } = require("https-proxy-agent"), + l1ii1ii1 = require("tls"), + lIl1ii = require("cheerio"), + llillIi1 = require("yaml"), + lIIII11l = require("url"), + liIliiiI = require("./sendNotify"), + iIl1111 = require("winston"), + IIiI11l1 = require("events"), + ilIiilII = new IIiI11l1(), + { + AbortController: li1Iil1 + } = require("abort-controller"); +let i1il1i1l = ["来晚了", "已发完", "参数缺失或无效", "超出活动计划时间", "奖品发送失败", "发放完", "全部被领取", "余额不足", "已结束", "活动已经结束", "未开始", "此京豆计划已经结束", "已经发完", "活动不存在"]; +process.env.B_WX_STOP_KEYWORD ? process.env.B_WX_STOP_KEYWORD.split(/[@,&|]/).forEach(iII1i1Ii => i1il1i1l.push(iII1i1Ii)) : ""; +let ill1iIl = ["京豆", "红包", "券", "再来一次", "客服"], + IillIl11 = ["下单满", "签收后", "收到货后", "成功购买任意", "必须购买店铺内"]; +process.env.B_WX_ADDRESS_STOP_KEYWORD ? process.env.B_WX_ADDRESS_STOP_KEYWORD.split(/[@,&|]/).forEach(l1liI => ill1iIl.push(l1liI)) : ""; +process.env.B_WX_ADDRESS_STOP_KEYWORD_RULE ? process.env.B_WX_ADDRESS_STOP_KEYWORD_RULE.split(/[@,&|]/).forEach(I1I1liIi => IillIl11.push(I1I1liIi)) : ""; +let ilIii1l1 = []; +process.env.B_WX_WHITELIST ? process.env.B_WX_WHITELIST.split(/[@,&|]/).forEach(iI1I11iI => ilIii1l1.push(iI1I11iI.includes("-") ? iI1I11iI : iI1I11iI * 1)) : []; +let ilIi1IiI = ["10052"]; +process.env.B_WX_OPEN_CARD_TYPES ? process.env.B_WX_OPEN_CARD_TYPES.split(/[@,&|]/).forEach(ii1ili1l => ilIi1IiI.push(ii1ili1l)) : ""; +const iIl1IlI1 = { + "wxProxyEnable": parseInt(process.env.M_WX_PROXY_ENABLE || "2"), + "wxProxyUrl": process.env.B_WX_PROXY_URL || "", + "wxProxySmart": parseInt(process.env.M_WX_PROXY_SMART || "2"), + "wxProxyInterval": parseInt(process.env.M_WX_PROXY_INTERVAL || 120), + "wxProxyMode": parseInt(process.env.M_WX_PROXY_MODE || "1"), + "wxProxyCheck": parseInt(process.env.M_WX_PROXY_CHECK || "1"), + "proxyRegx": process.env.M_WX_PROXY_ENABLE_REGEXP ? process.env.M_WX_PROXY_ENABLE_REGEXP : "(Request failed with status code (403|407|493|429|497|500|502|503|504))|certificate|timeout|ECONNRESET|ECONNREFUSED|ETIMEDOUT|(tunneling socket could not be established)|(socket hang up)|(CONNECT response)|(socket disconnected)", + "isvObfuscatorRetry": parseInt(process.env?.["M_WX_ISVOBFUSCATOR_RETRY"] || 1), + "isvObfuscatorRetryWait": parseInt(process.env?.["M_WX_ISVOBFUSCATOR_RETRY_WAIT"] || 2), + "notInitPinTokenRegx": /lorealjdcampaign-rc.isvjcloud.com|interaction/, + "messageMasked": parseInt(process.env.M_WX_MESSAGE_MASKED || "2"), + "messageSingle": parseInt(process.env.M_WX_MESSAGE_SINGLE || "2"), + "addressUseNum": parseInt(process.env.M_WX_ADDRESS_USE_NUM || "0"), + "saveAddressMode": parseInt(process.env.M_WX_SAVE_ADDRESS_MODE || "1"), + "wxBlockRegx": process.env.M_WX_BLOCK_PIN_REGX || "", + "wxEnableOtherEnv": parseInt(process.env.M_WX_ENABLE_OTHER_ENV || "1"), + "timeoutDuration": parseInt(process.env.M_WX_TIMEOUT_DURATION || "30"), + "reTryRegx": "(哎呀活动火爆,请稍后再试|活动太火爆了|活动过于火爆|服务器数据忙|奖品与您擦肩而过了哟)", + "retryCount": parseInt(process.env.B_RETRY_COUNT || "20"), + "proxyRetryCount": parseInt(process.env.B_PROXY_RETRY_COUNT || "5"), + "immediatelyExit": parseInt(process.env.B_IMMEDIATE_EXIT || "0"), + "showProxyRetryLog": parseInt(process.env.B_SHOW_PROXY_RETRY_LOG || "1"), + "redisCacheEnable": parseInt(process.env.B_REDIS_CACHE_ENABLE || "2"), + "redisUrl": process.env.B_REDIS || "", + "logger": null, + "logToFile": parseInt(process.env.B_LOG_TO_FILE || "2"), + "stopKeywords": i1il1i1l, + "addressStopKeywords": ill1iIl, + "addressStopKeywordsRule": IillIl11, + "wxWhitelist": ilIii1l1, + "openCardTypes": ilIi1IiI +}, + iiIll1i = { + "M_WX_PROXY_ENABLE": "wxProxyEnable", + "M_WX_PROXY_URL": "wxProxyUrl", + "M_WX_PROXY_SMART": "wxProxySmart", + "M_WX_PROXY_INTERVAL": "wxProxyInterval", + "M_WX_PROXY_MODE": "wxProxyMode", + "M_WX_PROXY_CHECK": "wxProxyCheck", + "M_WX_PROXY_ENABLE_REGEXP": "proxyRegx", + "M_WX_ISVOBFUSCATOR_RETRY": "isvObfuscatorRetry", + "M_WX_ISVOBFUSCATOR_RETRY_WAIT": "isvObfuscatorRetryWait", + "M_WX_MESSAGE_MASKED": "messageMasked", + "M_WX_MESSAGE_SINGLE": "messageSingle", + "M_WX_ADDRESS_USE_NUM": "addressUseNum", + "M_WX_SAVE_ADDRESS_MODE": "saveAddressMode", + "M_WX_BLOCK_PIN_REGX": "wxBlockRegx", + "M_WX_ENABLE_OTHER_ENV": "wxEnableOtherEnv", + "M_WX_TIMEOUT_DURATION": "timeoutDuration", + "M_WX_STOP_KEYWORD": "__stopKeywords__", + "M_WX_ADDRESS_STOP_KEYWORD": "__addressStopKeywords__", + "M_WX_ADDRESS_STOP_KEYWORD_RULE": "__addressStopKeywordsRule__", + "M_WX_WHITELIST": "__wxWhitelist", + "M_WX_OPEN_CARD_TYPES": "__openCardTypes__", + "B_RETRY_COUNT": "retryCount", + "B_PROXY_RETRY_COUNT": "proxyRetryCount", + "B_SHOW_PROXY_RETRY_LOG": "showProxyRetryLog", + "B_REDIS_CACHE_ENABLE": "redisCacheEnable", + "B_REDIS": "redisUrl", + "B_LOG_TO_FILE": "logToFile" + }, + iI111l1i = { + "mode": __dirname.includes("bear"), + "wxRunMode": parseInt(process.env.M_WX_RUN_MODE || "1"), + "wxScheduledNotify": parseInt(process.env.M_WX_SCHEDULE || "1"), + "apiToken": process.env.B_API_TOKEN ? process.env.B_API_TOKEN : "", + "showDebugInfo": parseInt(process.env.M_WX_DEBUG_INFO || "2"), + "hdbTypes": ["hdb-isv.isvjcloud.com", "jingyun-rc.isvjcloud.com"], + "pushUserDetail": process.env.PUSH_USER_DETAIL || "", + "pushTgBotToken": process.env.PUSH_TG_BOT_TOKEN || "", + "scheduleTgBotToken": process.env.SCHEDULE_TG_BOT_TOKEN || "", + "scheduleTgUserId": process.env.SCHEDULE_TG_USER_ID || "", + "urlPrefixes": { + "/prod/cc/interactsaas": /interactsaas/, + "/crm-proya/apps/interact": /crm-proya/, + "/apps/interac": /lorealjdcampaign-rc.isvjcloud.com\/prod\/cc/, + "/prod/cc/cjwx": /lorealjdcampaign-rc.isvjcloud.com\/prod\/cc\/cjwx/, + "/apps/interact": /lorealjdcampaign-rc.isvjcloud.com\/interact/, + "/prod/cc/interaction/v1": /interaction\/v1/, + "/prod/cc/interaction/v2": /interaction\/v2/ + }, + "jdAppTlsOptions": { + "secureProtocol": "TLSv1_2_method", + "ciphers": "TLS_GREASE 0x4a 0x4a:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_128_GCM_SHA256:TLS_RSA_WITH_AES_256_CBC_SHA:TLS_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:TLS_RSA_WITH_3DES_EDE_CBC_SHA" + } + }, + iIliIIII = { + "M_WX_RUN_MODE": "wxRunMode", + "M_WX_SCHEDULE": "wxScheduledNotify", + "B_API_TOKEN": "apiToken", + "M_WX_DEBUG_INFO": "showDebugInfo", + "PUSH_USER_DETAIL": "pushUserDetail", + "PUSH_TG_BOT_TOKEN": "pushTgBotToken", + "SCHEDULE_TG_BOT_TOKEN": "scheduleTgBotToken", + "SCHEDULE_TG_USER_ID": "scheduleTgUserId" + }; +iI111l1i.mode && (iIl1IlI1.wxEnableOtherEnv = 2); +let I1lli11i; +try { + I1lli11i = require("ioredis"); +} catch (iI1lllI) { + console.log("未安装redis依赖,禁用redis缓存"); + iIl1IlI1.redisRequire = 2; +} +class iiiIIIll extends Error { + constructor(liiliII1) { + super(liiliII1); + this.name = "customAssert"; + } +} +class i1I1IiII extends Error { + constructor(lI11II1) { + super(lI11II1); + this.name = "customStop"; + } +} +class lllli1iI extends Error { + constructor(IlilillI) { + super(IlilillI); + this.name = "Aborted"; + } +} +function liI1l1II(...liliil) { + const I1l1iiI = new Date(), + I1ll1IIl = i1I1IlI1(I1l1iiI, "yyyy-MM-dd HH:mm:ss.SSS"), + l1IliI1 = liliil.map(I1ll1iii => { + if (I1ll1iii && I1ll1iii.constructor === Object) return JSON.stringify(I1ll1iii); + return I1ll1iii; + }); + console.log(I1ll1IIl, ...l1IliI1); +} +function i1l1ilIl(II1Iliii = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return II1Iliii.replace(/[xy]/g, function (iillil1i) { + const lill1lI = 16 * Math.random() | 0, + iiiiilli = "x" === iillil1i ? lill1lI : 3 & lill1lI | 8; + return iiiiilli.toString(36); + }); +} +class liiIIll { + constructor(IiiIliI = {}) { + const IliIII1 = iIl1111.format.printf(({ + level: I1iil1ii, + message: l1lllIl1, + timestamp: lIll111I, + tag: I1iliI1l + }) => { + const iIlilll = i1I1IlI1(lIll111I, "HH:mm:ss.SSS"), + liI1l1i = 5, + lii11lli = I1iil1ii.toUpperCase().padEnd(liI1l1i, " "); + return iIlilll + "|" + lii11lli + "|" + l1lllIl1; + }), + IlIil1il = [new iIl1111.transports.Console()]; + if (IiiIliI.logToFile) { + const lil1IIl1 = IiiIliI.filename || i1I1IlI1(new Date(), "yyyy-MM-dd_HH-mm-ss"); + IlIil1il.push(new iIl1111.transports.File({ + "filename": "./logs/" + lil1IIl1 + ".log" + })); + } + this.logger = iIl1111.createLogger({ + "level": IiiIliI.level || "debug", + "format": iIl1111.format.combine(iIl1111.format.timestamp(), IliIII1), + "transports": IlIil1il + }); + ["error", "warn", "info", "debug"].forEach(IIi1lii => { + this[IIi1lii] = (...lllIil1I) => { + const lIi1i1I = lllIil1I.map(lll1l => { + if (lll1l === undefined) return "undefined"; else { + if (lll1l === null) { + return "null"; + } else { + if (typeof lll1l === "object") return JSON.stringify(lll1l); else { + return lll1l; + } + } + } + }).join(" "); + this.logger.log(IIi1lii, lIi1i1I); + }; + }); + } +} +class Iiii1li1 { + static ["ivs"] = ["13.2", "13.5", "14.4", "15.1", "15.1.1", "15.2", "15.2.1", "15.3", "15.3.1", "15.4", "15.4.1", "15.5", "16.0", "16.1", "16.6", "16.6.1", "16.7", "17.0", "17.1", "17.1.2", "17.2", "17.3", "17.4", "17.5"]; + static ["phones"] = [{ + "model": "X", + "screen": "1125*2436", + "tf": "10,3", + "ivsRange": [0, 17] + }, { + "model": "XS", + "screen": "1125*2436", + "tf": "11,2", + "ivsRange": [0, 24] + }, { + "model": "XsMax", + "screen": "1242*2688", + "tf": "11,4", + "ivsRange": [0, 24] + }, { + "model": "XR", + "screen": "828*1792", + "tf": "11,8", + "ivsRange": [0, 24] + }, { + "model": "11", + "screen": "828*1792", + "tf": "12,1", + "ivsRange": [0, 24] + }, { + "model": "11Pro", + "screen": "1125*2436", + "tf": "12,3", + "ivsRange": [0, 24] + }, { + "model": "11ProMax", + "screen": "1242*2688", + "tf": "12,5", + "ivsRange": [0, 24] + }, { + "model": "12", + "screen": "1170*2532", + "tf": "13,2", + "ivsRange": [2, 24] + }, { + "model": "12Pro", + "screen": "1170*2532", + "tf": "13,3", + "ivsRange": [2, 24] + }, { + "model": "12ProMax", + "screen": "1284*2778", + "tf": "13,4", + "ivsRange": [2, 24] + }, { + "model": "13", + "screen": "1170*2532", + "tf": "14,5", + "ivsRange": [3, 24] + }, { + "model": "13Pro", + "screen": "1170*2532", + "tf": "14,2", + "ivsRange": [3, 24] + }, { + "model": "13ProMax", + "screen": "1284*2778", + "tf": "14,3", + "ivsRange": [3, 24] + }, { + "model": "14", + "screen": "1170*2532", + "tf": "14,7", + "ivsRange": [12, 24] + }, { + "model": "14Plus", + "screen": "1284*2778", + "tf": "14,8", + "ivsRange": [12, 24] + }, { + "model": "14Pro", + "screen": "1179*2556", + "tf": "15,2", + "ivsRange": [12, 24] + }, { + "model": "14ProMax", + "screen": "1290*2796", + "tf": "15,3", + "ivsRange": [12, 24] + }, { + "model": "15", + "screen": "1170*2532", + "tf": "15,4", + "ivsRange": [17, 24] + }, { + "model": "15Plus", + "screen": "1179*2556", + "tf": "15,5", + "ivsRange": [17, 24] + }, { + "model": "15Pro", + "screen": "1179*2556", + "tf": "16,1", + "ivsRange": [17, 24] + }, { + "model": "15ProMax", + "screen": "1290*2796", + "tf": "16,2", + "ivsRange": [17, 24] + }]; + static ["generatePhoneInfo"](IiIliiIl = null) { + const I1iII1ll = this.phones[Math.floor(Math.random() * this.phones.length)], + i1l1IIiI = this.ivs.slice(I1iII1ll.ivsRange[0], I1iII1ll.ivsRange[1]), + lii1II1I = i1l1IIiI[Math.floor(Math.random() * i1l1IIiI.length)], + I1llIii = { + "12.4.2": "169143", + "12.4.3": "169159", + "12.4.4": "169175", + "12.6.0": "169204", + "12.6.2": "169227" + }, + Iil1i = Object.keys(I1llIii), + li1i111 = IiIliiIl === null ? Iil1i[Math.floor(Math.random() * Iil1i.length)] : IiIliiIl; + return { + "phone": I1iII1ll.model, + "screen": I1iII1ll.screen, + "tf": I1iII1ll.tf, + "iv": lii1II1I, + "clientVersion": li1i111, + "build": I1llIii[li1i111], + "uuid": i1l1ilIl() + }; + } +} +function i11IIIli(lIl11iIi, I1ll1llI, i1Il1lii) { + const illiliI = ["B6dB3QqGZP1lKNICTaiAeNJSHKNepO5GGgtL6FUceqSlpFZCdx2SZ5MPPbzrgy91HeR0dnJazcMrvMgPF7bhFrfsGaApJKk4JohEEhoJ4kKJpAaGsfrFhb7FPgMvrMczaJnd0ReH19ygrzbPPM5ZS2xdCZFplSqecUF6LtgGG5OpeNKHSJNeAiaTCINKl1PZGqQ3Bd6B", "EUhzJoyKP7VydtpyBwNUGU2tqzI0QB0LIpQ10Fk3hX2ZcPoGRpACqmzcTQbKd98i3U7raFz2rMl2kys0ODgtAh22E3i57wmh38RbbR83hmw75i3E22hAtgDO0syk2lMr2zFar7U3i89dKbQTczmqCApRGoPcZ2Xh3kF01QpIL0BQ0Izqt2UGUNwByptdyV7PKyoJzhUE", "xexcHoyVwOs5TYTQVvU0iXn56ryKVdWedLTpq3KEKmbUHfwzuZjIpZOPVXMEappFhjdqwtp1bBrWaRBCfPFwCq2W8SsyvwqZ6sIGGIs6ZqwvysS8W2qCwFPfCBRaWrBb1ptwqdjhFppaEMXVPOZpIjZuzwfHUbmKEK3qpTLdeWdVKyr65nXi0UvVQTYT5sOwVyoHcxex", "2Llnegc5i4flqd4HZPFK210yh61boBxRSdnNVMeudKimx92Qi4aPuHP12HmEImbWrXjLgBGqy1bSnKvLhqMqhknyuse4nFoeLTkJJkTLeoFn4esuynkhqMqhLvKnSb1yqGBgLjXrWbmIEmH21PHuPa4iQ29xmiKdueMVNndSRxBob16hy012KFPZH4dqlf4i5cgenlL2", "dZzoMZF6xtt3voTFDbPzEZ7GeM8t7uY05d4K4xfhtdxELh96dDRB4oRYA2smET5dy1dafGkXOz2V7tNOVi0vSqfuhI99IKprVK6QQ6KVrpKI99IhufqSv0iVONt7V2zOXkGfad1yd5TEms2AYRo4BRDd69hLExdthfx4K4d50Yu7t8MeG7ZEzPbDFTov3ttx6FZMozZd", "SNYr3bWMtQulWZO2FEwuhSFp3EXPR1TujPRJwUFlxBh9Pvf2MeTEpR7a3dU6e9rNUMyBh2osDdK4Vdm4gZ0XcRCoHZPi2jiXT2dCCd2TXij2iPZHoCRcX0Zg4mdV4KdDso2hByMUNr9e6Ud3a7RpETeM2fvP9hBxlFUwJRPjuT1RPXE3pFShuwEF2OZWluQtMWb3rYNS", "4viQ2FrYHcrH44gqvPLo6KtiFu56AW1eXbDBZrBepzdLKE33Ey4TwFERnkVLnbHAXbKqAi0HFP9Eu7yg8WNlI7q2dvXGGiPaMbrBBrbMaPiGGXvd2q7IlNW8gy7uE9PFH0iAqKbXAHbnLVknREFwT4yE33EKLdzpeBrZBDbXe1WA65uFitK6oLPvqg44HrcHYrF2Qiv4", "0VIoSHBNVAW8De7NquFyEUm0o9xNnQJGn2OR1yOK9djWALhyP3a1XoQEwTnXuzypRuwsaLPUlertksOY6LYmnbQmPgdDQRXXKdKooKdKXXRQDdgPmQbnmYL6YOsktrelUPLaswuRpyzuXnTwEQoX1a3PyhLAWjd9KOy1RO2nGJQnNx9o0mUEyFuqN7eD8WAVNBHSoIV0", "fdJPBiTra9E0qg2HJrobeEC2SkOfSzbw6nG5J5ACx42GQDBsCyGfxNlHHYhl7EmkdvYaKAXUVXSKcTT1KhyYaj9Q4YtyhnOA7cLrrLc7AOnhytY4Q9jaYyhK1TTcKSXVUXAKaYvdkmE7lhYHHlNxfGyCsBDQG24xCA5J5Gn6wbzSfOkS2CEeborJH2gq0E9arTiBPJdf", "kLOA93PyUOX3QdlLuZ9JgNq1peyIITAQSnKzuLBZ2NthOSseAJMGCecvSLVKAww61Y31hJ4l7kAOcjLmtqQNJlNyJb5yu9d9vqWUUWqv9d9uy5bJyNlJNQqtmLjcOAk7l4Jh13Y16wwAKVLSvceCGMJAesSOhtN2ZBLuzKnSQATIIyep1qNgJ9ZuLldQ3XOUyP39AOLk"]; + function lI1I11il(iilIlli1) { + iilIlli1 = iilIlli1.split("").reverse().join(""); + const liiIl1I = new Uint8Array(12), + IlIlil1I = new TextEncoder().encode(iilIlli1); + for (let iiiIi1ii = 0; iiiIi1ii < IlIlil1I.length; iiiIi1ii += 2) { + let lii1il1i = IlIlil1I[iiiIi1ii] << 5 | IlIlil1I[iiiIi1ii + 1] & 255; + lii1il1i %= 63; + liiIl1I[iiiIi1ii >> 1] = lii1il1i; + } + let iIiiIIl1 = ""; + for (let llill1ll = 0; llill1ll < liiIl1I.length; llill1ll++) { + iIiiIIl1 += (liiIl1I[llill1ll] + 256).toString(2).slice(1); + } + let il11IllI = "", + Il1l111 = ""; + for (let II111iil = 0; II111iil < 16; II111iil++) { + if (II111iil !== 0) { + const ililllll = II111iil * 6, + iIIIiIl = iIiiIIl1.substring(ililllll, ililllll + 6); + let I11iIii1 = parseInt(iIIIiIl, 2); + const liiI1llI = Il1l111.split(""); + for (let iI1iiIIi = 0; iI1iiIIi < liiI1llI.length; iI1iiIIi++) { + liiI1llI[iI1iiIIi] === "1" && (I11iIii1 = (I11iIii1 >> 6 - iI1iiIIi | I11iIii1 << iI1iiIIi) & 63); + } + Il1l111 = (I11iIii1 & 63).toString(2).padStart(6, "0"); + } else Il1l111 = iIiiIIl1.substring(0, 6); + il11IllI += Il1l111; + } + for (let Il1lIlII = 0; Il1lIlII < 12; Il1lIlII++) { + const lilii1I1 = Il1lIlII * 8; + liiIl1I[Il1lIlII] = parseInt(il11IllI.substring(lilii1I1, lilii1I1 + 8), 2); + } + const iilIi1li = btoa(String.fromCharCode.apply(null, liiIl1I)); + return iilIi1li; + } + let I1illil1 = Date.now() + parseInt(i1Il1lii); + typeof lIl11iIi != "object" && (lIl11iIi = JSON.parse(lIl11iIi)); + lIl11iIi.nowTime = I1illil1; + let liiiiIil = I1ll1llI + I1illil1; + const l1llllI1 = liiiiIil.substring(0, liiiiIil.length - 5); + let il1iI1l = ""; + for (let l1111ilI = 0; l1111ilI < l1llllI1.length; l1111ilI++) { + let IIi1Iii = l1llllI1.charCodeAt(l1111ilI), + I1i1I = IIi1Iii % 10, + llili1 = illiliI[I1i1I][l1111ilI]; + il1iI1l += llili1; + } + var iilIlill = il1iI1l.length, + lIi1lIII = Math.floor(iilIlill / 24), + i11llil1 = ""; + for (var ll1iIiI1 = 0; ll1iIiI1 < 24; ll1iIiI1++) { + var lIllIll1 = (ll1iIiI1 + 1) * lIi1lIII; + if (ll1iIiI1 === 23) { + lIllIll1 = iilIlill; + } + var lllIilIl = il1iI1l.substring(ll1iIiI1 * lIi1lIII, lIllIll1), + IiIii111 = []; + for (var llii11I1 = 0; llii11I1 < lllIilIl.length; llii11I1++) { + IiIii111.push(lllIilIl.charCodeAt(llii11I1)); + } + var IIiiiil1 = IiIii111.reduce(function (iliiliIl, I1iiIiIi) { + return iliiliIl + I1iiIiIi; + }, 0), + Iil11Iii = Math.floor(IIiiiil1 / IiIii111.length); + i11llil1 += String.fromCharCode(Iil11Iii); + } + il1iI1l = i11llil1; + const llI1iI1l = lI1I11il(il1iI1l), + i11I1lli = II11il11.enc.Utf8.parse(llI1iI1l), + illli111 = II11il11.enc.Utf8.parse(""), + iIIii1l = II11il11.AES.encrypt(JSON.stringify(lIl11iIi), i11I1lli, { + "iv": illli111, + "mode": II11il11.mode.ECB, + "padding": II11il11.pad.Pkcs7 + }); + return iIIii1l.toString(); +} +function I1II1lIl(Iil1i1I1 = {}) { + const l1ili1I = { + "method": "get", + "timeout": 30000 + }, + iIlI111I = Object.assign({}, l1ili1I, Iil1i1I1), + Iil11ilI = IliilIlI.CancelToken.source(), + llII1i11 = iIlI111I.timeout || 20000, + IiI11li1 = setTimeout(() => { + Iil11ilI.cancel("Request canceled due to timeout (" + llII1i11 + " ms)"); + }, llII1i11); + return IliilIlI({ + ...iIlI111I, + "cancelToken": Iil11ilI.token + }).then(liIii1Ii => { + return clearTimeout(IiI11li1), liIii1Ii; + }).catch(l1i1lI1 => { + clearTimeout(IiI11li1); + throw l1i1lI1; + }); +} +function II1li1II(ll11ilii) { + if (ll11ilii.proxy) { + const IIIlII1I = new IIIlIII1(ll11ilii.proxy), + l11llil1 = IIIlII1I.addRequest; + return IIIlII1I.addRequest = function (ilI1ii, iIll1II1, lI11II1l) { + return Object.assign(iIll1II1, ll11ilii.tlsOptions, { + "ciphers": ll11ilii.tlsOptions?.["ciphers"] || l1ii1ii1.DEFAULT_CIPHERS + }), l11llil1.call(this, ilI1ii, iIll1II1, lI11II1l); + }, IIIlII1I; + } + const II1iIl11 = new l1liiii1.Agent({ + ...ll11ilii.tlsOptions, + "ciphers": ll11ilii.tlsOptions?.["ciphers"] || l1ii1ii1.DEFAULT_CIPHERS + }); + return II1iIl11; +} +class l11i111 { + constructor(ll1lIi1i, lI11Ii1) { + this.ua = ll1lIi1i; + this.pin = lI11Ii1; + this.av = ll1lIi1i.slice(ll1lIi1i.indexOf("/") + 1); + this.sua = ll1lIi1i.substring(ll1lIi1i.indexOf("(") + 1, ll1lIi1i.indexOf(")")); + this.random = this.#randomString(10, true); + this.cacheInfo = {}; + } + #getRandomString(iIil1Iii, IlliilIi) { + let iiIiIiIi = "", + lllili1i = iIil1Iii.split(""); + for (let IIilllI = 0; IIilllI < IlliilIi; IIilllI++) { + let liI1IiIl = Math.floor(Math.random() * lllili1i.length); + iiIiIiIi += lllili1i[liI1IiIl]; + } + return iiIiIiIi; + } + #randomString(lillIlll, iiIliIl1) { + var Illiil1I = "", + l1I1iiil = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (var liIl1ii1 = 0; liIl1ii1 < lillIlll; liIl1ii1++) { + var lIli11lI = l1I1iiil; + liIl1ii1 === 0 && iiIliIl1 && (lIli11lI = l1I1iiil.slice(1)); + var l11li11I = Math.round(Math.random() * (lIli11lI.length - 1)); + Illiil1I += lIli11lI.substring(l11li11I, l11li11I + 1); + } + return Illiil1I; + } + #generateFp(ii1ii11I) { + let iIll1liI = 3, + iIiIlili = "0123456789", + IIilIili = 12; + if (ii1ii11I === "4.4") iIll1liI = 4, iIiIlili = "1uct6d0jhq", IIilIili = 11; else { + if (ii1ii11I === "4.3") { + iIll1liI = 3; + iIiIlili = "kl9i1uct6d"; + IIilIili = 12; + } else { + if (ii1ii11I == "4.2") iIll1liI = 4, iIiIlili = "6d0jhqw3pa", IIilIili = 11; else ii1ii11I == "4.1" && (iIll1liI = 6, iIiIlili = "uct6d0jhqw", IIilIili = 9); + } + } + let iilIl1ii, + iiil1Iii = ""; + do { + iilIl1ii = this.#getRandomString(iIiIlili, 1); + iiil1Iii.indexOf(iilIl1ii) == -1 && (iiil1Iii += iilIl1ii); + } while (iiil1Iii.length < iIll1liI); + for (let l1IiiIi of iiil1Iii.slice()) { + iIiIlili = iIiIlili.replace(l1IiiIi, ""); + } + let li11iliI = Math.floor(Math.random() * 10), + IilIi1Il = this.#getRandomString(iIiIlili, li11iliI) + iiil1Iii + this.#getRandomString(iIiIlili, IIilIili - li11iliI) + li11iliI, + lII11i1I = IilIi1Il.split(""), + IliII11; + if (ii1ii11I === "4.4") { + let IlIiiI1i = lII11i1I.slice(0, 8), + lli1li11 = lII11i1I.slice(8), + i1iIilIi = IlIiiI1i.reverse(); + IliII11 = i1iIilIi.map(i11Iil1i => (35 - parseInt(i11Iil1i, 36)).toString(36)); + IliII11.push(...lli1li11); + } else { + if (ii1ii11I === "4.3") { + let IiIlI1il = lII11i1I.slice(0, 10), + l1Iill1I = lII11i1I.slice(10), + lIlll1II = IiIlI1il.reverse(); + IliII11 = lIlll1II.map(llIiII1I => (35 - parseInt(llIiII1I, 36)).toString(36)); + IliII11.push(...l1Iill1I); + } else { + if (ii1ii11I === "4.1" || ii1ii11I === "4.2") { + let l1iIl11l = lII11i1I.slice(0, 14), + li1iill = lII11i1I.slice(14), + IlllIlll = l1iIl11l.reverse(); + IliII11 = IlllIlll.map(ilIll1Il => (35 - parseInt(ilIll1Il, 36)).toString(36)); + IliII11.push(...li1iill); + } else IliII11 = lII11i1I.reverse().map(IIii11ll => 9 - parseInt(IIii11ll)); + } + } + let IiIIlIl1 = IliII11.join(""); + return IiIIlIl1; + } + #generateExpandParams(iii11ili, IIl1ii11, lli11li1) { + let i1IiiiIl = {}; + if (lli11li1 === "4.4") i1IiiiIl = { + "wc": 0, + "wd": 0, + "l": "zh-CN", + "ls": "zh-CN,zh,zh-TW,en-US,en", + "ml": 0, + "pl": 0, + "av": this.av, + "ua": this.ua, + "sua": this.sua, + "pp": { + "p1": this.pin, + "p2": this.pin + }, + "extend": { + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.9", + "bu2": 0, + "bu3": 16, + "bu4": 0, + "bu5": 0 + }, + "pp1": "", + "bu1": "", + "w": 390, + "h": 844, + "ow": 390, + "oh": 844, + "url": "", + "og": "", + "pr": 1.25, + "re": "h", + "random": this.random, + "referer": "", + "v": "h5_file_v4.4.0", + "ai": iii11ili, + "fp": IIl1ii11 + }; else { + if (lli11li1 === "4.3") { + i1IiiiIl = { + "wc": 0, + "wd": 0, + "l": "zh-CN", + "ls": "zh-CN,zh,zh-TW,en-US,en", + "ml": 0, + "pl": 0, + "av": this.av, + "ua": this.ua, + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "extend": { + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.7", + "bu2": 0, + "bu3": 35 + }, + "pp1": "", + "w": 400, + "h": 700, + "ow": 400, + "oh": 700, + "url": "", + "og": "", + "pr": 1.25, + "re": "", + "random": this.random, + "referer": "", + "v": "h5_file_v4.3.1", + "ai": iii11ili, + "fp": IIl1ii11 + }; + } else { + if (lli11li1 === "4.2") i1IiiiIl = { + "wc": 0, + "wd": 0, + "l": "zh-CN", + "ls": "zh-CN", + "ml": 0, + "pl": 0, + "av": this.av, + "ua": this.ua, + "sua": this.sua, + "pp": {}, + "extend": { + "pm": 0, + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.9" + }, + "pp1": "", + "pm": { + "ps": "prompt", + "np": "default" + }, + "w": 390, + "h": 844, + "ow": 390, + "oh": 844, + "url": "", + "og": "", + "pr": 1.25, + "re": "", + "random": this.random, + "referer": "", + "v": "h5_file_v4.2.0", + "ai": iii11ili, + "fp": IIl1ii11 + }; else lli11li1 === "4.1" ? i1IiiiIl = { + "wc": 0, + "wd": 0, + "l": "zh-CN", + "ls": "zh-CN,zh,zh-TW,en-US,en", + "ml": 0, + "pl": 0, + "av": this.av, + "ua": this.ua, + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "pp1": "", + "pm": { + "ps": "prompt", + "np": "default" + }, + "w": 360, + "h": 740, + "ow": 360, + "oh": 740, + "url": "", + "og": "", + "pr": 4, + "re": "", + "random": this.random, + "referer": "", + "v": "v0.1.6", + "ai": iii11ili, + "fp": IIl1ii11 + } : i1IiiiIl = { + "wc": 0, + "wd": 0, + "l": "zh-CN", + "ls": "zh-CN,zh,zh-TW,en-US,en", + "ml": 0, + "pl": 0, + "av": this.av, + "ua": this.ua, + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "pp1": "", + "pm": { + "ps": "prompt", + "np": "default" + }, + "w": 360, + "h": 740, + "ow": 360, + "oh": 740, + "url": "", + "og": "", + "pr": 4, + "re": "", + "ai": iii11ili, + "fp": IIl1ii11 + }; + } + } + return II11il11.AES.encrypt(JSON.stringify(i1IiiiIl, null, 2), II11il11.enc.Utf8.parse("wm0!@w-s#ll1flo("), { + "iv": II11il11.enc.Utf8.parse("0102030405060708"), + "mode": II11il11.mode.CBC, + "padding": II11il11.pad.Pkcs7 + }).ciphertext.toString(II11il11.enc.Hex); + } + async #getAlgo(II1iil1i, IIiiI11, ii1I1Iii, i1llIlIi, lliiIlii = 0) { + let Ii1llIII = "", + llll1ili = { + "version": i1llIlIi, + "fp": IIiiI11, + "fv": "v3.2.0", + "appId": II1iil1i, + "timestamp": Date.now(), + "platform": "web", + "expandParams": ii1I1Iii + }; + if (i1llIlIi === "4.4") llll1ili.fv = "h5_file_v4.4.0"; else { + if (i1llIlIi === "4.3") llll1ili.fv = "h5_file_v4.3.1"; else { + if (i1llIlIi === "4.2") llll1ili.fv = "h5_file_v4.2.0"; else i1llIlIi === "4.1" && (llll1ili.fv = "v1.6.1"); + } + } + try { + let IIll1l1 = await IliilIlI({ + "url": "https://cactus.jd.com/request_algo?g_ty=ajax", + "method": "post", + "data": llll1ili, + "headers": { + "User-Agent": this.ua + } + }); + if (IIll1l1.status == 200) { + let iIIllI1I = IIll1l1.data.data.result; + Ii1llIII = { + "tk": iIIllI1I.tk, + "fp": iIIllI1I.fp, + "rd": /(?<=rd=')[^']*/.exec(iIIllI1I.algo)[0], + "algo": /(?<=algo\.)[^(]*/.exec(iIIllI1I.algo)[0] + }; + } + return Ii1llIII; + } catch (i11lili) { + console.log("algo error"); + if (lliiIlii < 3) { + return this.#getAlgo(II1iil1i, IIiiI11, ii1I1Iii, i1llIlIi, lliiIlii + 1); + } + throw i11lili; + } + } + #test(li1ii1ll, I1i1l111, ll11lIiI, Iiii11l1, I1ilI1, iiilIilI, lIliIli) { + let l1lilill = lIliIli === "4.4" ? "88" : lIliIli === "4.3" ? "22" : lIliIli === "4.2" ? "74" : lIliIli === "4.1" ? "04" : "", + ili1i1li = "" + I1i1l111 + li1ii1ll + ll11lIiI + l1lilill + Iiii11l1 + I1ilI1; + return II11il11[iiilIilI](ili1i1li, I1i1l111).toString(II11il11.enc.Hex); + } + async ["encrypt"](Iil1li1, llIllilI, il1lllIi, lIiIi1l1, IIi1I1ii, l1iIIiI, l11lIiIl, ill1iIIl) { + if (!(Iil1li1 in this.cacheInfo)) { + let iiii11iI = this.#generateFp(ill1iIIl); + const iIilIl1 = this.#generateExpandParams(Iil1li1, iiii11iI, ill1iIIl); + let iIlI11I1 = 0, + iiIiIi1l; + while (iIlI11I1 < 3) { + iiIiIi1l = await this.#getAlgo(Iil1li1, iiii11iI, iIilIl1, ill1iIIl); + if (iiIiIi1l !== "") break; + iIlI11I1++; + } + this.cacheInfo[Iil1li1] = iiIiIi1l; + } + const { + tk: I11iII1, + rd: lii11lll, + fp: lI11I1i, + algo: lI1i1l + } = this.cacheInfo[Iil1li1], + ll111i11 = new Date(), + I1i1i1I1 = i1I1IlI1(ll111i11, "yyyyMMddHHmmssSSS"), + li1IIIli = this.#test(lI11I1i, I11iII1, I1i1i1I1, Iil1li1, lii11lll, lI1i1l, ill1iIIl), + iiiI11lI = typeof il1lllIi == "object" ? JSON.stringify(il1lllIi) : il1lllIi, + IlliI1i1 = II11il11.SHA256(iiiI11lI).toString(II11il11.enc.Hex); + let iIli1ii1 = "appid:" + lIiIi1l1 + "&body:" + IlliI1i1; + IIi1I1ii != null && (iIli1ii1 += "&client:" + IIi1I1ii); + l1iIIiI != null && (iIli1ii1 += "&clientVersion:" + l1iIIiI); + iIli1ii1 += "&functionId:" + llIllilI; + l11lIiIl != null && (iIli1ii1 += "&t:" + l11lIiIl); + let lIIIliI1, IiI1lI1i, IilIl1i1; + if (ill1iIIl === "4.4") IiI1lI1i = { + "sua": this.sua, + "pp": { + "p1": this.pin + }, + "extend": { + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.9", + "bu2": -1, + "bu3": 15, + "bu4": 0, + "bu5": 0 + }, + "random": this.random, + "v": "h5_file_v4.4.0", + "fp": lI11I1i, + "bu1": "0.1.9" + }, IilIl1i1 = "r1T.6Vinpb.k+/a)", lIIIliI1 = II11il11.MD5("" + li1IIIli + iIli1ii1 + li1IIIli).toString(II11il11.enc.Hex); else { + if (ill1iIIl === "4.3") lIIIliI1 = II11il11.HmacSHA256(iIli1ii1, li1IIIli).toString(II11il11.enc.Hex), IiI1lI1i = { + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "extend": { + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.7", + "bu2": 0, + "bu3": 33 + }, + "random": this.random, + "referer": "", + "v": "h5_file_v4.3.1", + "fp": lI11I1i + }, IilIl1i1 = "&d74&yWoV.EYbWbZ"; else { + if (ill1iIIl === "4.2") lIIIliI1 = II11il11.SHA256("" + li1IIIli + iIli1ii1 + li1IIIli).toString(II11il11.enc.Hex), IiI1lI1i = { + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "extend": { + "pm": 0, + "wd": 0, + "l": 0, + "ls": 0, + "wk": 0, + "bu1": "0.1.9" + }, + "random": this.random, + "referer": "", + "v": "h5_file_v4.2.0", + "fp": lI11I1i + }, IilIl1i1 = "DNiHi703B0&17hh1"; else ill1iIIl === "4.1" ? (lIIIliI1 = II11il11.MD5("" + li1IIIli + iIli1ii1 + li1IIIli).toString(II11il11.enc.Hex), IiI1lI1i = { + "sua": this.sua, + "pp": { + "p2": this.pin + }, + "random": this.random, + "referer": "", + "v": "v0.1.6", + "fp": lI11I1i + }, IilIl1i1 = "HL4|FW#Chc3#q?0)") : (lIIIliI1 = II11il11.HmacSHA256(iIli1ii1, li1IIIli).toString(II11il11.enc.Hex), IiI1lI1i = { + "sua": this.sua, + "pp": { + "p1": this.pin + }, + "fp": lI11I1i + }, IilIl1i1 = "wm0!@w_s#ll1flo("); + } + } + const li1i1lii = II11il11.AES.encrypt(JSON.stringify(IiI1lI1i, null, 2), II11il11.enc.Utf8.parse(IilIl1i1), { + "iv": II11il11.enc.Utf8.parse("0102030405060708"), + "mode": II11il11.mode.CBC, + "padding": II11il11.pad.Pkcs7 + }).ciphertext.toString(II11il11.enc.Hex), + l1iiiIIl = I1i1i1I1 + ";" + lI11I1i + ";" + Iil1li1 + ";" + I11iII1 + ";" + lIIIliI1 + ";" + ill1iIIl + ";" + ll111i11.getTime() + ";" + li1i1lii; + let II11iIl1 = { + "functionId": llIllilI, + "body": iiiI11lI, + "appid": lIiIi1l1, + "client": IIi1I1ii, + "clientVersion": l1iIIiI, + "h5st": l1iiiIIl, + "t": l11lIiIl + }; + return l11lIiIl == null && delete II11iIl1.t, IIi1I1ii == null && delete II11iIl1.client, l1iIIiI == null && delete II11iIl1.clientVersion, II11iIl1; + } +} +class i1l1iil { + constructor() { } + static #get_uuid(I1Iii1iI = 40) { + if (I1Iii1iI === 0) return "0"; else { + const llll1il = this.#get_uuid(I1Iii1iI - 1).replace(/^0+/, ""), + iiiiIII = "0123456789abcdef"; + return llll1il + iiiiIII[Math.floor(Math.random() * (iiiiIII.length - 6))]; + } + } + static #_md5(i1lI1i) { + const llIllIll = II11il11.MD5(i1lI1i); + return llIllIll.toString(II11il11.enc.Hex); + } + static #sub_v2(iliIl1) { + const iI1l1llI = [55, 146, 68, 104, 165, 61, 204, 127, 187, 15, 217, 136, 238, 154, 233, 90], + i111llI1 = Buffer.from("80306f4370b39fd5630ad0529f77adb6", "utf-8"); + let iIIlilIi = new Array(i111llI1.length).fill(0); + for (let II1Il11 in iliIl1) { + let l1I11I1 = Number(iliIl1[II1Il11]), + ilIIII1I = iI1l1llI[II1Il11 & 15], + lilil1l = Number(i111llI1[II1Il11 & 7]); + l1I11I1 = ilIIII1I ^ l1I11I1; + l1I11I1 = l1I11I1 ^ lilil1l; + l1I11I1 = l1I11I1 + ilIIII1I; + ilIIII1I = ilIIII1I ^ l1I11I1; + let ii11l1li = Number(i111llI1[II1Il11 & 7]); + ilIIII1I = ilIIII1I ^ ii11l1li; + iIIlilIi[II1Il11] = ilIIII1I & 255; + } + return iIIlilIi; + } + static #getSign(il111i11, l1IIlI, lii1l11I, l11Il1l1, lIiiIII) { + let llli1Ii = Date.now().toString(), + lll1IIIl = [[0, 2], [1, 1], [2, 0]], + ii11il1l = lll1IIIl[Math.floor(Math.random() * lll1IIIl.length)], + l1lllIi1 = "1" + ii11il1l[0] + ii11il1l[1], + l11Iii1l = "functionId=" + il111i11 + "&body=" + l1IIlI + "&openudid=" + lii1l11I + "&client=" + l11Il1l1 + "&clientVersion=" + lIiiIII + "&st=" + llli1Ii + "&sv=" + l1lllIi1, + IIl11Ill = this.#sub_v2(Buffer.from(l11Iii1l, "utf-8")), + I1li1IIl = this.#_md5(Buffer.from(IIl11Ill).toString("base64")); + return [llli1Ii, l1lllIi1, I1li1IIl]; + } + static ["getSignData"](iiI1I11i, iI1lll11, l1li1II1) { + iI1lll11 = JSON.stringify(iI1lll11); + const { + screen: ilil1lII, + tf: i1iiii1I, + iv: iIiiI1iI, + clientVersion: IIIiI1II, + build: iIi1ll1i, + uuid: Ii1Ii1II + } = l1li1II1; + let lI1Il1ll = "apple", + llliliii = this.#getSign(iiI1I11i, iI1lll11, Ii1Ii1II, lI1Il1ll, IIIiI1II), + lillilil = llliliii[0], + IliIIi1I = llliliii[1], + iIi1I1Ii = llliliii[2]; + const lI1ll11i = { + "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", + "ts": Math.floor(Date.now() / 1000), + "ridx": -1, + "cipher": { + "screen": this.#base64Encode(ilil1lII), + "uuid": this.#base64Encode(Ii1Ii1II), + "osVersion": this.#base64Encode(iIiiI1iI), + "openudid": this.#base64Encode(Ii1Ii1II), + "area": this.#base64Encode(this.#generateRandomString(2, "123456789") + "_" + this.#generateRandomString(4, "123456789") + "_" + this.#generateRandomString(4, "123456789") + "_" + this.#generateRandomString(4, "123456789")) + }, + "ciphertype": 5, + "version": "1.0.3", + "appname": "com.360buy.jdmobile" + }, + lIi1lIi = "eidAd71c8121f9s8+" + this.#generateRandomString(20) + "fqJmY9A07YRSnQkMEOU2Z7Jq3GnZeeGG0FqhUU0MoA1PiifL5yWcPJxtp1Cb/b/GsK0GqxuDyDfYZx6"; + return { + "functionId": iiI1I11i, + "body": iI1lll11, + "build": iIi1ll1i, + "client": lI1Il1ll, + "clientVersion": IIIiI1II, + "d_brand": "apple", + "d_model": "iPhone" + i1iiii1I, + "st": lillilil, + "sv": IliIIi1I, + "sign": iIi1I1Ii, + "ef": 1, + "ep": JSON.stringify(lI1ll11i), + "eid": lIi1lIi, + "joycious": 73, + "partner": "apple", + "lang": "zh_CN", + "networkType": "wifi", + "networklibtype": "JDNetworkBaseAF", + "ext": JSON.stringify({ + "prstate": "0", + "pvcStu": "1" + }), + "uemps": "0-0-2" + }; + } + static #generateRandomString(l1iII1ll, lIliIili = null) { + const il11I1Il = lIliIili == null ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" : lIliIili; + let I1ii1ilI = ""; + for (let llliiIll = 0; llliiIll < l1iII1ll; llliiIll++) { + const IIiilIil = Math.floor(Math.random() * il11I1Il.length); + I1ii1ilI += il11I1Il.charAt(IIiilIil); + } + return I1ii1ilI; + } + static #base64Encode(i11Ii1Il) { + const i1i111I = "KLMNOPQRSTABCDEFGHIJUVWXYZabcdopqrstuvwxefghijklmnyz0123456789+/", + li1I1lIl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + lliliiIi = iiliilll.encode(i11Ii1Il), + liilIII = lliliiIi.split("").map(II1llI1l => { + const i1I1lIll = i1i111I.indexOf(II1llI1l); + return i1I1lIll !== -1 ? li1I1lIl[i1I1lIll] : II1llI1l; + }).join(""); + return liilIII; + } +} +class I11I1l1I { + constructor(lIIlIlII) { + const lllii1ii = { + ...lIIlIlII, + "retryStrategy"(iIli111I) { + return null; + }, + "maxRetriesPerRequest": 1 + }; + this.redis = new I1lli11i(lllii1ii); + this.expiryCache = new Set(); + this.redis.on("error", il111ilI => { + iIl1IlI1.redisConnect = 2; + }); + this.connected = new Promise((Illl1, iIii1i1I) => { + this.redis.on("ready", Illl1); + this.redis.on("error", Illl1); + }); + } + async ["set"](Il11I11i, iilillil, i11ilIIi) { + if (i11ilIIi) { + await this.redis.set(Il11I11i, iilillil, "EX", i11ilIIi); + } else { + await this.redis.set(Il11I11i, iilillil); + } + } + async ["get"](liIliiIi) { + return await this.redis.get(liIliiIi); + } + async ["del"](ilIi1llI) { + return await this.redis.del(ilIi1llI); + } + async ["exists"](lII1Ii1) { + return await this.redis.exists(lII1Ii1); + } + async ["incr"](lllili1) { + return await this.redis.incr(lllili1); + } + async ["decr"](lI11l1il) { + return await this.redis.decr(lI11l1il); + } + async ["expire"](iilIIlI1, l1i1liii) { + return await this.redis.expire(iilIIlI1, l1i1liii); + } + async ["ttl"](IIIIi1lI) { + return await this.redis.ttl(IIIIi1lI); + } + async ["hset"](iiIIIIIi, iIlli111, iIIiil1l) { + return await this.redis.hset(iiIIIIIi, iIlli111, iIIiil1l); + } + async ["hget"](lll1IlII, lilll1li) { + return await this.redis.hget(lll1IlII, lilll1li); + } + async ["hdel"](il1i1lli, lI1liIiI) { + return await this.redis.hdel(il1i1lli, lI1liIiI); + } + async ["hgetall"](i11illii) { + return await this.redis.hgetall(i11illii); + } + async ["rpush"](I11IIliI, iIlI1II1) { + return await this.redis.rpush(I11IIliI, iIlI1II1); + } + async ["lpush"](I11iIlIi, l1lIi11) { + return await this.redis.lpush(I11iIlIi, l1lIi11); + } + async ["lpop"](i1II) { + return await this.redis.lpop(i1II); + } + async ["rpop"](I1lIi1ll) { + return await this.redis.rpop(I1lIi1ll); + } + async ["lrange"](I1I1l1I1, Ill1iili, IIi1) { + return await this.redis.lrange(I1I1l1I1, Ill1iili, IIi1); + } + async ["llen"](i1li1iiI) { + return await this.redis.llen(i1li1iiI); + } + async ["quit"]() { + return await this.redis.quit(); + } + async ["sadd"](iii1l1ii, il11i11l, liI1iii1) { + const iIiIlIi1 = await this.redis.sadd(iii1l1ii, il11i11l); + return liI1iii1 && !this.expiryCache.has(iii1l1ii) && (await this.redis.expire(iii1l1ii, liI1iii1), this.expiryCache.add(iii1l1ii)), iIiIlIi1; + } + async ["sismember"](iIlIiIII, l11Il1Ii) { + return await this.redis.sismember(iIlIiIII, l11Il1Ii); + } +} +class IlIIlIli { + static ["activity"] = {}; + static ["msg"] = []; + static ["proxyIp"] = null; + static ["proxyIpTime"] = null; + static ["addressList"] = []; + static ["isSaveAddress"] = false; + static ["redis"] = null; + constructor(II1IlI1I, iliIIIi1) { + Object.assign(this, Iii1iI1i.activity); + this.cookie = iliIIIi1; + this.savedCookies = {}; + this.ticket = ""; + this.index = II1IlI1I; + this.pin = this.userPin(iliIIIi1); + this.remarks = ""; + this.tg_id = ""; + this.address = null; + this.phoneInfo = Iiii1li1.generatePhoneInfo(); + this.ua = this.userAgent(); + this.headers = { + "Cookie": iliIIIi1, + "User-Agent": this.ua.app + }; + this.retryCount = iIl1IlI1.retryCount; + this.proxyRetryCount = iIl1IlI1.proxyRetryCount; + this.proxyIp = ""; + this.proxyIpTime = null; + this.lzkjOpenCard = false; + this.addressInit(); + this.defenseUrls = []; + this.sendMsg = []; + this.prizeList = []; + this.canNotOpenCard = false; + this.needHelp = true; + this.canHelp = true; + this.isUse = false; + this.isInviter = false; + this.onlyInvite = false; + this.openCardTypes = iIl1IlI1.openCardTypes; + this.otherHeaders = {}; + this.h5st = new l11i111(this.headers["User-Agent"], this.pin); + } + ["reseInviteStatus"]() { + this.isUse = false; + this.canHelp = true; + } + ["reseCookieStatus"]() { + this.canHelp = false; + this.needHelp = false; + this.isUse = true; + } + ["reseInveterStatus"]() { + this.isInviter = false; + } + ["getActivityId"](l1iII11 = this.activityUrl) { + const liIi1Il1 = new URLSearchParams(new URL(l1iII11).search), + IIIll1li = ["activityId", "giftId", "actId", "token", "code", "a", "id"]; + let i1Iillil = ""; + for (let I1iIlIIi of IIIll1li) { + i1Iillil = liIi1Il1.get(I1iIlIIi); + if (i1Iillil) break; + } + return !i1Iillil && (i1Iillil = this.match(/\/(dz[a-zA-Z0-9]{28,32})/, l1iII11)), this.activityId = i1Iillil, this.activityId; + } + ["log"](...I1Il1lI) { + iIl1IlI1.logger.info("main |" + ("" + (this.index + 1)).padEnd(Iii1iI1i.paddedStringEndCount, " ") + "|" + (this.remarks || this.pin) + "|", ...I1Il1lI); + } + ["debug"](...lI1illiI) { + iIl1IlI1.logger.debug("main |" + ("" + (this.index + 1)).padEnd(Iii1iI1i.paddedStringEndCount, " ") + "|" + (this.remarks || this.pin) + "|", ...lI1illiI); + } + ["error"](...I11I1) { + iIl1IlI1.logger.error("main |" + ("" + (this.index + 1)).padEnd(Iii1iI1i.paddedStringEndCount, " ") + "|" + (this.remarks || this.pin) + "|", ...I11I1); + } + ["warn"](...l1i11II1) { + iIl1IlI1.logger.warn("main |" + ("" + (this.index + 1)).padEnd(Iii1iI1i.paddedStringEndCount, " ") + "|" + (this.remarks || this.pin) + "|", ...l1i11II1); + } + ["putMsg"](iIIi1l1l, il1IlIl1 = false) { + if (!iIIi1l1l) return; + iIIi1l1l += ""; + this.log(iIIi1l1l); + let illi1iii = [ + [" ", ""], + ["豆", "豆💰"], + ["红包", "红包🧧"], + ["E卡", "E卡💎"], + ["优惠券", "券"], + ["东券", "券"], + ["店铺", ""], + ["恭喜", ""], + ["获得", ""], + ["空气", ""], + ["已领取", ""], + ["没有抽奖次数", ""], + ["已达到单日最大抽奖次数", ""], + ["无抽奖次数", ""], + ["当天只能签到一次", ""], + ["活动太火爆,还是去买买买吧", ""], + ["登录失败", ""], + ["黑名单", ""], + ["签满7天后不能再参加了", ""], + ["您的积分不足!", ""], + ["积分不足", ""], + ["已达到活动期间最大抽奖次数", ""], + ["已超过最大抽奖次数,不允许再进行抽奖!", ""], + ]; + for (let lIi1lilI of illi1iii) { + iIIi1l1l = iIIi1l1l.replace(lIi1lilI[0], lIi1lilI[1]); + } + if (!iIIi1l1l) return; + this.sendMsg.push(iIIi1l1l); + } + ["union"](iIliiiil, iIlll11I) { + return iIliiiil.concat(iIlll11I.filter(I1iIlIll => !iIliiiil.includes(I1iIlIll))); + } + ["intersection"](l1II1i11, ll1I1i1I) { + return l1II1i11.filter(ii1l1ii => ll1I1i1I.includes(ii1l1ii)); + } + ["different"](iIi1iII, iIi1li1l) { + return iIi1iII.concat(iIi1li1l).filter(Illl1ili => iIi1iII.includes(Illl1ili) && !iIi1li1l.includes(Illl1ili)); + } + ["unique"](iIiIl1i) { + return Array.from(new Set(iIiIl1i)); + } + ["formatDate"](i11ilI11, IIlIlli) { + return i1I1IlI1(typeof i11ilI11 === "object" ? i11ilI11 : new Date(typeof i11ilI11 === "string" ? i11ilI11 * 1 : i11ilI11), IIlIlli || "yyyy-MM-dd"); + } + ["dateStringToTimestamp"](I1lliIlI, i1il1111) { + const lIiiillI = parse(I1lliIlI, i1il1111 || "yyyy-MM-dd HH:mm", new Date()), + i11Iil11 = lIiiillI.getTime(); + return i11Iil11; + } + ["match"](II1lIlIi, lI1ilIIl) { + II1lIlIi = II1lIlIi instanceof Array ? II1lIlIi : [II1lIlIi]; + for (let I1iiiIi1 of II1lIlIi) { + const I1li1lli = I1iiiIi1.exec(lI1ilIIl); + if (I1li1lli) { + const l1iIiIIl = I1li1lli.length; + if (l1iIiIIl === 1) return I1li1lli; else { + if (l1iIiIIl === 2) { + return I1li1lli[1]; + } else { + const iI11iIIi = []; + for (let Iill1il1 = 1; Iill1il1 < l1iIiIIl; Iill1il1++) { + iI11iIIi.push(I1li1lli[Iill1il1]); + } + return iI11iIIi; + } + } + } + } + return ""; + } + ["matchAll"](ili11IIi, Illi111l) { + ili11IIi = ili11IIi instanceof Array ? ili11IIi : [ili11IIi]; + let iiI11III, + l1IiIii1 = []; + for (let IiIlli1I of ili11IIi) { + while ((iiI11III = IiIlli1I.exec(Illi111l)) != null) { + let iiIiIl1i = iiI11III.length; + if (iiIiIl1i === 1) l1IiIii1.push(iiI11III); else { + if (iiIiIl1i === 2) l1IiIii1.push(iiI11III[1]); else { + let iliIiIil = []; + for (let IiIlllI1 = 1; IiIlllI1 < iiIiIl1i; IiIlllI1++) { + iliIiIil.push(iiI11III[IiIlllI1]); + } + l1IiIii1.push(iliIiIil); + } + } + } + } + return l1IiIii1; + } + ["haskey"](l1lI11ii, Il1IIlil) { + const IlliI1l1 = Il1IIlil.split("."); + let l1II111l = l1lI11ii; + for (const i111lIi1 of IlliI1l1) { + if (l1II111l && l1II111l.hasOwnProperty(i111lIi1)) l1II111l = l1II111l[i111lIi1]; else return undefined; + } + return l1II111l; + } + ["parseJSON"](lliiiIi) { + try { + const IiiIlili = JSON.parse(lliiiIi); + return IiiIlili; + } catch (l1iiliil) { + return false; + } + } + ["json2Str"](iIIl11i) { + try { + return JSON.stringify(iIIl11i); + } catch (ilI1I1l) { + return ""; + } + } + ["str2Json"](i11I1Iil) { + try { + return JSON.parse(i11I1Iil); + } catch (iIiiliii) { + return i11I1Iil; + } + } + ["textToHtml"](IIIlIiI1) { + return lIl1ii.load(IIIlIiI1); + } + ["encodeChineseParamsInUrl"](li1ilIlI) { + const Il1lI11l = lIIII11l.parse(li1ilIlI, true); + let ll1liii1 = Il1lI11l.query || {}; + if (typeof ll1liii1 !== "object" || Array.isArray(ll1liii1)) { + ll1liii1 = {}; + } + const i1ilIII = {}; + Object.keys(ll1liii1).forEach(lIlli111 => { + const Illli = ll1liii1[lIlli111]; + if (typeof Illli === "string" && /[\u4e00-\u9fa5]/.test(Illli)) i1ilIII[lIlli111] = encodeURIComponent(Illli); else { + i1ilIII[lIlli111] = Illli; + } + }); + const il1IIl11 = Object.keys(i1ilIII).map(lii11lIi => encodeURIComponent(lii11lIi) + "=" + i1ilIII[lii11lIi]).join("&"); + let I1ll11I = Il1lI11l.protocol + "//" + Il1lI11l.host + Il1lI11l.pathname; + if (il1IIl11) { + I1ll11I += "?" + il1IIl11; + } + return I1ll11I; + } + ["encodeChineseParams"](lIIl11i) { + const II111iIi = new URL(lIIl11i), + II1i111i = new URLSearchParams(II111iIi.search); + for (const [il11I1l, i1lI1] of II1i111i) { + /[\u4e00-\u9fa5]/.test(i1lI1) && II1i111i.set(il11I1l, encodeURIComponent(i1lI1)); + } + return II111iIi.search = II1i111i.toString(), II111iIi.toString(); + } + ["sleep"](iIiIlll1, i1i1IIli) { + let I11IlIll = iIiIlll1; + if (i1i1IIli !== undefined) { + I11IlIll = Math.floor(Math.random() * (i1i1IIli - iIiIlll1 + 1)) + iIiIlll1; + } + return new Promise(IIliIIil => setTimeout(IIliIIil, I11IlIll)); + } + ["wait"](llli111l, liIIi1l) { + if (llli111l < 0) { + return; + } + if (liIIi1l) { + return new Promise(Ii1iIil => setTimeout(Ii1iIil, this.random(llli111l, liIIi1l))); + } else { + return new Promise(lI1I111I => setTimeout(lI1I111I, llli111l)); + } + } + ["stop"]() { + this.immediatelyExit(); + throw new i1I1IiII(); + } + async ["immediatelyExit"]() { + if (iIl1IlI1.immediatelyExit === 1) { + while (IlIIlIli.isSaveAddress) { + await this.sleep(1000); + } + process.exit(0); + } + } + ["exit"]() { + throw new iiiIIIll(); + } + ["random"](I1l1lIli, iliI11ii) { + return Math.min(Math.floor(I1l1lIli + Math.random() * (iliI11ii - I1l1lIli)), iliI11ii); + } + ["randomNum"](l1l1l1II) { + l1l1l1II = l1l1l1II || 32; + let lI1Ii1li = "0123456789", + IiIlI = lI1Ii1li.length, + IIII1Il = ""; + for (let iII1lll = 0; iII1lll < l1l1l1II; iII1lll++) { + IIII1Il += lI1Ii1li.charAt(Math.floor(Math.random() * IiIlI)); + } + return IIII1Il; + } + ["randomArray"](IIiIilli, llIiiI) { + llIiiI = llIiiI || IIiIilli.length; + let IIlll1ii = IIiIilli.slice(0), + lllilI1l = IIiIilli.length, + il1iIl1I = lllilI1l - llIiiI, + I1111I1i, + l1lillIi; + while (lllilI1l-- > il1iIl1I) { + l1lillIi = Math.floor((lllilI1l + 1) * Math.random()); + I1111I1i = IIlll1ii[l1lillIi]; + IIlll1ii[l1lillIi] = IIlll1ii[lllilI1l]; + IIlll1ii[lllilI1l] = I1111I1i; + } + return IIlll1ii.slice(il1iIl1I); + } + ["timestamp"]() { + return Date.now(); + } + ["getMilliSecondsUntilTomorrow"]() { + let li1IilII = new Date(), + IlillII = new Date(); + IlillII.setHours(24, 0, 0, 0); + let I1llI11 = IlillII - li1IilII; + return I1llI11; + } + ["getQueryString"](IiI11Ili, IIllIll1) { + let lllIlll1 = new RegExp("(^|[&?])" + IIllIll1 + "=([^&]*)(&|$)"), + ii1I1i1I = IiI11Ili.match(lllIlll1); + if (ii1I1i1I != null) return unescape(ii1I1i1I[2]); + return ""; + } + ["ensureDirectoryExistence"](I1i1l1lI) { + !l1I11II1.existsSync(I1i1l1lI) && (this.ensureDirectoryExistence(ilI1il.dirname(I1i1l1lI)), l1I11II1.mkdirSync(I1i1l1lI)); + } + ["readFileSync"](i111l1Il) { + try { + return l1I11II1.readFileSync(i111l1Il, "utf-8").toString(); + } catch (lliiliI) { + return ""; + } + } + ["writeFileSync"](IiiIiil1, Ii1I1li, IlIiiIl1) { + const ll1iIi1I = ilI1il.join(__dirname, IiiIiil1); + this.ensureDirectoryExistence(ll1iIi1I); + const lI1il111 = ilI1il.join(ll1iIi1I, Ii1I1li); + try { + l1I11II1.writeFileSync(lI1il111, IlIiiIl1, "utf-8"); + } catch (l1l1il1l) { + this.log("写入文件时出错:", l1l1il1l); + } + } + async ["writeFileSyncByLock"](IiIi1liI, iiliIl1l, ii1iil11) { + const llilIl = ilI1il.join(__dirname, IiIi1liI), + l1iiiI1I = ilI1il.join(llilIl, iiliIl1l); + try { + await writeFileAsync(l1iiiI1I, ii1iil11); + } catch (II1IIiII) { + this.log("写入文件时出错:", II1IIiII); + } + } + ["readYamlSync"](iii1iI1l) { + try { + return llillIi1.parse(this.readFileSync(iii1iI1l)) ?? {}; + } catch (liliIliI) { + return {}; + } + } + ["writeYamlSync"](IIii1, Ii1li1lI, ll1lli1l) { + try { + this.writeFileSync(IIii1, Ii1li1lI, llillIi1.stringify(ll1lli1l)); + } catch (IIiiIiii) { + this.log("写入文件时出错:", IIiiIiii); + } + } + ["appendFileSync"](l1li1l, iiliIlII, II1l111) { + const lI1IIi1l = ilI1il.join(__dirname, l1li1l); + this.ensureDirectoryExistence(lI1IIi1l); + const IIlI1Ii1 = ilI1il.join(lI1IIi1l, iiliIlII); + try { + l1I11II1.appendFileSync(IIlI1Ii1, II1l111, "utf-8"); + } catch (ililIIl1) { + this.log("写入文件时出错:", ililIIl1); + } + } + async ["writeLongCache"](IIl1llii = this.activityId, iiiI1lli = this.pin, ll1i1ll = "list") { + try { + if (IlIIlIli.redis) { + ll1i1ll.toLowerCase() === "list" ? await IlIIlIli.redis.sadd(IIl1llii, iiiI1lli) : await IlIIlIli.redis.set(IIl1llii, iiiI1lli); + return; + } + this.appendFileSync("cache/" + Iii1iI1i.envInfo.runName, "" + IIl1llii, iiiI1lli + "\n"); + } catch (II1lI1I) { + if (II1lI1I instanceof iiiIIIll || II1lI1I instanceof i1I1IiII) throw II1lI1I; + this.log("writeLongCache:", II1lI1I.message); + } + } + async ["writeDayCache"](i1Iii111 = this.activityId, Ii1IIilI = this.pin) { + try { + if (IlIIlIli.redis) { + await IlIIlIli.redis.sadd(i1Iii111, Ii1IIilI, Math.floor(this.getMilliSecondsUntilTomorrow() / 1000) - 5); + return; + } + this.appendFileSync("cache/" + Iii1iI1i.envInfo.runName, i1Iii111 + "_" + this.formatDate(this.timestamp()), Ii1IIilI + "\n"); + } catch (IiiiII) { + if (IiiiII instanceof iiiIIIll || IiiiII instanceof i1I1IiII) throw IiiiII; + this.log("writeDayCache:", IiiiII.message); + } + } + async ["readDayCache"](l11IlIl1 = this.activityId) { + try { + if (IlIIlIli.redis) { + return await IlIIlIli.redis.get(l11IlIl1); + } + if (IlIIlIli.activity["dayCache_" + l11IlIl1 + "_" + this.formatDate(this.timestamp())]) return IlIIlIli?.["activity"]?.["dayCache_" + l11IlIl1 + "_" + this.formatDate(this.timestamp())]; + let IiIiI11I = this.readFileSync("cache/" + Iii1iI1i.envInfo.runName + "/" + l11IlIl1 + "_" + this.formatDate(this.timestamp())).split("\n").filter(lIIi1i1 => lIIi1i1 && lIIi1i1.trim()); + return IlIIlIli.activity["dayCache_" + l11IlIl1 + "_" + this.formatDate(this.timestamp())] = IiIiI11I, IlIIlIli?.["activity"]?.["dayCache_" + l11IlIl1 + "_" + this.formatDate(this.timestamp())]; + } catch (i1l11Iii) { + if (i1l11Iii instanceof iiiIIIll || i1l11Iii instanceof i1I1IiII) throw i1l11Iii; + this.log("readLongCache:", i1l11Iii.message); + } + } + async ["readLongCache"](liiIil = this.activityId) { + try { + if (IlIIlIli.redis) return await IlIIlIli.redis.get(liiIil); + if (IlIIlIli.activity["longCache_" + liiIil]) return IlIIlIli?.["activity"]?.["longCache_" + liiIil]; + let IiIiliI1 = this.readFileSync("cache/" + Iii1iI1i.envInfo.runName + "/" + liiIil).split("\n").filter(iIlIlIi => iIlIlIi && iIlIlIi.trim()); + return IlIIlIli.activity["longCache_" + liiIil] = IiIiliI1, IlIIlIli?.["activity"]?.["longCache_" + liiIil]; + } catch (IiIlliI1) { + if (IiIlliI1 instanceof iiiIIIll || IiIlliI1 instanceof i1I1IiII) throw IiIlliI1; + this.log("readLongCache:", IiIlliI1.message); + } + } + async ["hitCache"](i11i1ili = this.activityId, Iilil1ii = this.pin, liIilili = "hit cache", l1l1iI1i = false) { + try { + if (IlIIlIli.redis) { + if (await IlIIlIli.redis.sismember(i11i1ili, Iilil1ii)) return l1l1iI1i ? this.log(liIilili) : this.putMsg(liIilili), this.exit(); + return; + } + if (IlIIlIli.activity["longCache_" + i11i1ili]) { + if (IlIIlIli?.["activity"]?.["longCache_" + i11i1ili]?.["includes"](Iilil1ii)) return l1l1iI1i ? this.log(liIilili) : this.putMsg(liIilili), this.exit(); + return; + } + let IlliIi1 = this.readFileSync("cache/" + Iii1iI1i.envInfo.runName + "/" + i11i1ili).split("\n").filter(iiIIil1I => iiIIil1I && iiIIil1I.trim()); + IlIIlIli.activity["longCache_" + i11i1ili] = IlliIi1; + if (IlIIlIli?.["activity"]?.["longCache_" + i11i1ili]?.["includes"](Iilil1ii)) return l1l1iI1i ? this.log(liIilili) : this.putMsg(liIilili), this.exit(); + } catch (iiliiiI1) { + if (iiliiiI1 instanceof iiiIIIll || iiliiiI1 instanceof i1I1IiII) throw iiliiiI1; + this.log("hitCache:", iiliiiI1.message); + } + } + async ["hitDayCache"](iiI111i = this.activityId, lIIl1l1l = this.pin, i11IIIlI = "hit cache", I1IIIlil = false, I1IIIi11 = true) { + try { + if (IlIIlIli.redis) { + if (await IlIIlIli.redis.sismember(iiI111i, lIIl1l1l)) return I1IIIlil ? this.log(i11IIIlI) : this.putMsg(i11IIIlI), I1IIIi11 && this.exit(), true; + return false; + } + if (IlIIlIli.activity["dayCache_" + iiI111i + "_" + this.formatDate(this.timestamp())]) { + if (IlIIlIli?.["activity"]?.["dayCache_" + iiI111i + "_" + this.formatDate(this.timestamp())]?.["includes"](lIIl1l1l)) return I1IIIlil ? this.log(i11IIIlI) : this.putMsg(i11IIIlI), I1IIIi11 && this.exit(), true; + return false; + } + let Il1i1111 = this.readFileSync("cache/" + Iii1iI1i.envInfo.runName + "/" + iiI111i + "_" + this.formatDate(this.timestamp())).split("\n").filter(liiIIill => liiIIill && liiIIill.trim()); + IlIIlIli.activity["dayCache_" + iiI111i + "_" + this.formatDate(this.timestamp())] = Il1i1111; + if (IlIIlIli?.["activity"]?.["dayCache_" + iiI111i + "_" + this.formatDate(this.timestamp())]?.["includes"](lIIl1l1l)) { + return I1IIIlil ? this.log(i11IIIlI) : this.putMsg(i11IIIlI), I1IIIi11 && this.exit(), true; + } + return false; + } catch (iIl1Ii1I) { + if (iIl1Ii1I instanceof iiiIIIll || iIl1Ii1I instanceof i1I1IiII) throw iIl1Ii1I; + this.log("hitCache:", iIl1Ii1I.message); + } + } + async ["writeLongCacheByStop"]() { + try { + if (IlIIlIli.redis) return this.activityId && (await IlIIlIli.redis.sadd("activity_stop", this.activityId)); + this.appendFileSync("cache/stop", "id", this.activityId + "\n"); + } catch (l111Iili) { + if (l111Iili instanceof iiiIIIll || l111Iili instanceof i1I1IiII) throw l111Iili; + this.log("writeLongCacheByStop:", l111Iili.message); + } + } + ["readLongCacheByStop"]() { + let lIli11i = this.readFileSync("cache/stop/id").split("\n").filter(ilIii1lI => ilIii1lI && ilIii1lI.trim()); + IlIIlIli.activity.stopIds = lIli11i; + } + ["md5"](lliIIii1) { + const ilIiI1l1 = II11il11.MD5(lliIIii1); + return ilIiI1l1.toString(II11il11.enc.Hex); + } + ["hmacSHA256"](i1l111i, l1Ii1i11) { + const llI1li1 = II11il11.HmacSHA256(l1Ii1i11, i1l111i); + return llI1li1.toString(II11il11.enc.Hex); + } + ["hmacMD5"](II1lii1l, lIlIiIIi) { + const I11IliIi = II11il11.HmacMD5(lIlIiIIi, II1lii1l); + return I11IliIi.toString(II11il11.enc.Hex); + } + ["rsaEncrypt"](I111lilI, llI1lIlI, lI11I1l1) { + I111lilI = "-----BEGIN PUBLIC KEY-----\n" + I111lilI + "\n-----END PUBLIC KEY-----"; + const I11ili = new i111lii1(I111lilI); + I11ili.setOptions(llI1lIlI); + const ii11I1I = I11ili.encrypt(lI11I1l1, "base64"); + return ii11I1I; + } + ["encryptCrypto"](liIIIi, lIiIl1lI, i1lIliI1, iiiillli, llI1iI1, i111liII, l111i1i1 = false) { + return II11il11[liIIIi].encrypt(II11il11.enc.Utf8.parse(llI1iI1), II11il11.enc.Utf8.parse(i111liII), { + "mode": II11il11.mode[lIiIl1lI], + "padding": II11il11.pad[i1lIliI1], + "iv": II11il11.enc.Utf8.parse(iiiillli) + }).ciphertext.toString(l111i1i1 ? II11il11.enc.Hex : II11il11.enc.Base64); + } + ["decryptCrypto"](iIl1lI1l, iI1ilil, IiliIl1l, Il111Ii1, IliiIiil, llllll1i, iIi1lilI = false) { + const lll1iIl = II11il11[iIl1lI1l].decrypt({ + "ciphertext": iIi1lilI ? II11il11.enc.Hex.parse(IliiIiil) : II11il11.enc.Base64.parse(IliiIiil) + }, II11il11.enc.Utf8.parse(llllll1i), { + "iv": II11il11.enc.Utf8.parse(Il111Ii1), + "mode": II11il11.mode[iI1ilil], + "padding": II11il11.pad[IiliIl1l] + }).toString(II11il11.enc.Utf8); + return lll1iIl; + } + #base64Encode(iIi1II) { + const l1Iii1i1 = "KLMNOPQRSTABCDEFGHIJUVWXYZabcdopqrstuvwxefghijklmnyz0123456789+/", + lliliII = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + Ilili1Il = II11il11.enc.Utf8.parse(iIi1II), + III1IIl1 = II11il11.enc.Base64.stringify(Ilili1Il), + IIiiii1i = III1IIl1.split("").map(llllli1l => { + const illi1llI = l1Iii1i1.indexOf(llllli1l); + return illi1llI !== -1 ? lliliII[illi1llI] : llllli1l; + }).join(""); + return IIiiii1i; + } + ["generateStringArray"](lIl1ilIi, lllIIIIl) { + const Ii11ll1l = Array(lIl1ilIi).fill(lllIIIIl), + IIl1l1ii = Ii11ll1l.join(""); + return IIl1l1ii; + } + ["uuid"](Illl = 40) { + return i1l1ilIl(this.generateStringArray(Illl, "x")); + } + ["userAgent"]() { + const { + screen: iillli1I, + tf: iii1I1i, + iv: Ili1i1l1, + clientVersion: lIi1lil, + build: lillIIIi, + uuid: IiIi1i1i + } = this.phoneInfo, + lIIil1l = { + "ciphertype": 5, + "cipher": { + "ud": this.#base64Encode(IiIi1i1i), + "sv": this.#base64Encode(iii1I1i), + "iad": "" + }, + "ts": Date.now(), + "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", + "version": "1.0.3", + "appname": "com.360buy.jdmobile", + "ridx": -1 + }; + return { + "jd4": "JD4iPhone/" + lillIIIi + "%20(iPhone;%20iOS;%20Scale/3.00);jdmall;iphone;version/" + lIi1lil + ";build/" + lillIIIi + ";network/wifi;screen/" + iillli1I.replace("*", "x") + ";os/" + Ili1i1l1, + "app": "jdapp;iPhone;" + lIi1lil + ";;;M/5.0;appBuild/" + lillIIIi + ";jdSupportDarkMode/1;ef/1;ep/" + encodeURIComponent(JSON.stringify(lIIil1l)) + ";Mozilla/5.0 (iPhone; CPU iPhone OS " + Ili1i1l1.replaceAll(".", "_") + " like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;" + }; + } + ["jdJE"]() { + const { + build: l1iIiiil + } = this.phoneInfo, + lli1IIi1 = { + "ciphertype": 5, + "cipher": { + "pin": this.#base64Encode(this.pin) + }, + "ts": parseInt(this.timestamp() / 1000), + "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", + "version": "1.0.3", + "appname": "com.360buy.jdmobile", + "ridx": -1 + }, + l111IIIi = { + "ciphertype": 5, + "cipher": { + "User-Agent": "JD4iPhone/" + l1iIiiil + "%20(iPhone;%20iOS;%20Scale/3.00)" + }, + "ts": parseInt(this.timestamp() / 1000), + "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", + "version": "1.0.3", + "appname": "com.360buy.jdmobile", + "ridx": -1 + }; + return { + "j-e-c": encodeURIComponent(JSON.stringify(lli1IIi1)), + "j-e-h": encodeURIComponent(JSON.stringify(l111IIIi)) + }; + } + ["userPin"](l1liI1i = this.cookie) { + if (!l1liI1i) { + return; + } + const Iiil1i = l1liI1i.split(";"); + for (const Il1lii1l of Iiil1i) { + const [il1il11i, iiIIl1] = Il1lii1l.split("="); + if (il1il11i === "pt_pin") return iiIIl1; + } + return null; + } + ["getLastSegmentOfUrl"](iIl1iI1) { + try { + if (!iIl1iI1) return null; + const IlliiiIl = new URL(iIl1iI1), + IiliII1l = IlliiiIl.pathname, + Ili1l1I1 = IiliII1l.substring(IiliII1l.lastIndexOf("/") + 1); + return Ili1l1I1; + } catch (llIilil1) { + return null; + } + } + ["getCookieByName"](l1iiIi) { + return this.savedCookies[l1iiIi]; + } + ["handleSetCookieHeaders"](il111IIi) { + let iIllIiII = {}; + const IIiiIil = il111IIi["set-cookie"]; + if (IIiiIil) { + IIiiIil.forEach(i1lilIii => { + const li1111ll = i1lilIii.match(/([^=]+)(?:=([^;]*))?/); + if (li1111ll) { + const II1iIIii = li1111ll[1].trim(), + l11I11i = li1111ll[2] ? li1111ll[2].trim() : ""; + iIllIiII[II1iIIii] = l11I11i; + } + }); + } + this.savedCookies = { + ...this.savedCookies, + ...iIllIiII + }; + this.ticket = ""; + Object.entries(this.savedCookies).forEach(([II1I1lII, liII1111]) => { + this.ticket += II1I1lII + "=" + liII1111 + ";"; + }); + } + #handleHeaders(lIIIi1II) { + if (this.mode === "hdb") { + if (!lIIIi1II._s) return; + let IiII1l1i = { + "nonce": lIIIi1II._nonce ?? "", + "s": lIIIi1II._s ?? "", + "ts": lIIIi1II._ts ?? "" + }; + this.otherHeaders = { + ...this.otherHeaders, + ...IiII1l1i + }; + } + } + ["request"](l1III11) { + const l11il1i1 = { + "method": "get", + "timeout": 20000 + }, + Ill1i = Object.assign({}, l11il1i1, l1III11); + return new Promise((Illll1l1, il1llIII) => { + I1II1lIl(Ill1i).then(lIIl11Ii => { + const Iii1lI1 = lIIl11Ii.data, + I1iIIill = lIIl11Ii.headers; + Illll1l1({ + "data": Iii1lI1, + "headers": I1iIIill + }); + }).catch(iiiIllll => { + il1llIII(iiiIllll); + }); + }); + } + async #checkProxy(l1ii1l1i) { + try { + return await I1II1lIl({ + "url": this.activityUrl || "https://www.jd.com", + "headers": { + "User-Agent": this.ua.app + }, + "httpsAgent": l1ii1l1i, + "timeout": 4000 + }), true; + } catch (IllililI) { + return false; + } + } + async #getProxyIp(l1IIllII = 10) { + if (!Iii1iI1i.proxy.proxyState) return null; + if (iIl1IlI1.wxProxyMode === 1) { + if (IlIIlIli.proxyIp && IlIIlIli.proxyIpTime + iIl1IlI1.wxProxyInterval * 1000 > this.timestamp()) return IlIIlIli.proxyIp; + let lll1lI11 = await Iii1iI1i.proxy.getCurrentProxy(); + if (!lll1lI11) return null; + return IlIIlIli.proxyIp = lll1lI11, IlIIlIli.proxyIpTime = this.timestamp(), lll1lI11; + } else { + if (iIl1IlI1.wxProxyMode === 2) { + if (this.proxyIp && this.proxyIpTime + iIl1IlI1.wxProxyInterval * 1000 > this.timestamp()) { + return this.proxyIp; + } + let i11I1ll1 = await Iii1iI1i.proxy.getCurrentProxy(); + if (!i11I1ll1) return null; + return this.log("获取到的ip:" + i11I1ll1), this.proxyIp = i11I1ll1, this.proxyIpTime = this.timestamp(), i11I1ll1; + } else this.log("代理模式错误"); + } + return null; + } + async #handleRequestParams(i1il1iI) { + const IIilIII = { + ...this.headers + }; + !i1il1iI?.["noReferer"] && this.activityUrl && (IIilIII.Referer = this.activityUrl); + const iliIi1l1 = { + "url": "https://api.m.jd.com/", + "method": "get", + "headers": { + ...IIilIII, + ...i1il1iI?.["headers"], + ...this.otherHeaders + }, + "timeout": iIl1IlI1.timeoutDuration * 1000 + }; + delete i1il1iI.headers; + i1il1iI = Object.assign({}, iliIi1l1, i1il1iI); + this.haskey(i1il1iI, "api") && (i1il1iI.url += i1il1iI.api); + if (this.haskey(i1il1iI, "json")) i1il1iI.data = i1il1iI.json, i1il1iI.headers = { + ...i1il1iI.headers, + "Content-Type": "application/json;charset=UTF-8" + }, i1il1iI.method = "post"; else { + if (this.haskey(i1il1iI, "data")) { + i1il1iI.headers = { + ...i1il1iI.headers, + "Content-Type": "application/x-www-form-urlencoded" + }; + i1il1iI.method = "post"; + } + } + const ii1il1li = i1il1iI?.["functionId"] || "", + llilli1l = i1il1iI?.["body"] || ""; + if (this.haskey(i1il1iI, "sign")) { + let Iliilili = i1l1iil.getSignData(ii1il1li, llilli1l, this.phoneInfo); + i1il1iI.method == "get" ? i1il1iI.params = Object.assign({}, i1il1iI.params, Iliilili) : i1il1iI.data = Object.assign({}, i1il1iI.data, Iliilili); + } + let l1liI1 = false, + lI1ill1l; + if (this.haskey(i1il1iI, "h5st31")) l1liI1 = true, lI1ill1l = "3.1"; else { + if (this.haskey(i1il1iI, "h5st41")) l1liI1 = true, lI1ill1l = "4.1"; else { + if (this.haskey(i1il1iI, "h5st42")) l1liI1 = true, lI1ill1l = "4.2"; else { + if (this.haskey(i1il1iI, "h5st43")) l1liI1 = true, lI1ill1l = "4.3"; else this.haskey(i1il1iI, "h5st44") && (l1liI1 = true, lI1ill1l = "4.4"); + } + } + } + if (l1liI1) { + let ii1I1il1 = await this.h5st.encrypt(i1il1iI.appId, i1il1iI.functionId, i1il1iI.body, i1il1iI.appid, i1il1iI.client, i1il1iI.clientVersion, i1il1iI.t, lI1ill1l); + i1il1iI.method == "get" ? i1il1iI.params = Object.assign({}, i1il1iI.params, ii1I1il1) : i1il1iI.data = Object.assign({}, i1il1iI.data, ii1I1il1); + } + i1il1iI = this.#checkAndEncryptParameters(i1il1iI); + i1il1iI?.["headers"]["Content-Type"] === "application/x-www-form-urlencoded" && (i1il1iI.data = iIl1llII.stringify(i1il1iI.data)); + if (i1il1iI?.["jdje"]) { + i1il1iI.headers = { + ...i1il1iI.headers, + ...this.jdJE(), + "x-referer-package": "com.360buy.jdmobile", + "x-rp-client": "ios_4.0.0" + }; + } + i1il1iI?.["headers"]?.["Referer"] && (i1il1iI.headers.Referer = this.encodeChineseParams(i1il1iI.headers.Referer)); + let I1lliII = { + "url": i1il1iI.url, + "method": i1il1iI.method, + "params": i1il1iI?.["params"] || {}, + "data": i1il1iI?.["data"] || {}, + "headers": i1il1iI?.["headers"] || {}, + "timeout": i1il1iI?.["timeout"] || 30000, + "maxRedirects": i1il1iI?.["maxRedirects"] || 5 + }; + if (!i1il1iI?.["noUseProxy"]) { + const liI1iI1l = I1lliII.url.includes("https://") && I1lliII.url.includes("api.m.jd.com") ? iI111l1i.jdAppTlsOptions : {}, + l1liiII = await this.#getProxyIp(); + I1lliII.httpsAgent = II1li1II({ + "proxy": l1liiII ? "http://" + l1liiII : null, + "tlsOptions": liI1iI1l + }); + } + return I1lliII; + } + #tlsOptions(lllllIll, Ilii1l1 = false) { + !Ilii1l1 && lllllIll?.["url"]["includes"]("https") && lllllIll?.["url"]?.["includes"]("api.m.jd.com") && (l1liiii1.globalAgent = new l1liiii1.Agent(tlsOptions)); + Ilii1l1 && l1liiii1.globalAgent.options && Object.keys(tlsOptions).forEach(l1ii11i1 => delete l1liiii1.globalAgent.options[l1ii11i1]); + } + #checkAndEncryptParameters(liIiI1l) { + if (this.defenseUrls.some(lIIIii1i => liIiI1l.url.includes(lIIIii1i))) { + if (this.mode === "wx") { + liIiI1l.data = { + "ecyText": i11IIIli({ + ...liIiI1l.data, + "actId": this.activityId + }, this.getCookieByName("pToken"), this.getCookieByName("te")) + }; + liIiI1l.headers["Content-Type"] = "application/json;charset=UTF-8"; + } else { + if (this.mode === "100") { + liIiI1l.data.actId = this.activityId; + liIiI1l.data = { + "ecyText": i11IIIli(liIiI1l.data, this.getCookieByName("pToken"), this.getCookieByName("te")) + }; + } + } + } + if (this.mode == "hdb" && liIiI1l.method === "post" && iI111l1i.hdbTypes.some(iliiiI1I => liIiI1l.url.includes(iliiiI1I))) { + liIiI1l.data.sysParams = { + "sysmethod": liIiI1l.data.appJsonParams.method, + "sign": "111111", + "timestamp": 123456 + }; + } + return liIiI1l; + } + async #proxyRequiredCheck(iliIi1ll, llliIIl) { + if (iIl1IlI1.wxProxyEnable === 2 && iIl1IlI1.wxProxyUrl && iliIi1ll.match(iIl1IlI1.proxyRegx)) { + if (iIl1IlI1.wxProxyMode === 1 && IlIIlIli.proxyIp && IlIIlIli.proxyIpTime && llliIIl && llliIIl < IlIIlIli.proxyIpTime) return true; + return iIl1IlI1.wxProxySmart === 1 && Iii1iI1i.proxy.updateProxyEnable(true), this.proxyIp = null, IlIIlIli.proxyIp = null, Iii1iI1i.proxy.cleanProxy(), true; + } + return false; + } + #handleMatchingResponse(iiI1IliI) { + if (iiI1IliI && iiI1IliI.constructor === Object) { + iiI1IliI = JSON.stringify(iiI1IliI); + iiI1IliI.includes("AUTH.FAILED.BLACK") && (this.black = true, this.putMsg("AUTH BLACK"), this.reseCookieStatus(), this.exit()); + if (iiI1IliI.match(iIl1IlI1.reTryRegx) && !iiI1IliI.includes("AUTH.FAILED.BLACK")) { + return true; + } + } + return false; + } + #retryOnEmptyStringResponse(iiIiii11, i1i111lI) { + if (!i1i111lI && this.defenseUrls.some(liI11111 => iiIiii11.url.includes(liI11111))) return true; + return false; + } + async ["jd_api"](ii1i111i, il1il11l = true, ili1i1I1 = 0, IIi1iIl = 0) { + let lIliill = Object.assign({}, ii1i111i), + II1liI1l = ii1i111i?.["functionId"], + iilIIIIl = await this.#handleRequestParams(ii1i111i), + i1li1l1I = this.timestamp(); + try { + let { + data: iIllii1i, + headers: iI1i1l1 + } = await this.request(iilIIIIl); + il1il11l && this.handleSetCookieHeaders(iI1i1l1); + this.#handleHeaders(iI1i1l1); + if (ili1i1I1 < this.retryCount && this.#retryOnEmptyStringResponse(iilIIIIl, iIllii1i)) { + return this.log("空数据重试" + ili1i1I1), await this.initPinToken(), await this.jd_api(lIliill, true, ili1i1I1 + 1, IIi1iIl); + } + if (ili1i1I1 < this.retryCount && this.#handleMatchingResponse(iIllii1i)) return this.debug(iIllii1i), this.log("重试" + ili1i1I1), await this.jd_api(lIliill, true, ili1i1I1 + 1, IIi1iIl); + let ll1ilIli = this.json2Str(iIllii1i); + if (ili1i1I1 < this.retryCount && iIllii1i && ll1ilIli && /您点的太快了|操作过于频繁/.test(ll1ilIli)) return this.debug(iIllii1i), this.log("等待重试" + ili1i1I1), await this.sleep(1500), await this.jd_api(lIliill, true, ili1i1I1 + 1, IIi1iIl); + return iIllii1i; + } catch (lii1Illl) { + if (lii1Illl instanceof i1I1IiII || lii1Illl instanceof iiiIIIll) throw lii1Illl; + const i1iiiIl1 = lii1Illl?.["response"]?.["status"], + iIII111l = [301, 302]; + if (this.retryStatusRegex?.["test"](i1iiiIl1) && ili1i1I1 < this.retryCount) return await this.jd_api(lIliill, true, ili1i1I1 + 1, IIi1iIl); + if ([404, ...iIII111l].includes(i1iiiIl1) && ii1i111i?.["url"]?.["includes"]("getDefenseUrls")) return []; + if (ii1i111i?.["maxRedirects"] === 0 && il1il11l && iIII111l.includes(i1iiiIl1)) return this.handleSetCookieHeaders(lii1Illl?.["response"]?.["headers"]), lii1Illl?.["response"]?.["headers"]; + if (this.blackRegx?.["test"](i1iiiIl1)) return this.putMsg(lii1Illl.response?.["data"]?.["message"] || "黑号"), this.exit(); + this.debug(lii1Illl.response?.["data"]); + const I1IIll1i = lii1Illl.message; + if (lii1Illl?.["response"]?.["status"] === 500 && this.defenseUrls.some(IiI1l1ii => iilIIIIl.url.includes(IiI1l1ii)) && ili1i1I1 < this.retryCount) { + return await this.initPinToken(), this.log("500重试" + ili1i1I1), await this.jd_api(lIliill, true, ili1i1I1 + 1, IIi1iIl); + } + const IlIi1Ii = II1liI1l?.["includes"]("isvObfuscator"); + if (IlIi1Ii && IIi1iIl > iIl1IlI1.isvObfuscatorRetry) return undefined; + if (IIi1iIl < this.proxyRetryCount && (await this.#proxyRequiredCheck(I1IIll1i, i1li1l1I))) return iIl1IlI1.showProxyRetryLog && this.log("" + (IlIi1Ii ? "isvObfuscator " : "") + (lii1Illl?.["response"]?.["status"] ?? "") + "代理重试" + IIi1iIl), IlIi1Ii && (await this.sleep(iIl1IlI1.isvObfuscatorRetryWait * 1000)), await this.jd_api(lIliill, true, ili1i1I1, IIi1iIl + 1); + return this.error("[" + (II1liI1l ?? lIliill?.["params"]?.["functionId"] ?? lIliill?.["data"]?.["functionId"] ?? lIliill?.["json"]?.["functionId"] ?? this.getLastSegmentOfUrl(ii1i111i?.["url"])) + "]请求失败," + (i1iiiIl1 ? "状态码[" + i1iiiIl1 + "]" : I1IIll1i)), undefined; + } + } + async ["taskGet"](li1l, lIIil11I = {}) { + let i1iiliil = li1l.startsWith("http") ? li1l : "https://" + this.domain + (this.prefix ? ("/" + this.prefix).replace(/\/\//g, "/") : "") + ("/" + li1l).replace(/\/\//g, "/"), + iiIiiIl = { + "url": i1iiliil, + "method": "get", + "params": lIIil11I, + "headers": { + "Referer": this.activityUrl, + "Cookie": this.isvToken ? "IsvToken=" + this.isvToken + ";" + this.ticket : this.cookie + } + }; + return await this.jd_api(iiIiiIl); + } + async ["taskPost"](l1ll1I1I, IliiIi1i = {}, iIiIIlli = {}, iIIlIIi = false) { + let lIiIiIIl = this.prefix ? (this.domain + "/" + this.prefix + "/" + l1ll1I1I).replace(/\/\//g, "/") : (this.domain + "/" + l1ll1I1I).replace(/\/\//g, "/"), + I1III1l1 = "https://" + lIiIiIIl, + IlIili = { + "url": I1III1l1, + "method": "post", + "headers": { + "Referer": this.activityUrl, + "Cookie": this.isvToken ? "IsvToken=" + this.isvToken + ";" + this.ticket : this.cookie, + ...iIiIIlli + } + }; + return iIIlIIi ? IlIili.json = IliiIi1i : IlIili.data = IliiIi1i, await this.jd_api(IlIili); + } + async["taskPostByJson"](i1IIlii1, Il111ll1 = {}, ll1ii1il = {}) { + return await this.taskPost(i1IIlii1, Il111ll1, ll1ii1il, true); + } + ["wxStop"](Iil11l) { + if (!Iil11l) return; + for (let Il11II1l of iIl1IlI1.stopKeywords) { + if (Iil11l.includes(Il11II1l)) { + throw new i1I1IiII("退出"); + } + } + } + async["wxStopSync"](I1iIli1I) { + if (!I1iIli1I) return; + if (/已结束/.exec(I1iIli1I)) { + await this.writeLongCacheByStop(); + } + for (let llii1 of iIl1IlI1.stopKeywords) { + if (I1iIli1I.includes(llii1)) throw new i1I1IiII("退出"); + } + } + async["wxCommonInfo"](liI11Iil = true, IIIiiIil = 3) { + let IlI1ilii = await this.taskGet(this.activityUrl); + if (IlI1ilii && IlI1ilii.includes("活动已经结束") && liI11Iil) { + this.putMsg("活动已经结束,手动确认"); + this.stop(); + return; + } + (this.domain.includes("lzkj") || this.domain.includes("lzdz1")) && (await this.taskGet("/wxCommonInfo/token")); + if (!this.ticket.includes("LZ_TOKEN_KEY")) { + this.debug(this.ticket); + IIIiiIil <= 0 && (this.putMsg("初始化LZ_TOKEN_KEY失败"), this.exit()); + this.log("初始化LZ_TOKEN_KEY失败,正在重试..."); + this.ticket = ""; + return await this.wxCommonInfo(liI11Iil, IIIiiIil - 1); + } + } + ["addressInit"]() { + for (let i1l11lli of IlIIlIli.addressList) { + if (i1l11lli.pt_pin === this.pin) { + this.address = i1l11lli.address; + this.remarks = i1l11lli.remarks; + this.tg_id = i1l11lli.tg_id; + return; + } + } + } + ["getAddress"]() { + if (this.address) return; + if (IlIIlIli.addressList.length === 0) { + this.address = ""; + return; + } + if (iIl1IlI1.saveAddressMode === 2) { + const lIIil1i1 = IlIIlIli.addressList.find(iiIiii1I => !iiIiii1I.use); + lIIil1i1 ? (this.address = lIIil1i1.address, lIIil1i1.use = true) : (IlIIlIli.addressList.forEach(iiIllIlI => iiIllIlI.use = false), this.address = IlIIlIli.addressList[0].address, IlIIlIli.addressList[0].use = true); + return; + } + const i1II1II1 = li1iI1I => li1iI1I.pt_pin.includes("默认地址"), + ill11iIl = IiI111ii => !IiI111ii.useNum || IiI111ii.useNum < iIl1IlI1.addressUseNum || iIl1IlI1.addressUseNum === 0, + iIIlilII = IlIIlIli.addressList.filter(iii11ii1 => i1II1II1(iii11ii1) && ill11iIl(iii11ii1)), + i1liIi1I = IlIIlIli.addressList.filter(III1l1Ii => !i1II1II1(III1l1Ii) && ill11iIl(III1l1Ii)); + if (iIIlilII.length > 0) { + const Illi11II = Math.floor(Math.random() * iIIlilII.length), + i1i1i1l1 = iIIlilII[Illi11II]; + this.address = i1i1i1l1.address; + i1i1i1l1.useNum ? i1i1i1l1.useNum += 1 : i1i1i1l1.useNum = 1; + } else { + if (i1liIi1I.length > 0) { + const IiiIili = Math.floor(Math.random() * i1liIi1I.length), + lili1llI = i1liIi1I[IiiIili]; + this.address = lili1llI.address; + lili1llI.useNum ? lili1llI.useNum += 1 : lili1llI.useNum = 1; + } + } + } + async["getShopOpenCardInfo"](iI1lIl11 = this.venderId || this.shopId) { + let l1iIlilI = { + "venderId": iI1lIl11, + "payUpShop": true, + "queryVersion": "10.5.2", + "appid": "27004", + "needSecurity": true, + "bizId": "shopmember_m_jd_com", + "channel": "8018006" + }, + IIlii1l = await this.jd_api({ + "url": "https://api.m.jd.com/client.action", + "method": "post", + "body": l1iIlilI, + "data": { + "functionId": "getShopOpenCardInfo", + "body": l1iIlilI, + "uuid": "88888" + }, + "functionId": "getShopOpenCardInfo", + "headers": { + "Referer": "https://shop.m.jd.com/" + }, + "appid": "shopmember_m_jd_com", + "appId": "27004", + "clientVersion": "9.2.0", + "client": "H5", + "t": Date.now(), + "h5st43": true + }, false); + if (IIlii1l && IIlii1l.success) { + let Illl1iI1 = IIlii1l?.["result"][0], + IliI1Iii = Illl1iI1?.["interestsRuleList"] ?? []; + this.openCardStatus = Illl1iI1?.["userInfo"]?.["openCardStatus"] ?? 0; + this.giftList = IliI1Iii; + if (IliI1Iii.length > 0) this.giftActId = IliI1Iii?.[0]?.["interestsInfo"]["activityId"] ?? ""; else { + this.giftActId = ""; + } + } else this.giftActId = ""; + return IIlii1l; + } + async["bindWithVender"](Ili1il1i = this.venderId || this.shopId) { + let IIliliI = { + "venderId": Ili1il1i, + "bindByVerifyCodeFlag": 1, + "registerExtend": {}, + "writeChildFlag": 0, + "channel": "8018006", + "activityId": this.giftActId, + "appid": "27004", + "needSecurity": true, + "bizId": "shopmember_m_jd_com" + }, + llilI1II = await this.jd_api({ + "url": "https://api.m.jd.com/client.action", + "method": "post", + "body": IIliliI, + "data": { + "functionId": "bindWithVender", + "appid": "shopmember_m_jd_com", + "body": IIliliI, + "uuid": "88888" + }, + "appid": "shopmember_m_jd_com", + "appId": "27004", + "functionId": "bindWithVender", + "headers": { + "Referer": "https://shop.m.jd.com/" + }, + "clientVersion": "9.2.0", + "client": "H5", + "t": Date.now(), + "h5st43": true + }, false); + this.debug(llilI1II); + if (llilI1II && llilI1II.code === 0) { + if (llilI1II.busiCode === "0") { + if (llilI1II.result?.["giftInfo"]?.["giftList"]) { + let iIlI1ill = llilI1II.result.giftInfo.giftList.map(il1lii11 => "" + il1lii11.discountString + il1lii11.prizeName).join(","); + this.log("加入店铺[" + Ili1il1i + "]会员成功,获得" + iIlI1ill); + } else this.log("加入店铺[" + Ili1il1i + "]会员成功"); + } else { + this.log(llilI1II?.["message"]); + if (llilI1II?.["message"]?.["includes"]("已经是本店会员")) { } else this.canNotOpenCard = true; + } + } else this.log("加入店铺[" + Ili1il1i + "]会员失败", llilI1II?.["message"]), this.canNotOpenCard = true; + return llilI1II; + } + async["isvObfuscator"]() { + if (IlIIlIli.redis) { + let iIilIIi = await IlIIlIli.redis.get("" + this.pin); + if (iIilIIi) { + return this.isvToken = iIilIIi, { + "code": "0", + "token": this.isvToken + }; + } + } else { + let iI1lI11i = this.readFileSync("./tokens/" + this.pin), + iIi1Ilil = iI1lI11i ? JSON.parse(iI1lI11i) : {}; + if (iIi1Ilil && iIi1Ilil?.["expireTime"] > this.timestamp() - this.random(0, 2 * 60 * 1000) && iIi1Ilil?.["token"]) { + return this.isvToken = iIi1Ilil.token, { + "code": "0", + "token": this.isvToken + }; + } + } + const ii11lll1 = { + "url": "https://" + this.domain, + "id": "" + }, + IiiillI = await this.jd_api({ + "url": "https://api.m.jd.com/client.action", + "method": "post", + "functionId": "isvObfuscator", + "body": ii11lll1, + "data": {}, + "headers": { + ...this.headers, + "User-Agent": this.ua.jd4 + }, + "sign": true, + "noReferer": true, + "jdje": true + }, false); + if (IiiillI && IiiillI?.["code"] === "0" && IiiillI?.["token"]) { + let illIi111 = IiiillI.token; + this.isvToken = illIi111; + IlIIlIli.redis ? await IlIIlIli.redis.set("" + this.pin, illIi111, this.random(25, 28) * 60) : this.writeFileSync("tokens", this.pin, JSON.stringify({ + "expireTime": this.timestamp() + this.random(20, 26) * 60 * 1000, + "token": illIi111 + })); + } else IiiillI?.["code"] === "3" && IiiillI?.["errcode"] === 264 ? (this.putMsg("ck过期"), this.reseCookieStatus(), this.exit()) : this.log(IiiillI); + if (!this.isvToken) { + this.putMsg("获取Token失败"); + this.reseCookieStatus(); + this.exit(); + } + return IiiillI; + } + async["getShopInfo"](lIIIi11i = this.venderId, Iilili11 = this.shopId) { + if (IlIIlIli.activity.shopName) { + this.shopName = IlIIlIli.activity.shopName; + this.venderId = IlIIlIli.activity.venderId; + this.shopId = IlIIlIli.activity.shopId; + return; + } + let IiliIlll = await this.jd_api({ + "api": "pages_jd_com", + "method": "post", + "data": {}, + "functionId": "shopDetail", + "body": { + "shopId": Iilili11?.["toString"](), + "source": "appClient", + "venderId": lIIIi11i?.["toString"]() + }, + "headers": { + "User-Agent": this.ua.jd4, + "jdgs": "-3107", + "x-rp-client": "ios_4.0.0", + "x-referer-package": "com.360buy.jdmobile" + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + return IiliIlll && IiliIlll.code === "0" && IiliIlll.isSuccess && (this.shopName = IiliIlll.result.shopBaseInfo.shopName, this.venderId = IiliIlll.result.shopBaseInfo.venderId, this.shopId = IiliIlll.result.shopBaseInfo.shopId, IlIIlIli.activity = Object.assign(IlIIlIli.activity, { + "shopName": this.shopName, + "shopId": this.shopId, + "venderId": this.venderId + })), IiliIlll; + } + async["follow"](lliIilll = this.shopId) { + let ilIi1i1 = await this.jd_api({ + "api": "client.action", + "method": "post", + "data": {}, + "functionId": "followShop", + "body": { + "member": "true", + "follow": "true", + "shopId": lliIilll.toString(), + "award": "false", + "sourceRpc": "shop_app_home_follow" + }, + "headers": { + "User-Agent": this.ua.jd4, + "jdgs": "-3107", + "x-rp-client": "ios_4.0.0", + "x-referer-package": "com.360buy.jdmobile" + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + this.debug(ilIi1i1); + if (ilIi1i1 && ilIi1i1.code === "0") return this.log(ilIi1i1.msg || "关注成功"), true; + return this.log(ilIi1i1), false; + } + async["unfollow"](lil1IIII = this.shopId || this.venderId) { + let ll1lilli = await this.jd_api({ + "api": "client.action", + "method": "post", + "data": {}, + "functionId": "followShop", + "body": { + "follow": "false", + "shopId": lil1IIII.toString(), + "award": "false", + "sourceRpc": "shop_app_home_follow" + }, + "headers": { + "User-Agent": this.ua.jd4, + "jdgs": "-3107", + "x-rp-client": "ios_4.0.0", + "x-referer-package": "com.360buy.jdmobile" + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + if (ll1lilli && ll1lilli.code === "0") { + return this.log(ll1lilli.msg || "取消关注成功"), true; + } + return this.log(ll1lilli), false; + } + async["wxApi"](illI1lII, IIIIiI = {}) { + return await this.taskPost(illI1lII, { + "activityId": this.activityId, + ...IIIIiI + }); + } + async["getSimpleActInfoVo"](i1Il1II1 = "customer/getSimpleActInfoVo") { + if (IlIIlIli.activity.activityType) { + this.type = IlIIlIli.activity.type; + this.venderId = IlIIlIli.activity?.["venderId"]; + this.shopId = IlIIlIli.activity?.["shopId"]; + this.activityType = IlIIlIli.activity?.["activityType"]; + return; + } + let ii1lilii = await this.wxApi(i1Il1II1); + if (ii1lilii && ii1lilii?.["result"] && ii1lilii?.["data"]) { + IlIIlIli.activity = Object.assign(IlIIlIli.activity, ii1lilii?.["data"]); + this.venderId = ii1lilii?.["data"]?.["venderId"]; + this.shopId = ii1lilii?.["data"]?.["shopId"]; + this.activityType = ii1lilii?.["data"]?.["activityType"]; + const iII11IIl = { + 5: "wxCollectionActivity", + 6: "wxCollectionActivity", + 7: "wxGameActivity", + 11: "wxDrawActivity", + 12: "wxDrawActivity", + 13: "wxDrawActivity", + 15: "sign", + 16: "daily", + 17: "wxShopFollowActivity", + 18: "sevenDay", + 20: "wxKnowledgeActivity", + 24: "wxShopGift", + 25: "wxShareActivity", + 26: "wxPointDrawActivity", + 42: "wxCollectCard", + 46: "wxTeam", + 65: "wxBuildActivity", + 69: "wxFansInterActionActivity", + 70: "wxCartKoi/cartkoi", + 71: "wxSecond", + 73: "wxShopGift", + 100: "wxTeam", + 102: "wxTeam", + 103: "mc/wxMcLevelAndBirthGifts", + 104: "mc/wxMcLevelAndBirthGifts", + 119: "mc/wxMcLevelAndBirthGifts", + 124: "wxScratchActive", + 125: "wxPointBlindBox", + 128: "wxGashaponActive", + 129: "wxDollGrabbing", + 204: "wxPointShop", + 1001: "wxgame", + 1002: "wxgame", + 2001: "drawCenter", + 2002: "drawCenter", + 2003: "drawCenter", + 2004: "drawCenter", + 2006: "drawCenter" + }; + if (iII11IIl[this.activityType]) this.type = iII11IIl[this.activityType]; else { + this.type = "wxDrawActivity"; + } + IlIIlIli.activity.type = this.type; + } else { + this.putMsg("手动确认,活动不存在或者已结束"); + this.stop(); + } + return ii1lilii; + } + async["activityContent"](lIi1llIl = {}, lii11ll1 = "") { + let I1l1Iill = await this.wxApi(this.type + "/activityContent", { + "activityId": this.activityId, + "pin": this.secretPin, + ...lIi1llIl + }); + + if (I1l1Iill && I1l1Iill?.["data"]) { + let ll11iiII = lii11ll1 ? I1l1Iill.data[lii11ll1] : I1l1Iill.data, + il1IIi1i = ll11iiII?.["startTime"], + I11ili1i = ll11iiII?.["endTime"]; + const iiilIiiI = ll11iiII?.["rule"] || ll11iiII?.["actRule"] || ""; + try { + if (!il1IIi1i || !I11ili1i) { + const IIIlllI = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}/g, + iIIi1Il = iiilIiiI.match(IIIlllI); + if (iIIi1Il) { + il1IIi1i = new Date(iIIi1Il[0]).getTime(); + I11ili1i = new Date(iIIi1Il[1]).getTime(); + } + } + this.rule = iiilIiiI; + IlIIlIli.activity.prizeList = this.rule.match(/奖品名称(:|:)(\S+)( |,)数量(:|:)(\d+)(个|份)/g) || this.rule.match(/[\u4E00-\u9FFF]等奖:(\S+) (\d+)份/g) || I11ili1i; + + IlIIlIli.activity.timeStr = this.formatDate(il1IIi1i, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(I11ili1i, "yyyy-MM-dd HH:mm:ss"); + IlIIlIli.activity.startTime = il1IIi1i; + IlIIlIli.activity.endTime = I11ili1i; + } catch (l11i1l11) { } + il1IIi1i && il1IIi1i > Date.now() && (this.putMsg("活动未开始"), IlIIlIli.activity.noStart = true, this.stop()); + I11ili1i && I11ili1i < Date.now() && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()); + } + return I1l1Iill; + } + async["getGiveContent"]() { + let Il1liii = await this.wxApi("wxDrawActivity/getGiveContent", { + "pin": this.secretPin + }); + + if (Il1liii && Il1liii?.["data"]) { } + return Il1liii; + } + async["initPinToken"](i111l1 = this.venderId, IlI1Ii = this.shopId) { + let illlli1l = { + "activityId": this.activityId, + "jdToken": this.isvToken, + "source": "01", + "uuid": this.phoneInfo.uuid, + "clientTime": Date.now() + }, + iiiii1Il = ""; + this.mode === "100" ? (illlli1l = { + ...illlli1l, + "shareUserId": "", + "shopId": IlI1Ii, + "status": 1 + }, iiiii1Il = "https://" + this.domain + this.prefix + "/api/user-info/initPinToken") : (illlli1l = { + ...illlli1l, + "venderId": i111l1, + "fromType": "APP", + "riskType": 1, + "client": "iOS", + "clientVersion": this.phoneInfo.clientVersion, + "osVersion": this.phoneInfo.iv, + "model": "iPhone" + this.phoneInfo.tf, + "userAgent": this.ua.app + }, iiiii1Il = "https://" + this.domain + "/customer/initPinToken"); + let iiillI1 = await this.taskGet(this.mode === "wx" ? "customer/initPinToken" : "api/user-info/initPinToken", illlli1l); + if (this.mode === "wx" && iiillI1 && iiillI1.result) this.secretPin = encodeURIComponent(iiillI1.data?.["secretPin"]), this.nickname = iiillI1.data?.["nickname"]; else this.mode === "100" && iiillI1 && iiillI1.resp_code === 0 ? this.pinToken = JSON.parse(iiillI1.data)?.["data"]?.["pinToken"] : (this.putMsg(iiillI1?.["errorMessage"] || iiillI1?.["data"] || iiillI1?.["resp_msg"]), this.wxStop(iiillI1?.["errorMessage"] || iiillI1?.["data"] || iiillI1?.["resp_msg"]), this.reseCookieStatus(), this.exit()); + return iiillI1; + } + async["getMyPing"](ill11Ii = "customer/getMyPing", iIllI11I = this.isvToken, lI11IlIi = this.venderId) { + let lIli1li1 = await this.wxApi(ill11Ii, { + "userId": lI11IlIi, + "token": iIllI11I, + "fromType": "APP" + }); + if (lIli1li1 && lIli1li1?.["result"]) this.secretPin = lIli1li1.data?.["secretPin"], this.nickname = lIli1li1.data?.["nickname"]; else { + let lllllIIi = lIli1li1?.["errorMessage"] || "获取pin失败"; + this.putMsg(lllllIIi); + this.wxStop(lllllIIi); + lllllIIi.includes("请联系商家") && this.stop(); + this.reseCookieStatus(); + this.exit(); + } + return lIli1li1; + } + async["accessLog"](i1iiI1 = this.secretPin) { + let I1IlIIIi = this.domain.includes("cjhy") ? "accessLog" : "accessLogWithAD"; + await this.wxApi("common/" + I1IlIIIi, { + "venderId": this.venderId, + "code": this.activityType, + "pin": i1iiI1, + "activityId": this.activityId, + "pageUrl": this.activityUrl, + "subType": "app", + "uuid": this.phoneInfo.uuid + }); + } + async["saveAddress"](IlIl1ll1 = this.addressId, iI1liIi1 = this.prizeName) { + IlIIlIli.isSaveAddress = true; + this.getAddress(); + if (!this.address) { + this.putMsg("未配置地址或所有地址已达使用上限,退出填地址"); + return; + } + if (iIl1IlI1.addressStopKeywords && iIl1IlI1.addressStopKeywords.some(iiIlli1i => { + return iI1liIi1?.["includes"](iiIlli1i); + })) { + this.putMsg("触发关键词不填地址"); + return; + } + if (iIl1IlI1.addressStopKeywordsRule && iIl1IlI1.addressStopKeywordsRule.some(II1iliii => { + return this.rule?.["includes"](II1iliii); + })) { + this.putMsg("触发规则不填地址"); + return; + } + this.log("使用地址", this.address); + let liIIl1iI = false; + if (this.mode == "wx") { + this.address.generateId = IlIl1ll1; + let iI1IliIi = await this.wxApi("wxAddress/save", { + ...this.address, + "venderId": this.venderId, + "pin": this.secretPin, + "activityId": this.activityId, + "actType": this.activityType, + "prizeName": iI1liIi1, + "personalEmail": "" + }); + this.log(iI1IliIi); + iI1IliIi && iI1IliIi.result ? (this.putMsg("已填地址"), liIIl1iI = true) : (this.putMsg("填地址失败"), this.putMsg(iI1IliIi.errorMessage)); + } else { + if (this.mode === "100") { + const { + phone: lIll1iiI, + address: lIII1iIl, + receiver: l1lll111, + city: IlI111ll, + county: liIliIii, + province: i1I1i1ll + } = this.address; + let iI1li1Ii = { + "mobile": lIll1iiI, + "address": lIII1iIl, + "realName": l1lll111, + "city": IlI111ll, + "county": liIliIii, + "orderCode": IlIl1ll1, + "province": i1I1i1ll + }, + illll1li = await this.lzkjApi("api/my/prize/update", iI1li1Ii); + if (illll1li.resp_code === 0) this.putMsg("已填地址"), liIIl1iI = true; else { + this.putMsg("填地址失败"); + this.putMsg(illll1li.resp_msg); + } + } else { + if (this.mode === "hdb") { + const { + phone: ll1lil1, + address: liiIllil, + receiver: IiliIlil, + city: l1llIli1, + county: i1li1III, + province: lIil1l1 + } = this.address; + let l1ii1ilI = { + "province": lIil1l1, + "city": l1llIli1, + "area": i1li1III, + "detailAddress": liiIllil, + "address": "" + lIil1l1 + l1llIli1 + i1li1III + liiIllil, + "mobile": ll1lil1, + "receiveName": IiliIlil, + "activityLogId": IlIl1ll1 + }, + iill1lii = await this.hdbApi("postDeliveryInfo", l1ii1ilI); + this.log(iill1lii); + if (iill1lii && iill1lii.succ) this.putMsg("已填地址"), liIIl1iI = true; else { + this.putMsg("填地址失败"); + this.putMsg(iill1lii?.["message"]); + } + } else { + if (this.mode === "hzbz") { + const { + phone: ll11iIli, + address: I111111i, + receiver: i1i1I1I1, + city: liIilIi1, + county: IiIiIiii, + province: iII1Illi + } = this.address; + let ilil1lI1 = { + "addressRegion": iII1Illi + "-" + liIilIi1 + "-" + IiIiIiii, + "address": I111111i, + "mobile": ll11iIli, + "name": i1i1I1I1, + "condtionId": "" + }, + I1111Iil = await this.hzbzApi("SaveUserInfo.json", ilil1lI1); + this.log(I1111Iil); + I1111Iil && I1111Iil.code === 0 ? (this.putMsg("已填地址"), liIIl1iI = true) : (this.putMsg("填地址失败"), this.putMsg(I1111Iil?.["txt"])); + } else { + if (this.mode === "jinggeng") { + const { + phone: l11i1I, + address: illiI1II, + receiver: liIll1, + city: lilIi1i1, + county: liiillli, + province: i1ii11l1 + } = this.address; + let IiIii1ll = await this.jinggengApi("postBuyerInfo", { + "receiverName": liIll1, + "mobile": l11i1I, + "address": i1ii11l1.replace("省", "").replace("市", "") + " " + lilIi1i1.replace("市", "") + " " + liiillli + illiI1II, + "log_id": IlIl1ll1 + }); + this.log(IiIii1ll); + IiIii1ll && IiIii1ll.succ ? (this.putMsg("已填地址"), liIIl1iI = true) : (this.putMsg("填地址失败"), this.putMsg(IiIii1ll?.["msg"])); + } else { + if (this.mode === "v2") { + if (!this.activityPrizeId) return this.putMsg("activityPrizeId不存在,退出填地址"); + const { + phone: iii1lIlI, + address: illIl1II, + receiver: IIiliIlI, + city: lI1lil1, + county: lIl111II, + province: l1lillli + } = this.address; + let li111lI = await this.v2Api("api/" + this.activityType + "/userAddressInfo", { + "addressId": IlIl1ll1, + "address": illIl1II, + "county": lIl111II, + "city": lI1lil1, + "province": l1lillli, + "mobile": iii1lIlI, + "realName": IIiliIlI, + "activityPrizeId": this.activityPrizeId + }); + this.log(li111lI); + li111lI && li111lI.code === 200 ? (this.putMsg("已填地址"), liIIl1iI = true) : (this.putMsg("填地址失败"), this.putMsg(li111lI?.["message"])); + } + } + } + } + } + } + if (liIIl1iI) { + let iI1II1li = this.formatDate(Date.now(), "yyyy-MM-dd HH:mm:ss") + "," + iI1liIi1 + "," + this.pin + "," + this.address?.["phone"] + "," + this.address?.["address"] + "," + Iii1iI1i.envInfo.name + "," + (this.shopName ?? this.venderId) + "," + this.activityUrl + "\n"; + this.appendFileSync("", "gifts.csv", iI1II1li); + } + IlIIlIli.isSaveAddress = false; + } + async["getPrize"](iI11Iil = false) { + let Ill1li1i = await this.wxApi(this.type + "/getPrize", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(Ill1li1i); + if (Ill1li1i && Ill1li1i.result && Ill1li1i.data?.["drawOk"]) { + this.putMsg(Ill1li1i.data.name || "空气"); + iI11Iil && (await this.writeLongCache()); + return; + } + let lIlIil = Ill1li1i?.["errorMessage"] || Ill1li1i?.["data"]?.["errorMessage"]; + if (!lIlIil) return; + return this.putMsg(lIlIil), this.wxStop(lIlIil), Ill1li1i; + } + async["login"](iiIlIilI = true, iliilIIi = this.isvToken) { + if (this.mode === "100") { + let I1IiliIl = { + "activityId": this.activityId, + "tokenPin": iliilIIi, + "status": 1, + "source": "01", + "shareUserId": "", + "uuid": this.phoneInfo.uuid, + "client": "iOS", + "clientVersion": this.phoneInfo.clientVersion, + "osVersion": this.phoneInfo.iv, + "model": "iPhone" + this.phoneInfo.tf, + "userAgent": this.ua.app + }; + if (this.domain.includes("lzkj")) { } + let i1i1iliI = await this.taskPostByJson("api/user-info/login", I1IiliIl); + if (i1i1iliI && i1i1iliI.resp_code === 0) { + this.token = i1i1iliI.data.token; + this.headers.token = i1i1iliI.data.token; + let liIllIl1 = this.haskey(i1i1iliI, "data.joinInfo.joinCodeInfo.joinCode"); + this.joinDes = i1i1iliI.data.joinInfo.joinCodeInfo.joinDes; + this.log("登录成功|" + liIllIl1 + "|" + this.joinDes); + IlIIlIli.activity.shopId = i1i1iliI.data.shopId; + this.shopId = i1i1iliI.data.shopId; + this.joinCode = liIllIl1; + const I1ii1l1 = /venderId=(\d+)/, + iI1I1ll = i1i1iliI.data.joinInfo?.["openCardUrl"]; + this.venderId = iI1I1ll ? iI1I1ll.match(I1ii1l1)[1] : this.shopId; + IlIIlIli.activity = { + ...IlIIlIli.activity, + "shopId": this.shopId, + "venderId": this.venderId + }; + if (liIllIl1 === "1003" || this.lzkjOpenCard && ["1005", "1002", "1006"].includes(liIllIl1) && !this.openCardTypes.includes(this.activityType)) return this.putMsg(this.joinDes), this.exit(); + await this.lzkjApi("api/task/followShop/follow"); + iiIlIilI && (await this.lzkjBaseInfo()); + } else this.putMsg(i1i1iliI?.["resp_msg"] || "登录失败"), this.wxStop(i1i1iliI?.["resp_msg"]), this.exit(); + return i1i1iliI; + } else { + if (["hdb"].includes(this.mode)) { + let l11li1li = await this.taskPostByJson("front/fans/login", { + "appJsonParams": { + "id": this.activityId, + "source": "01", + "userId": this.userId, + "token": iliilIIi, + "method": "/front/fans/login" + }, + "sysParams": { + "sign": "111111", + "timestamp": 123456, + "sysmethod": "/front/fans/login" + } + }); + if (l11li1li && l11li1li?.["code"] == 200) this.buyerNick = l11li1li?.["result"]?.["buyerNick"], this.aesBuyerNick = l11li1li?.["result"]?.["aesBuyerNick"], this.userId = l11li1li?.["result"]?.["userId"], this.openCard = l11li1li?.["result"]?.["openCard"], IlIIlIli.activity.shopId = this.userId, IlIIlIli.activity.venderId = this.userId; else { + if (l11li1li?.["message"]?.["includes"]("商家订购过期")) this.putMsg("商家订购过期"), this.stop(); else { + this.putMsg(l11li1li?.["message"] || "登录失败"); + this.exit(); + } + } + return l11li1li; + } else { + if (this.mode === "v2") { + let Il1IiIl = await this.v2Api("api/user/login", { + "token": iliilIIi, + "source": "01", + "activityType": this.activityType, + "templateCode": this.templateCode, + "activityId": this.activityId, + "shopId": this.shopId, + "uuid": this.phoneInfo.uuid, + "timestamp": this.timestamp() + }); + if (Il1IiIl && Il1IiIl?.["code"] === 200) { + this.headers["Pin-Token"] = Il1IiIl?.["data"]?.["pinToken"]; + this.headers["Activity-Id"] = this.activityId; + this.headers["Shop-Id"] = this.shopId; + this.headers["Activity-Type"] = this.activityType; + this.headers["Template-Code"] = this.templateCode; + this.secretPin = Il1IiIl?.["data"]?.["encryptPin"]; + await this.getActivityBase(); + } else this.putMsg(Il1IiIl?.["message"] || "登录失败"), this.exit(); + return Il1IiIl; + } + } + } + } + async["lzkjBaseInfo"]() { + this.needPinToken && (await this.initPinToken()); + await this.basicInfo(); + await this.getPrizeList(); + let activityContent = await this.lzkjApi("api/task/daySign/activity"); + if (activityContent.data?.signPiize) { + IlIIlIli.activity.daysign = activityContent.data?.signPiize + } + let prizeList1 = await this.lzkjApi("/api/task/sign/prizeList"); + if (prizeList1.data?.prizeInfo) { + IlIIlIli.activity.prizeList1 = prizeList1.data?.prizeInfo + } + this.prizeList && this.prizeList.length > 0 && this.prizeList.filter(iIllii1l => ![2].includes(iIllii1l.prizeType) && iIllii1l.leftNum !== 0).length === 0 && (this.putMsg("垃圾活动"), this.stop()); + if (!["1001", "1004"].includes(this.joinCode) && this.openCardTypes.includes(this.activityType)) return await this.bindWithVender(), await this.login(false); + if (this.joinCode === "1004") await this.login(false); + } + async["basicInfo"]() { + let IIIi1lII = await this.taskPostByJson("api/active/basicInfo", { + "activityId": this.activityId + }); + if (IIIi1lII && IIIi1lII.resp_code === 0) { + const ll1ililI = { + 10001: { + "name": "签到抽奖", + "api": "sign" + }, + 10002: { + "name": "签到抽奖", + "api": "sign" + }, + 10003: { + "name": "签到抽奖", + "api": "sign" + }, + 10004: { + "name": "签到抽奖", + "api": "sign" + }, + 10006: { + "name": "邀好友", + "api": "member" + }, + 10011: { + "name": "答题有礼", + "api": "knowledge" + }, + 10020: { + "name": "幸运抽奖", + "api": "jiugongge" + }, + 10021: { + "name": "幸运抽奖", + "api": "jiugongge" + }, + 10022: { + "name": "每日抢好礼", + "api": "dailyGrabs" + }, + 10023: { + "name": "签到有礼", + "api": "daySign" + }, + 10024: { + "name": "加购有礼", + "api": "addSku" + }, + 10025: { + "name": "关注店铺", + "api": "followShop" + }, + 10026: { + "name": "积分抽奖", + "api": "points" + }, + 10027: { + "name": "积分PK", + "api": "integralPk" + }, + 10030: { + "name": "下单有礼", + "api": "orderGift" + }, + 10031: { + "name": "幸运抽奖", + "api": "niudanji" + }, + 10032: { + "name": "集卡有礼", + "api": "collectCard" + }, + 10033: { + "name": "组队瓜分", + "api": "organizeTeam" + }, + 10034: { + "name": "神券裂变", + "api": "fissionCoupon" + }, + 10035: { + "name": "秒读手速", + "api": "dmpss" + }, + 10036: { + "name": "购物车锦鲤", + "api": "addSkuPrice" + }, + 10040: { + "name": "签到有礼", + "api": "daySign" + }, + 10041: { + "name": "幸运抽奖", + "api": "lotteryCenter" + }, + 10042: { + "name": "幸运抽奖", + "api": "lotteryCenter" + }, + 10043: { + "name": "分享有礼", + "api": "sharePolitely" + }, + 10044: { + "name": "投票抽奖", + "api": "votePolitely" + }, + 10045: { + "name": "买家秀", + "api": "buyersShow" + }, + 10046: { + "name": "幸运抽奖", + "api": "lotteryCenter" + }, + 10047: { + "name": "盖楼有礼", + "api": "building" + }, + 10048: { + "name": "限时抢券", + "api": "robCoupon" + }, + 10049: { + "name": "完善信息", + "api": "perfectInfo" + }, + 10053: { + "name": "关注商品", + "api": "followGoods" + }, + 10054: { + "name": "上上签抽奖", + "api": "upperSign" + }, + 10058: { + "name": "店铺礼包", + "api": "shopGift" + }, + 10059: { + "name": "合成大赢家", + "api": "bigwinner" + }, + 10060: { + "name": "新人优惠券", + "api": "couponMarketing" + }, + 10063: { + "name": "翻牌抽奖", + "api": "lotteryCenter" + }, + 10062: { + "name": "翻牌抽奖", + "api": "lotteryCenter" + }, + 10068: { + "name": "邀请关注", + "api": "inviteFollowShop" + }, + 10069: { + "name": "关注有礼", + "api": "lkFollowShop" + }, + 10070: { + "name": "邀请入会", + "api": "member" + }, + 10073: { + "name": "幸运抽奖", + "api": "lotteryCenter" + }, + 10077: { + "name": "首购有礼", + "api": "first/buy" + }, + 10078: { + "name": "满额有礼", + "api": "consumptionGift" + }, + 10079: { + "name": "积分兑换", + "api": "pointsExchange" + }, + 10080: { + "name": "积分刮刮乐", + "api": "points" + }, + 10081: { + "name": "答题有礼", + "api": "questionnaire" + }, + 10082: { + "name": "互动游戏", + "api": "game" + }, + 10084: { + "name": "互动游戏", + "api": "game" + }, + 10086: { + "name": "互动游戏", + "api": "game" + }, + 10089: { + "name": "互动游戏", + "api": "game" + }, + 10091: { + "name": "互动游戏", + "api": "game" + }, + 10092: { + "name": "互动游戏", + "api": "game" + }, + 10093: { + "name": "互动游戏", + "api": "game" + }, + 10094: { + "name": "互动游戏", + "api": "game" + }, + 10095: { + "name": "互动游戏", + "api": "game" + }, + 335: { + "name": "入会有礼", + "api": "rights" + } + }, + { + shopName: IliIIIiI, + startTime: II1illi1, + endTime: IIIi1i1I, + actType: iIl111li + } = IIIi1lII.data; + this.actType = iIl111li; + this.type = ll1ililI[iIl111li]?.["api"]; + this.shopName = IliIIIiI; + const ii11Ii11 = this.formatDate(II1illi1, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(IIIi1i1I, "yyyy-MM-dd HH:mm:ss"); + IlIIlIli.activity = { + ...IlIIlIli.activity, + "shopName": IliIIIiI, + "actType": iIl111li, + "startTime": II1illi1, + "endTime": IIIi1i1I, + "timeStr": ii11Ii11 + }; + II1illi1 && II1illi1 > Date.now() && (this.putMsg("活动未开始"), IlIIlIli.activity.noStart = true, this.stop()); + IIIi1i1I && IIIi1i1I < Date.now() && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()); + if (!this.type) { + this.putMsg("未知类型"); + this.exit(); + return; + } + } + return IIIi1lII; + } + async["getDefenseUrls"]() { + if (IlIIlIli.activity.defenseUrls) return this.defenseUrls = IlIIlIli.activity.defenseUrls; + const { + domain: Iil11ll1, + mode: IilllIil + } = this; + let lili1lll; + if (IilllIil === "wx") lili1lll = "https://" + Iil11ll1 + "/customer/getDefenseUrls"; else { + if (IilllIil === "100") lili1lll = "https://" + this.domain + this.prefix + "/api/user-info/getDefenseUrls"; else { + this.defenseUrls = []; + return; + } + } + let iiillIII = await this.jd_api({ + "url": lili1lll, + "maxRedirects": 0 + }, false); + if (this.haskey(iiillIII, "data")) { + this.defenseUrls = IilllIil === "wx" ? iiillIII.data : iiillIII.data.map(l11lii => l11lii.interfaceName); + } else { + this.defenseUrls = []; + } + IlIIlIli.activity.defenseUrls = this.defenseUrls; + } + async["getPrizeList"]() { + if (IlIIlIli.activity.prizeList) { + this.prizeList = IlIIlIli.activity.prizeList; + return; + } + let liIi1I11 = await this.lzkjApi("api/prize/drawPrize"); + liIi1I11 && liIi1I11.resp_code === 0 && (this.prizeList = liIi1I11.data?.["prizeInfo"] ?? [], IlIIlIli.activity.prizeList = this.prizeList); + } + async["getUserId"]() { + let lii1I111 = await this.lzkjApi("api/task/share/getUserId"); + return lii1I111 && lii1I111.resp_code === 0 && (this.shareUserId = lii1I111.data?.["shareUserId"]), lii1I111; + } + async["lzkjToDo"](illi11ii, Ii1ill1 = "", IIiIl1Ii = 0) { + let iii11I = { + 1: "关注店铺", + 2: "浏览店铺", + 3: "浏览商品", + 4: "浏览会场/直播", + 5: "关注商品", + 6: "预约商品", + 7: "加购商品", + 8: "购买商品", + 9: "分享商品", + 10: "分享店铺", + 11: "分享会场", + 12: "分享活动", + 13: "会员开卡", + 14: "每日签到", + 15: "邀请助力", + 22: "购买商品" + }, + III1I1ii = await this.lzkjApi("api/basic/task/toDo", { + "taskId": illi11ii, + "skuId": Ii1ill1 + }); + if (III1I1ii && III1I1ii.resp_code === 0) { + return this.log("任务[" + (iii11I[IIiIl1Ii] || illi11ii || IIiIl1Ii) + "]完成"), true; + } + return false; + } + async["lzkjTask"](ilIl11i = []) { + try { + if (ilIl11i.length > 0) { + for (let liIli1li of ilIl11i) { + if (liIli1li.status === 1) continue; + const { + taskType: iIi1ll1I, + taskId: iIllll, + completeCount: I1I11il1, + oneClickPurchase: iIi1i1ii, + finishNum: Il1IIIi1, + maxNum: iIi1II11, + oneClickFollowPurchase: l1liI1Ii, + activeLimit = {} + } = liIli1li; + if ([8, 13, 15, 22].includes(iIi1ll1I)) continue; + if ([1, 14].includes(iIi1ll1I)) { + await this.lzkjToDo(iIllll, "", iIi1ll1I); + continue; + } + if (iIi1i1ii === 0 || l1liI1Ii === 0) { + await this.lzkjToDo(iIllll, "", iIi1ll1I); + continue; + } + let ilIIi1iI = liIli1li.shareCount || liIli1li.completeCount || 0, + IIli1II = (iIi1II11 ?? activeLimit?.["limitNum"] ?? 1) * Il1IIIi1; + if (ilIIi1iI < IIli1II) { + let I1iliili = liIli1li?.["skuInfoVO"]?.["filter"](liliiIi => liliiIi?.["status"] === 0); + for (let lllIl1li = 0; lllIl1li < IIli1II; lllIl1li++) { + await this.lzkjToDo(iIllll, I1iliili?.[lllIl1li]?.["skuId"] || "", iIi1ll1I); + ilIIi1iI++; + if (ilIIi1iI >= IIli1II) break; + } + } + } + } + } catch (i11l1iii) { + this.log(i11l1iii.message); + } + } + async["acquire"](l1ii1l1l) { + let iI1I11l = await this.lzkjApi("api/prize/receive/acquire", { + "prizeInfoId": l1ii1l1l, + "status": 1 + }); + if (iI1I11l && iI1I11l.resp_code === 0) { + this.putMsg(iI1I11l.data?.["prizeName"]); + iI1I11l.data.prizeType === 3 && (this.addressId = iI1I11l.data?.["addressId"], this.prizeName = iI1I11l.data?.["prizeName"], await this.saveAddress()); + return; + } + this.putMsg(iI1I11l?.["resp_msg"]); + this.wxStop(iI1I11l?.["resp_msg"]); + } + async["lzkjApi"](i1i1Ilil, IiIIiIlI = {}) { + return await this.taskPostByJson(i1i1Ilil, IiIIiIlI, { + "token": this.token + }); + } + ["getHmacSha256Sign"](il1II1i1, i1IlliIl) { + const ilIiil1l = "actid" + this.activityId + "buyernick" + this.aesBuyerNick + "sysmethod" + il1II1i1 + "timestamp" + i1IlliIl; + return this.hmacSHA256(this.getCookieByName("_sk") || "1111", ilIiil1l); + } + async["hdbApi"](li11liiI, liIiIi1i = {}, Il11lii1 = false, Iiill1ll = true) { + let IiIi1iIi = Il11lii1 ? "/front/task/" + li11liiI : "/front/activity/" + li11liiI, + iIlI1i1I = await this.taskPostByJson(IiIi1iIi, { + "appJsonParams": { + "id": this.activityId, + "userId": this.userId, + "method": IiIi1iIi, + "buyerNick": this.aesBuyerNick, + ...liIiIi1i + } + }); + if (iIlI1i1I && /数字签名不匹配|数字签名已失效|用户未登录/.exec(iIlI1i1I?.["message"]) && Iiill1ll) return await this.login(), await this.hdbApi(li11liiI, liIiIi1i, Il11lii1, false); + return iIlI1i1I; + } + async["loadFrontAct"]() { + let iIlIi11I = await this.hdbApi("loadFrontAct"); + if (iIlIi11I && iIlIi11I?.["succ"]) { + IlIIlIli.activity.shopName = iIlIi11I?.["result"]?.["activity"]?.["shopTitle"]; + let ll1lilll = iIlIi11I.result?.["activity"]?.["startTime"], + i1I11I1I = iIlIi11I.result?.["activity"]?.["endTime"], + IiIiIll1 = iIlIi11I.result?.["user"]?.["shopId"], + I11Ilil = iIlIi11I.result?.["user"]?.["venderId"]; + this.shopId = IiIiIll1; + this.venderId = I11Ilil; + IlIIlIli.activity.actType = iIlIi11I.result?.["activity"]?.["actType"]; + IlIIlIli.activity = { + ...IlIIlIli.activity, + "shopId": IiIiIll1, + "venderId": I11Ilil, + "startTime": ll1lilll, + "endTime": i1I11I1I + }; + let prizedata = iIlIi11I.result.activity.remark; + IlIIlIli.activity.hdbprizedata = prizedata; + await this.loadFrontAward(this.hdbPrefix + "front/activity/loadFrontAward"); + ll1lilll && ll1lilll > Date.now() && (this.putMsg("活动未开始"), IlIIlIli.activity.noStart = true, this.stop()); + if (i1I11I1I && i1I11I1I < Date.now()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + } + } + } + async["reportPVUV"]() { + await this.hdbApi("reportPVUV"); + } + async["loadFrontAward"]() { + let IIIilIlI = await this.hdbApi("loadFrontAward"); + if (IIIilIlI && IIIilIlI.succ) { + // this.prizeList = IIIilIlI.result ?? []; + let prizes = IIIilIlI.result || [] + IlIIlIli.activity.prizeList = prizes; + IlIIlIli.activity.prizeList.length > 0 && IlIIlIli.activity.prizeList.filter(IIIIiIil => !["JD_D_COUPON"].includes(IIIIiIil.awardType)).length === 0 && (this.putMsg("垃圾活动"), this.stop()); + } + return IIIilIlI; + } + ["formatDateString"](llliliIl) { + if (llliliIl?.["match"](/\d{4}年\d{1,2}月\d{1,2}日\d{2}:\d{2}:\d{2}/)) return llliliIl.replace(/(\d{4})年(\d{1,2})月(\d{1,2})日(\d{2}:\d{2}:\d{2})/, "$1-$2-$3 $4"); + return llliliIl; + } + async["getRuleSETime"](illiIli1 = this.rule) { + const IlilIiii = /(\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}|\d{4}-\d{1,2}-\d{1,2}\s\d{2}:\d{2}:\d{2}|\d{4}年\d{1,2}月\d{1,2}日\d{2}:\d{2}:\d{2})/g, + I1IlI1li = illiIli1.match(IlilIiii); + if (I1IlI1li) { + const illI11lI = this.formatDateString(I1IlI1li[0]), + Il11ll = this.formatDateString(I1IlI1li[1]); + this.startTime = new Date(illI11lI).getTime(); + this.endTime = new Date(Il11ll).getTime(); + IlIIlIli.activity.startTime = this.startTime; + IlIIlIli.activity.endTime = this.endTime; + this.startTime && this.startTime > Date.now() && (this.putMsg("活动未开始"), IlIIlIli.activity.noStart = true, this.stop()); + this.endTime && this.endTime < Date.now() && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()); + } + } + async["jinggengShopInfo"]() { + let iiilIlII = await this.taskGet(this.activityUrl); + if (iiilIlII) { + let lIlll = lIl1ii.load(iiilIlII); + const lii1llli = lIlll("#shop_sid").attr("value"), + l1illi1l = lIlll("#shop_title").attr("value"), + actType = lIlll("#actType").attr("value"), + lIIiI1lI = lIlll("#description").text(); + this.debug("shop_sid", lii1llli); + this.shopId = lii1llli; + this.venderId = this.userId; + this.shopName = l1illi1l; + this.rule = lIIiI1lI; + this.buyerSign = lIlll('#buyerSign')?.val() || ''; + if (this.activityUrl.includes("loadBlindBox")) { + IlIIlIli.activity.prizeList = JSON.parse(lIlll('#jdEquityList').attr("value")); + } + if (this.activityUrl.includes("showDrawOne")) { + IlIIlIli.activity.prizeList = JSON.parse(lIlll('#awards', 'body').text()); + } + if (this.activityUrl.includes("showSign")) { + let description = this.rule.replace(/;/g, '\n'); + let dailySignIn = []; + let continuousSignIn = []; + for (const item of description.split("\n")) { + let dailySignInMatch = item.match(/每日签到赠送(\d+)([\u4e00-\u9fa5]{2})/); + if (dailySignInMatch) { + dailySignIn.push({ + type: "每日签到", + quantity: parseInt(dailySignInMatch[1]), + unit: (dailySignInMatch[2]) + }); + } + let continuousSignInMatch = item.match(/连续签到(\d+)天,赠送(\d+)([\u4e00-\u9fa5]{2})/); + if (continuousSignInMatch) { + continuousSignIn.push({ + type: "连续签到", + dayNum: parseInt(continuousSignInMatch[1]), + quantity: parseInt(continuousSignInMatch[2]), + unit: continuousSignInMatch[3] + }); + } + } + IlIIlIli.activity.prizeList = [...dailySignIn, ...continuousSignIn]; + } + const IllIll11 = lIlll("title").text(); + return IlIIlIli.activity.shopName = this.shopName, IlIIlIli.activity.shopId = this.shopId, IlIIlIli.activity.venderId = this.venderId, IlIIlIli.activity.actType = actType, await this.getRuleSETime(lIIiI1lI), IllIll11?.["includes"]("已结束") && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()), lIlll; + } + return undefined; + } + async["setMixNick"](IllillI = this.isvToken) { + let IlII1i1 = await this.taskPost("front/setMixNick", { + "strTMMixNick": IllillI, + "userId": this.userId, + "source": "01" + }); + return this.debug(IlII1i1), IlII1i1 && IlII1i1.succ && (this.mixNick = IlII1i1?.["msg"]), IlII1i1 && IlII1i1?.["msg"]?.["includes"]("商家token过期") && (this.putMsg("商家token过期"), this.stop()), !this.mixNick && (this.putMsg("获取mixNick失败"), this.exit()), IlII1i1; + } + async["jinggengApi"](Iill1llI, I1illiI = {}) { + let I1Il1l1I = await this.taskPost("ql/front/" + Iill1llI, { + "act_id": this.activityId, + "user_id": this.userId, + ...I1illiI + }, { + "buyerSign": this.buyerSign + }); + return I1Il1l1I; + } + async["gzslApi"](l1lliil1, i1lIiiI = {}, Illl1lII = false) { + let Iil1l1 = { + "token": this.isvToken, + "source": "01", + "id": this.activityId, + ...i1lIiiI + }; + + Illl1lII && (Iil1l1.wxToken = this.isvToken); + let li1II1il = await this.taskPostByJson("wuxian/user/" + l1lliil1 + "/" + this.activityId + (Illl1lII ? "?wxToken=" + encodeURIComponent(this.isvToken) : ""), Iil1l1); + return li1II1il; + } + async["hzbzInfo"]() { + let lI1liilI = await this.taskGet(this.activityUrl); + if (!lI1liilI) return; + let lIiliI11 = this.textToHtml(lI1liilI), + i1il1Ili = lIiliI11("#draw_info").text(); + i1il1Ili = this.parseJSON(i1il1Ili); + let iIIiI111 = i1il1Ili?.["stime"] || 0, + IIlIll1I = i1il1Ili?.["etime"] || 0; + this.shopName = i1il1Ili?.["shopName"]; + this.shopId = i1il1Ili?.["shopId"]; + this.rule = i1il1Ili?.["drawRule"]; + IlIIlIli.activity.shopId = this.shopId; + IlIIlIli.activity.venderId = this.shopId; + IlIIlIli.activity.shopName = this.shopName; + IlIIlIli.activity.startTime = iIIiI111; + IlIIlIli.activity.endTime = IIlIll1I; + if (iIIiI111 && iIIiI111 > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (IIlIll1I && IIlIll1I < this.timestamp()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + return lIiliI11; + } + async["hzbzApi"](lilli1i1, liI1liI = {}) { + let l1iilI1 = await this.taskPost("bigdraw/" + lilli1i1, liI1liI); + return l1iilI1; + } + // async ["v2Api"](llII1iI, I1IIiiii = undefined) { + // let ii1Ii1li = await this.taskPostByJson(llII1iI, this.encryptCrypto("AES", "CBC", "Pkcs7", "2JjUvJEAsA2Yog==", JSON.stringify(I1IIiiii, null, 2), "Hd5W5ONsYKmGm9QA")); + // return ii1Ii1li && ii1Ii1li.data && (ii1Ii1li.data = ii1Ii1li?.["data"] ? this.str2Json(this.decryptCrypto("AES", "CBC", "Pkcs7", "2JjUvJEAsA2Yog==", ii1Ii1li.data, "Hd5W5ONsYKmGm9QA")) : ii1Ii1li.data), ii1Ii1li; + // } + async["v2Api"](I1111lii, l11llII = undefined) { + let I1Ill = await this.taskPostByJson(I1111lii, this.encryptCrypto("AES", "CBC", "Pkcs7", "2JjUvJEAsA2Yog==", JSON.stringify(l11llII, null, 2), "Hd5W5ONsYKmGm9QA")); + return I1Ill && I1Ill.data && (I1Ill.data = I1Ill?.["data"] ? this.str2Json(this.isDataEncrypted(I1Ill.data) ? this.decryptCrypto("AES", "CBC", "Pkcs7", "2JjUvJEAsA2Yog==", I1Ill.data, "Hd5W5ONsYKmGm9QA") : I1Ill.data) : I1Ill.data), I1Ill; + } + + ["isDataEncrypted"](str) { + try { + // 尝试对字符串进行Base64解码 + const decodedStr = atob(str); + // 检查解码后的字符串是否包含可读字符 + return !/ ^ [\x00 -\x7F] *$/.test(decodedStr); // 如果不全是ASCII字符,则可能是加密的 + } + catch (err) { + // 如果解码失败,说明不是有效的Base64字符串 + return false; + } + } + async["getActivityBase"]() { + let Iiii1iil = await this.v2Api("api/common/getActivityBase"); + // this.debug(Iiii1iil); + if (Iiii1iil && Iiii1iil.code === 200) { + this.shopName = Iiii1iil.data.shopName; + let IiilIil1 = Iiii1iil.data.startTime, + IliIliIl = Iiii1iil.data.endTime, + jdActivityType = Iiii1iil.data.jdActivityType, + IIlIli = Iiii1iil.data.openCardLink ?? ""; + this.venderId = this.getQueryString(IIlIli, "venderId") ?? this.shopId; + IiilIil1 && IiilIil1 > this.timestamp() && (this.putMsg("活动未开始"), IlIIlIli.activity.noStart = true, this.stop()); + IliIliIl && IliIliIl < this.timestamp() && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()); + let li1Ii11I = Iiii1iil.data.thresholdResponseList ?? []; + for (let illi1l11 of li1Ii11I) { + if (illi1l11?.["type"] === 2 || illi1l11?.["type"] === 1) { + await this.v2Api("api/common/followShop"); + if (illi1l11?.["type"] === 1) this.openCard = false; + continue; + } + } + IlIIlIli.activity.shopName = this.shopName; + IlIIlIli.activity.startTime = IiilIil1; + IlIIlIli.activity.endTime = IliIliIl; + IlIIlIli.activity.shopId = this.shopId; + IlIIlIli.activity.venderId = this.venderId; + IlIIlIli.activity.activityType = jdActivityType; + return; + } + this.putMsg(Iiii1iil?.["message"] || "获取活动信息失败"); + this.wxStop(Iiii1iil?.["message"]); + this.exit(); + } + async["v2getRule"]() { + let Iiii1iil = await this.taskGet("api/common/getRule"); + if (Iiii1iil && Iiii1iil.code === 200) { + let prizedata = Iiii1iil.data; + IlIIlIli.activity.prizedata = prizedata; + return; + } + this.exit(); + } + async["v2getPrizes"]() { + let Iiii1iil = await this.v2Api("api/" + this.activityType + "/getPrizes"); + this.debug(Iiii1iil); + if (Iiii1iil && Iiii1iil.code === 200) { + let prizeList = Iiii1iil.data; + IlIIlIli.activity.prizeList = prizeList; + return; + } + this.exit(); + } + async["v2getPrizeList"]() { + let Iiii1iil = await this.v2Api("api/" + this.activityType + "/getPrizeList"); + this.debug(Iiii1iil); + if (Iiii1iil && Iiii1iil.code === 200) { + let prizeList = Iiii1iil.data; + IlIIlIli.activity.prizeList = prizeList; + return; + } + this.exit(); + } + async["v2Task"]() { + let l11lIii = await this.v2Api("api/" + this.activityType + "/getTask"); + this.debug(l11lIii); + if (l11lIii && l11lIii.code === 200) { + let llI1lIll = l11lIii?.["data"] || []; + for (let liIIiIli of llI1lIll) { + if (liIIiIli.taskFinishGiveAllLotteryCount >= liIIiIli.totalLimit) continue; + switch (liIIiIli.taskType) { + case 2: + case 10: + case 12: + await this.v2ToDoTask(liIIiIli.taskType); + break; + case 5: + case 7: + case 9: + if ([5, 7].includes(liIIiIli.taskType) && liIIiIli.optWay === 2) { + this.debug("一键任务"); + await this.v2ToDoTask(liIIiIli.taskType); + break; + } + let IiI1il1l = liIIiIli.taskType === 5 ? "getFollowSkuTaskSkuList" : liIIiIli.taskType === 7 ? "getTaskAddSku" : "getShareSkuTaskSkuList", + i11Iilll = await this.v2Api("api/" + this.activityType + "/" + IiI1il1l), + i1Iili1 = [5, 9].includes(liIIiIli.taskType) ? i11Iilll?.["data"]?.["filter"](lIli1II => !lIli1II.isOperated) || [] : i11Iilll?.["data"]?.["filter"](ll1Iil11 => ll1Iil11.status === 0) || []; + for (let l1I1l1il = liIIiIli.taskUnitFinishCount || 0; l1I1l1il < Math.min(liIIiIli.perOperateCount * liIIiIli.limit, i1Iili1.length); l1I1l1il++) { + await this.v2ToDoTask(liIIiIli.taskType, i1Iili1.shift().skuId); + } + break; + } + } + } + } + async["v2ToDoTask"](liil1iII, liliI11I = "", iiIiIIii = null) { + let IllII1il = { + 2: "浏览店铺", + 5: "关注商品", + 7: "加购商品", + 8: "购买商品", + 9: "分享商品", + 10: "分享店铺", + 12: "分享活动" + }, + lIi1lI1 = iiIiIIii ?? { + 2: "browseShop", + 5: "followSku", + 7: "addSku", + 9: "shareSku", + 10: "shareShop", + 12: "shareActivity" + }, + il11iil = await this.v2Api("api/" + this.activityType + "/" + lIi1lI1[liil1iII], { + "skuId": liliI11I + }); + this.debug(il11iil, "api/" + this.activityType + "/" + lIi1lI1[liil1iII], liliI11I); + if (il11iil && il11iil.code === 200) return this.log("任务[" + (IllII1il[liil1iII] || liliI11I || liil1iII) + "]完成"), il11iil.data; + } +} +class lI1l11l1 { + constructor(iIillIii) { + this.activityUrl = iIillIii; + this.switchInterval = iIl1IlI1.wxProxyInterval; + this.proxyEnable = false; + this.proxyState = true; + this.wxProxyMode = iIl1IlI1.wxProxyMode; + this.proxie = null; + this.currentIndex = 0; + this.isLocked = false; + this.wxProxyCheck = iIl1IlI1.wxProxyCheck; + this.subscriptionUrls = typeof iIl1IlI1.wxProxyUrl === "string" ? iIl1IlI1.wxProxyUrl.split("@").filter(i1lIil1i => i1lIil1i && i1lIil1i.trim()).map((l1iIi1i, IIiI1Iii) => { + return { + "name": IIiI1Iii + 1, + "url": l1iIi1i, + "priority": 1, + "enabled": true + }; + }) : iIl1IlI1.wxProxyUrl.filter(Ii1iI1 => Ii1iI1.enabled).sort((illiii11, ll11IIIl) => ll11IIIl.priority - illiii11.priority); + } + ["log"](...Il1iIlIl) { + iIl1IlI1.logger.info("proxy|", ...Il1iIlIl); + } + ["updateProxyEnable"](Iiillii) { + !Iiillii && (this.proxie = null, this.proxyState = false); + this.proxyEnable = Iiillii; + } + async ["acquireLock"]() { + if (!this.isLocked) return this.isLocked = true, {}; + while (this.isLocked) { + await new Promise(iilI1l => setTimeout(iilI1l, 100)); + } + return {}; + } + ["releaseLock"]() { + this.isLocked = false; + } + async ["fetchProxies"](liI111li = 10) { + if (this.subscriptionUrls.length === 0) return this.log("没有启用的代理订阅地址"), false; + let lll1111 = 0; + const { + name = lll1111, + url: iilI1Il1 + } = this.subscriptionUrls[lll1111]; + try { + const Ii1lIIIl = await IliilIlI.get(iilI1Il1), + il11l1Ii = typeof Ii1lIIIl.data === "object" && Ii1lIIIl.data !== null ? JSON.stringify(Ii1lIIIl.data) : Ii1lIIIl.data, + i111IlIl = /((\w+:\w+@\w+\.\w+:\d+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+)|([\w-]+\.[\w.-]+:\d+))(?![\u4e00-\u9fa5])/g, + i1lIIil1 = il11l1Ii.match(i111IlIl); + if (i1lIIil1) { + this.log("已成功从[" + name + "]提取[" + i1lIIil1.length + "]ip"); + if (this.wxProxyMode === 2) this.proxie = i1lIIil1; else { + this.proxie = [i1lIIil1[0]]; + this.log("获取到的ip:" + this.proxie[0]); + if (this.wxProxyCheck === 1 && !(await this.checkPing(this.proxie[0]))) { + if (liI111li > 0) { + return this.log(this.proxie[0] + "不通,正在重新获取..."), await new Promise(iliII111 => setTimeout(iliII111, 2000)), await this.fetchProxies(liI111li - 1); + } else return false; + } + } + return true; + } else { + this.log(il11l1Ii); + const illllIi1 = "[" + name + "]提取ip失败"; + this.subscriptionUrls.splice(lll1111, 1); + if (this.subscriptionUrls.length === 0) return this.log(illllIi1 + ",已无可用代理地址,退出代理"), false; + return this.log(illllIi1 + ",降级提取"), await this.fetchProxies(liI111li - 1); + } + } catch (I1IliI1l) { + const lI11i11l = "[" + name + "]订阅地址失效"; + this.subscriptionUrls.splice(lll1111, 1); + if (this.subscriptionUrls.length === 0) { + return this.log(lI11i11l + ",已无可用代理地址,退出代理"), false; + } + return this.log(lI11i11l + ",降级提取"), await this.fetchProxies(liI111li); + } + } + async ["setCurrentProxy"](lIlliIII = false) { + if (!this.proxyState) return false; + if (!lIlliIII && this.wxProxyMode === 2 && this.proxie?.["length"] > 0) return true; + if (!this.isLocked) { + this.lock = await this.acquireLock(); + try { + if (this.subscriptionUrls.length === 0) return false; + if (!(await this.fetchProxies())) return this.log("获取代理ip失败,退出代理"), this.updateProxyEnable(false), false; + return true; + } finally { + this.releaseLock(); + } + } else return await this.acquireLock(), true; + } + async ["getProxy"](Ill1Ili = 10) { + let i111ll1 = this.proxie.shift(); + if (!i111ll1 && Ill1Ili <= 0) return null; + if (!i111ll1) return await this.setCurrentProxy(), await this.getProxy(Ill1Ili - 1); + if (this.wxProxyCheck === 1 && !(await this.checkPing(i111ll1))) return Ill1Ili > 0 ? (this.log(i111ll1 + "不通,正在重新获取..."), await this.getProxy(Ill1Ili - 1)) : null; + return i111ll1; + } + ["cleanProxy"]() { + this.proxie = null; + } + async ["getCurrentProxy"]() { + if (!this.proxyEnable) { + return null; + } + return (!this.proxie || this.proxie?.["length"] === 0) && (await this.setCurrentProxy()), this.proxie ? this.proxie.length === 1 && this.wxProxyMode === 1 ? this.proxie[0] : await this.getProxy() : null; + } + async ["checkPing"](liI1iiii) { + try { + const liil1li = liI1iiii.split(":"); + if (liil1li.length !== 2) return false; + return await I1II1lIl({ + "url": this.activityUrl || "https://www.jd.com", + "headers": { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" + }, + "httpsAgent": new IIIlIII1("http://" + liI1iiii), + "timeout": 4000 + }), true; + } catch (ii1I1IIl) { + return false; + } + } +} +class iIIIili1 { + constructor(iI111iii, Illliill) { + this.cookies = iI111iii; + this.TaskClass = Illliill; + this._tasks = {}; + } + *["taskGenerator"]() { + for (let i1IIllii = 0; i1IIllii < this.cookies.length; i1IIllii++) { + !(i1IIllii in this._tasks) && (this._tasks[i1IIllii] = new this.TaskClass(i1IIllii, this.cookies[i1IIllii])); + yield this._tasks[i1IIllii]; + } + } + ["getTask"](iiI1li1i) { + return !(iiI1li1i in this._tasks) && iiI1li1i < this.cookies.length && (this._tasks[iiI1li1i] = new this.TaskClass(iiI1li1i, this.cookies[iiI1li1i])), this._tasks[iiI1li1i]; + } + get ["cookie_all_obj"]() { + const li11llli = this; + return new Proxy([], { + "get"(iIiilIi, Ill11li1) { + if (Ill11li1 === "length") return li11llli.cookies.length; + if (typeof Ill11li1 === "string" && !isNaN(Ill11li1)) { + const Il1I1lIl = Number(Ill11li1); + if (Il1I1lIl < li11llli.cookies.length) { + return li11llli.getTask(Il1I1lIl); + } + } + return iIiilIi[Ill11li1]; + }, + "ownKeys"() { + return Array.from({ + "length": li11llli.cookies.length + }, (i11lIii, iliIll1l) => String(iliIll1l)); + }, + "getOwnPropertyDescriptor"(ll1lII1, IlIiiI1I) { + if (typeof IlIiiI1I === "string" && !isNaN(IlIiiI1I)) { + const lllliiI = Number(IlIiiI1I); + if (lllliiI < li11llli.cookies.length) { + return { + "configurable": true, + "enumerable": true, + "get": () => li11llli.cookie_all_obj[lllliiI], + "set": lI1lliI => { + li11llli.cookie_all_obj[lllliiI] = lI1lliI; + } + }; + } + } + return undefined; + } + }); + } + ["filter"](li1iii) { + const lilIlili = []; + for (let l1i1li1 = 0; l1i1li1 < this.cookies.length; l1i1li1++) { + const Il1IIIIl = this.getTask(l1i1li1); + li1iii(Il1IIIIl) && lilIlili.push(Il1IIIIl); + } + return lilIlili; + } + ["map"](ll1ii1iI) { + const lIlllIl1 = []; + for (let l11IlI1i = 0; l11IlI1i < this.cookies.length; l11IlI1i++) { + const lIl1II11 = this.getTask(l11IlI1i); + lIlllIl1.push(ll1ii1iI(lIl1II11)); + } + return lIlllIl1; + } + ["forEach"](il1ilI1I) { + for (let ili1lI1i = 0; ili1lI1i < this.cookies.length; ili1lI1i++) { + const l1iIlll1 = this.getTask(ili1lI1i); + il1ilI1I(l1iIlll1); + } + } + ["find"](l1I11li1) { + for (let II1iiII = 0; II1iiII < this.cookies.length; II1iiII++) { + const liIlllIi = this.getTask(II1iiII); + if (l1I11li1(liIlllIi)) { + return liIlllIi; + } + } + return undefined; + } +} +class Iii1iI1i { + static ["activity"] = {}; + static ["msg"] = []; + static ["proxy"]; + static ["running"] = true; + static ["cookies"] = []; + static ["paddedStringEndCount"] = 0; + static ["concurrencyLimit"] = 0; + static ["version"] = "3.0.6"; + static ["envInfo"] = {}; + static ["cookieInit"]() { + let ii111i1l = [], + iiIII1i1 = []; + Object.keys(Il1ii11).forEach(iiI1lli1 => { + ii111i1l.push(Il1ii11[iiI1lli1]); + }); + if (iIl1IlI1.wxEnableOtherEnv === 2) { + let iI1IiIli = this.readFileSync("./env/ck.txt"); + iiIII1i1 = iI1IiIli.split("\n").map(lI1lIiI => lI1lIiI.trim()).filter(iliii1ii => iliii1ii !== ""); + ii111i1l = ii111i1l.concat(iiIII1i1.filter(l11111iI => !ii111i1l.includes(l11111iI))); + } + let IiI111Il = this.readFileSync("./env/invite_ck.txt"), + I1I1llI1 = IiI111Il.split("\n").map(II111ill => II111ill.trim()).filter(Il1ilII1 => Il1ilII1 !== ""); + return [ii111i1l, I1I1llI1]; + } + static ["log"](...iIl1I1) { + iIl1IlI1.logger.info("run |", ...iIl1I1); + } + static ["readFileSync"](ll1llIll) { + try { + return l1I11II1.readFileSync(ll1llIll, "utf-8").toString(); + } catch (I111IIiI) { + return ""; + } + } + static async ["runTasksConcurrentlyWithDelay"](ii1ilIl1, Iiiliill, iI1ili1, IiI1Iii = false, ilIl1l1 = true) { + const liliiiI1 = [], + lliiIliI = new Set(); + let ll111lI1 = this; + async function liI1lIii(Ilil111) { + try { + await new Promise(llI11IIi => setTimeout(llI11IIi, iI1ili1)); + const I111iili = await Ilil111(); + liliiiI1.push(I111iili); + } catch (ii1Illi1) { + if (ii1Illi1 instanceof i1I1IiII) { + ll111lI1.running = false; + ll111lI1.centralReject(new i1I1IiII()); + } else { + if (ii1Illi1 instanceof iiiIIIll) { } else ll111lI1.log(ii1Illi1?.["message"] || ii1Illi1); + } + } + } + for (const il1llIlI of ii1ilIl1) { + if (!this.running && ilIl1l1) break; + const lI1lIii1 = IiI1Iii ? this.concurrencyLimit : Iiiliill; + lliiIliI.size >= lI1lIii1 && (await Promise.race(lliiIliI)); + const iIiIi1li = liI1lIii(il1llIlI); + lliiIliI.add(iIiIi1li); + iIiIi1li.then(() => lliiIliI.delete(iIiIi1li)); + } + const l1ll111 = new Promise((IiilII11, IIlIIil1) => { + ll111lI1.centralResolve = IiilII11; + ll111lI1.centralReject = IIlIIil1; + }); + return l1ll111.then(() => { + lliiIliI.forEach(iIiiIll1 => iIiiIll1.catch(() => { })); + }).catch(() => { }), await Promise.all(lliiIliI), liliiiI1; + } + static ["get_mains_obj"]() { + try { + let IIl1lli1 = this.taskManager.find(ill1iil1 => ill1iil1.index < this.cookieLength && ill1iil1.needHelp && !ill1iil1.isInviter); + if (iIl1IlI1.leaderNum && IIl1lli1.index >= iIl1IlI1.leaderNum) return null; + return IIl1lli1.isInviter = true, IIl1lli1; + } catch (i1Il1IIl) { + return null; + } + } + static ["get_Invite_obj"](liii1iiI = null, iiII1i1i = []) { + try { + if (liii1iiI?.["inviteMode"] === 2) { + let I1i1li = this.taskManager.find(llll1l1 => !llll1l1.isUse && llll1l1.canHelp && llll1l1.pin !== liii1iiI.pin); + return I1i1li.isUse = true, I1i1li; + } else { + if (liii1iiI?.["inviteMode"] === 1) { + const i1i1iili = iiII1i1i.map(IllIl1l => IllIl1l.pin); + let llllli1 = this.taskManager.find(lI1ilII1 => liii1iiI.pin != lI1ilII1.pin && lI1ilII1.canHelp && !i1i1iili.includes(lI1ilII1.pin)); + return llllli1; + } else { + let lI1il11i = this.taskManager.find(iliIl1I1 => !iliIl1I1.isUse && iliIl1I1.canHelp && !iliIl1I1.isInviter); + return lI1il11i.isUse = true, lI1il11i; + } + } + } catch (iiI11lIi) { + return null; + } + } + static ["stopAllThreads"]() { + ilIiilII.emit("stopAllThreads"); + } + static async ["checkAbortSignal"](Ii11lil, iiI1lIII) { + return new Promise((Il1I1il1, lIIll1ll) => { + iiI1lIII.addEventListener("abort", () => { + lIIll1ll(new lllli1iI("Aborted")); + }); + Ii11lil.then(Il1I1il1).catch(lIIll1ll); + }); + } + static async ["async_thread"](iiI1I111, II1Iili) { + const i1li1Ill = new li1Iil1(), + i1ll11il = i1li1Ill.signal; + ilIiilII.on("stopAllThreads", () => { + i1li1Ill.abort(); + }); + while (this.running) { + let lilIiIii = this.get_mains_obj(); + if (!lilIiIii) return; + try { + await this.checkAbortSignal(lilIiIii.userTask(), i1ll11il); + if (II1Iili?.["inviteTask"]) { + if (!lilIiIii.isBlack) { + if (lilIiIii.needHelp) { + lilIiIii.log("开始邀请"); + let i11lII11 = []; + while (lilIiIii.needHelp) { + let iliI1ilI = []; + if (lilIiIii.helpedCount >= IlIIlIli.activity.maxHelpCount) { + lilIiIii.needHelp = false; + lilIiIii.log("助力已满"); + break; + } + for (let iIIlIiIl = 0; iIIlIiIl < Math.abs(Math.min(...[IlIIlIli.activity.maxHelpCount - lilIiIii.helpedCount, II1Iili?.["thread"] || 1, IlIIlIli.activity.customThread].filter(Il1II1li => typeof Il1II1li === "number"))); iIIlIiIl++) { + let lIlI1Iil = this.get_Invite_obj(lilIiIii, i11lII11); + lIlI1Iil && (iliI1ilI.push(lIlI1Iil), i11lII11.push(lIlI1Iil)); + } + if (iliI1ilI.length === 0) { + lilIiIii.log("已无助力号,退出线程 threads[" + iiI1I111 + "]"); + return; + } + let l1IliiIl = []; + for (let iiiIl11 of iliI1ilI) { + l1IliiIl.push(() => iiiIl11.inviteTask(lilIiIii)); + } + await this.runTasksConcurrentlyWithDelay(l1IliiIl, l1IliiIl.length, 10); + } + } + } + } + } catch (iIl1IlIi) { + if (iIl1IlIi instanceof lllli1iI) { } else { + if (iIl1IlIi instanceof i1I1IiII) { + this.running = false; + this.stopAllThreads(); + } else { + if (iIl1IlIi instanceof iiiIIIll) { } else this.log(iIl1IlIi?.["message"] || iIl1IlIi); + } + } + } + } + } + static ["formatDate"](lIlIii1l, I1II1i1) { + return i1I1IlI1(typeof lIlIii1l === "object" ? lIlIii1l : new Date(typeof lIlIii1l === "string" ? lIlIii1l * 1 : lIlIii1l), I1II1i1 || "yyyy-MM-dd"); + } + static ["maskString"](iIIi, I11liI1, ll1ill, IiI1Ilii = 4) { + if (iIIi.length <= I11liI1 + ll1ill) { + return iIIi; + } + const i11IIlll = iIIi.slice(0, I11liI1), + Ili1I1i = iIIi.slice(-ll1ill), + Iil1llIi = "*".repeat(IiI1Ilii); + return i11IIlll + Iil1llIi + Ili1I1i; + } + static async ["notify"](I1lili1i, i1ilIi1 = {}) { + if (i1ilIi1?.["noPush"]) return; + const lIIllllI = Iii1iI1i.envInfo.name; + + let body = IlIIlIli.activity + console.log(body) + let prize = ""; + let lIliI1Ii = this.taskManager.filter(ll1Il1II => ll1Il1II.index < this.cookieLength && ll1Il1II.sendMsg?.["length"] > 0).map(IIII1iII => IIII1iII.index + 1 + "【" + (iIl1IlI1.messageMasked === 1 && !IIII1iII.remarks ? this.maskString(IIII1iII.pin, 2, 3, 4) : IIII1iII.remarks || IIII1iII.pin) + "】" + IIII1iII.sendMsg.join(",")).join("\n") + "\n\n"; + + if (IlIIlIli.activity.shopName) { + lIliI1Ii += "#" + IlIIlIli.activity.shopName + "\n"; + } + if (IlIIlIli.activity.shopId || IlIIlIli.activity.venderId) { + lIliI1Ii += "店铺信息:" + IlIIlIli.activity.shopId + "_" + IlIIlIli.activity.venderId + "\n"; + } + + IlIIlIli.activity.timeStr && (lIliI1Ii += "活动时间:" + IlIIlIli.activity.timeStr + "\n"); + if (!IlIIlIli.activity.timeStr && IlIIlIli.activity.startTime && IlIIlIli.activity.endTime) { + lIliI1Ii += "活动时间:" + this.formatDate(IlIIlIli.activity.startTime, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(IlIIlIli.activity.endTime, "yyyy-MM-dd HH:mm:ss") + "\n"; + } + if ((Array.isArray(body.prizeList) && body.prizeList.length > 0)) { + let msg = ["空气", "谢谢参与", "谢谢参与!", "再来一次"]; + + for (let i = 0; i < body.prizeList.length; i++) { + let list = body.prizeList[i]; + if (IlIIlIli.activity.daysign && i < IlIIlIli.activity.daysign.length) { // 确保索引在范围内 + this.daysign = IlIIlIli.activity.daysign[i]; // 使用索引 i + } + if (IlIIlIli.activity.prizeList1 && i < IlIIlIli.activity.prizeList1.length) { // 确保索引在范围内 + this.daysign1 = IlIIlIli.activity.prizeList1[i]; // 使用索引 i + } + if (body.actType) { + switch (body.actType) { + case "dzp": + case "jgg": + case "blind": + case "addCart": + case "gashapon": + case "pointDraw": + case "bestTicket": + case "interestSignAct": + lIliI1Ii += " " + list.awardName + " 剩" + list.awardSurplusQuantity + "份\n"; + break; + case "calendarSignAct": + lIliI1Ii += " " + list.awardName + " 剩" + list.awardTotalQuantity + "份\n"; + break; + case "Draw": + case "TaskDraw": + if (msg.includes(list.equityName)) continue; + if (list.equityName == "京豆") list.equityName = list.denomination + "京豆" + if (list.equityName == "京东") list.equityName = list.denomination + "京豆" + if (list.equityName == "积分") list.equityName = list.denomination + "积分" + if (list.equityName == "优惠券") list.equityName = list.denomination + "优惠券" + lIliI1Ii += " " + list.equityName + " 共" + list.availableQuantity + "/" + list.freezeQuantity + "份\n"; + break; + case "gzsl": + if (list.detail.includes("自定义奖品")) { + lIliI1Ii += " " + list.name + " 共" + list.totalNum + "份\n"; + } else { + lIliI1Ii += " " + list.detail + " 共" + list.totalNum + "份\n"; + } + break; + case "SignAct": + if (list.dayNum) { + lIliI1Ii += " " + list.type + " " + list.dayNum + "天, " + list.quantity + list.unit + "\n"; + } else { + lIliI1Ii += " " + list.type + ", " + list.quantity + list.unit + "\n"; + } + break; + case "CartItem": + lIliI1Ii += " " + list.replace(/[^(加购)\d+]\S+(?=\d+)/g, "件 ") + "\n"; + break; + case 10002: + case 10003: + lIliI1Ii += " " + this.daysign1.days + "天 " + list.prizeName + " 剩" + list.leftNum + "份\n"; + break; + case 10023: + case 10040: + lIliI1Ii += " " + this.daysign.signNumber + "天 " + list.prizeName + " 剩" + list.leftNum + "份\n"; + break; + default: + lIliI1Ii += " " + list.prizeName + " 剩" + list.leftNum + "份\n"; + } + } + if (body.activityType) { + switch (body.activityType) { + case 3: + case 4: + if (msg.includes(list.name)) continue; + lIliI1Ii += " " + "奖品名称:" + list.name + ",数量:" + list.totalNum + "\n"; + break; + case 5: + case 6: + case 12: + case 13: + case 124: + case 125: + case 128: + case 129: + if (list.name) { + list = list.name; + if (msg.includes(list)) continue + } + lIliI1Ii += " " + list + "\n"; + break; + case 26: + lIliI1Ii += " 加" + list.skuNum + "件," + list.prizeName + ",共" + list.surplus + "份,今日剩余" + list.todayNum + "份\n"; + break; + case 15: + case 18: + case 133: + if (list.gift) + lIliI1Ii += " " + (list.dayNum) + "天 " + (list.gift.giftName) + " " + (list.gift.giftTotal) + "份 " + (list.gift.insufficient ? "已发完\n" : "\n"); + break; + case 10020: + case 30003: + if (msg.includes(list.prizeName)) continue + lIliI1Ii += " " + list.prizeName + "\n"; + break; + case 25: + case 28: + lIliI1Ii += " " + list.prizeName + "\n"; + break; + case 27: + let name = "未知", + days = list.signDays; + if (list.signDays == 0) days = "每"; + if (list.prizeImg.includes("2089.png")) name = "积分"; + if (list.prizeImg.includes("4146.png")) name = "京豆"; + if (list.prizeImg.includes("1612.png")) name = "优惠券"; + if (list.prizeImg.includes("jpg")) name = "实物"; + lIliI1Ii += " " + days + "天 " + name + " 剩" + list.remainNum + "份\n"; + break; + default: + lIliI1Ii += " " + list + "\n"; + } + } + } + } + if (IlIIlIli.activity.prizedata) { + let info = IlIIlIli.activity.prizedata; + let match = info.match(/符合.*?(?=\n\d+|$)/s); + if (match) { + let info1 = match[0].trim(); + let match1 = info1.match(/(1).*?(?=\n\d+|$)/s); + let prizedata = match1[0].trim(); + lIliI1Ii += "活动规则:\n" + prizedata + "\n"; + } + } + if (IlIIlIli.activity.hdbprizedata) { + let info = IlIIlIli.activity.hdbprizedata; + let match = info.match(/奖项设置.*?:\s*(.*?)\n\s*\d+\./s); + if (match) { + let prizedata = match[1].trim(); + lIliI1Ii += "活动规则:\n" + prizedata + "\n"; + } + } + IlIIlIli.activity.drawTimeStr && (lIliI1Ii += "开奖时间:" + IlIIlIli.activity.drawTimeStr + "\n"), this.activity.activityUrl && !i1ilIi1?.["noPushUrl"] && (lIliI1Ii += prize += "export " + Iii1iI1i.envInfo.env + "=\"" + this.activity.activityUrl + "\"\n\n"), IlIIlIli.activity.shopId && (lIliI1Ii += "https://shop.m.jd.com/shop/home?shopId=" + IlIIlIli.activity.shopId + "\n\n"), lIliI1Ii += "时间:" + i1I1IlI1(Date.now(), "yyyy-MM-dd HH:mm:ss.SSS") + " 时长:" + I1lili1i + "s\n小熊京东活动通知", await liIliiiI.sendNotify(lIIllllI, lIliI1Ii), lIliI1Ii; + } + static async ["sendMessage"](i1llil, il1llI1, II1i1111, l11111 = 0, iIIlIl1I = 1) { + let illiil1l = { + "url": "https://" + (process.env.TG_API_HOST ?? "api.telegram.org") + "/bot" + i1llil + "/sendMessage", + "data": { + "chat_id": il1llI1, + "text": II1i1111, + "disable_web_page_preview": true + }, + "headers": { + "Content-Type": "application/json", + "Cookie": "10089" + }, + "timeout": 15000 + }, + { + data: il111l1l + } = await IliilIlI(illiil1l); + this.log("发送数据", II1i1111); + il111l1l.ok && (await this.checkWriteToRedis(II1i1111, l11111)); + if (!il111l1l?.["ok"] && iIIlIl1I === 1) { + this.log("重试中", II1i1111); + await this.sendMessage(il1llI1, II1i1111, l11111, iIIlIl1I++); + } + } + static #universalCaesarCipher(ll1illi1, Ii1I1ill) { + return ll1illi1.split("").map(l1I1lIl1 => this.#shiftCharUniversal(l1I1lIl1, Ii1I1ill)).join(""); + } + static #shiftCharUniversal(lilIii1, il1lIl1I) { + const i1l1liIl = lilIii1.charCodeAt(0); + if (i1l1liIl >= 32 && i1l1liIl <= 126) return String.fromCharCode((i1l1liIl - 32 + il1lIl1I) % 95 + 32); + return lilIii1; + } + static ["timestampToCron"](Iili1iI) { + const lIII1Ill = new Date(Iili1iI), + liI1I1iI = lIII1Ill.getSeconds(), + liI1iiI1 = lIII1Ill.getMinutes(), + li1lI = lIII1Ill.getHours(), + IIII11II = lIII1Ill.getDate(), + i1iiliI = lIII1Ill.getMonth() + 1, + ll1iii = liI1I1iI + " " + liI1iiI1 + " " + li1lI + " " + IIII11II + " " + i1iiliI + " *"; + return ll1iii; + } + static ["sendTimeNotify"]() { + let i1lIlI = []; + return IlIIlIli.activity.sendStartFiexd && i1lIlI.push(() => this.sendMessage(iI111l1i.scheduleTgBotToken, iI111l1i.scheduleTgUserId, "spy定时插队 " + this.timestampToCron(IlIIlIli.activity.startTime - 3000) + " " + this.activity.activityUrl, 0)), IlIIlIli.activity.sendDrawFiexd && i1lIlI.push(() => this.sendMessage(iI111l1i.scheduleTgBotToken, iI111l1i.scheduleTgUserId, "spy定时插队 " + this.timestampToCron(IlIIlIli.activity.drawTime - 3000) + " " + this.activity.activityUrl, 1)), i1lIlI; + } + static ["sendNotifyToUser"]() { + let Ii1I1i1i = []; + if (iIl1IlI1.messageSingle === 1 && iI111l1i.pushTgBotToken) { + const Ii11iiI = /计划余额不足|无法发放|当天已经兑完/, + IiillIii = Iii1iI1i.envInfo.name, + i1Illlll = this.activity.activityUrl ? "活动链接:" + this.activity.activityUrl + "\n\n" : "", + lIIl1I = "通知时间: " + i1I1IlI1(Date.now(), "yyyy-MM-dd HH:mm:ss.SSS") + "\nBy: 京东通知"; + for (let IiiiI1iI of this.taskManager.cookie_all_obj) { + if (IiiiI1iI.tg_id && IiiiI1iI.sendMsg.length > 0 && IiiiI1iI.sendMsg.some(i1IiIi1I => i1IiIi1I.match(iIl1IlI1.pushRuleRegx) && !Ii11iiI.test(i1IiIi1I))) { + let I11iIi1 = "【" + IiiiI1iI.pin + "】" + IiiiI1iI.sendMsg.join(",") + "\n\n", + l1llIlI1 = iI111l1i.pushUserDetail?.["split"]("|")?.["includes"](IiiiI1iI.pin) ? IiillIii + "\n\n" + I11iIi1 + i1Illlll : I11iIi1; + l1llIlI1 += lIIl1I; + Ii1I1i1i.push(() => this.sendMessage(iI111l1i.pushTgBotToken, IiiiI1iI.tg_id, l1llIlI1)); + } + } + } + return Ii1I1i1i; + } + static ["__as"](IlIIllll) { + const IllIIi1I = []; + for (let IllliIiI of IlIIllll) { + if (typeof IllliIiI === "string") { + const iili1IlI = IllliIiI.split("-"), + Iii11III = parseInt(iili1IlI[0], 10), + lIliIIii = parseInt(iili1IlI[1], 10); + if (lIliIIii - Iii11III === 1) { + IllIIi1I.push(Iii11III, lIliIIii); + } else { + let i1lI1i1 = Array.from({ + "length": lIliIIii - Iii11III + 1 + }, (illlIiI, ii1i1IiI) => Iii11III + ii1i1IiI); + IllIIi1I.push(...i1lI1i1); + } + } else { + IllIIi1I.push(IllliIiI); + } + } + return IllIIi1I; + } + static async #au() { + try { + let l111llIl = await IliilIlI({ + "url": this.#universalCaesarCipher("kwws=227:143<14661;7=:<:<2dxwk0ehdu", -3), + "method": "POST", + "data": { + "fn": this.envInfo.runName + }, + "headers": { + "Content-Type": "application/json", + "token": iI111l1i.apiToken, + "_ts": Date.now(), + "_vs": this.version, + "_isv": this.envInfo.version, + } + }); + l111llIl && l111llIl.data && l111llIl.data.success ? this.auth = l111llIl.data?.["data"]?.["auth"] ?? 0 : (this.log(l111llIl?.["data"]?.["msg"] || "鉴权失败"), process.exit(0)); + } catch (IIilllI1) { + this.log("鉴权失败,请联系作者", IIilllI1.message); + process.exit(0); + } + } + static #overwriteConfig(ii1ii1i) { + if (this.auth !== 1 && ii1ii1i.inviteTask) { + ii1ii1i.main_thread = 1; + iIl1IlI1.leaderNum = Math.min(iIl1IlI1.leaderNum, 10); + } + } + static ["match"](ll11i1li, i1I1l11) { + ll11i1li = ll11i1li instanceof Array ? ll11i1li : [ll11i1li]; + for (let l1l11i1I of ll11i1li) { + const IIl1IIi1 = l1l11i1I.exec(i1I1l11); + if (IIl1IIi1) { + const iliilIlI = IIl1IIi1.length; + if (iliilIlI === 1) { + return IIl1IIi1; + } else { + if (iliilIlI === 2) return IIl1IIi1[1]; else { + const l11l11i = []; + for (let i1liIiII = 1; i1liIiII < iliilIlI; i1liIiII++) { + l11l11i.push(IIl1IIi1[i1liIiII]); + } + return l11l11i; + } + } + } + } + return ""; + } + static ["getActivityId"](llliIl1l = this.activity.activityUrl) { + const l1I1lIiI = new URLSearchParams(new URL(llliIl1l).search), + IIiIIlli = ["activityId", "giftId", "actId", "code", "a", "id", "token"]; + let l1il11II = ""; + for (let lIIIlliI of IIiIIlli) { + l1il11II = l1I1lIiI.get(lIIIlliI); + if (l1il11II) break; + } + return !l1il11II && (l1il11II = this.match(/\/(dz[a-zA-Z0-9]{28,32})/, llliIl1l)), this.activity.activityId = l1il11II, this.activity.activityId; + } + static ["getQueryString"](i1I1II1i, IlIIIliI) { + let i1iiIll1 = new RegExp("(^|[&?])" + IlIIIliI + "=([^&]*)(&|$)"), + lliIl11i = i1I1II1i.match(i1iiIll1); + if (lliIl11i != null) return unescape(lliIl11i[2]); + return ""; + } + static async ["runActInfo"]() { + let I1ili1i = {}; + if (this.activity.activityUrl) { + I1ili1i.domain = this.activity.activityUrl.match(/^(?:https?:\/\/)?([^/]+)\//)[1]; + I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "activityId"); + I1ili1i.prefix = Object.keys(iI111l1i.urlPrefixes).find(illll1 => this.activity.activityUrl.match(iI111l1i.urlPrefixes[illll1])) || ""; + if (/yq-hd-rc/.test(this.activity.activityUrl)) I1ili1i.mode = "yqhd", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "activityId"); else { + if (/interaction\/v2/.test(this.activity.activityUrl)) { + I1ili1i.mode = "v2"; + let liiIli1l = this.activity.activityUrl.match(/\/v2\/(\d+)\/(\d+)\//); + I1ili1i.activityType = liiIli1l[1]; + I1ili1i.shopId = this.activity.activityUrl.match(/shopId=(\d+)/)[1]; + I1ili1i.templateCode = liiIli1l[2]; + } else { + if (/activityType=\d+/.test(this.activity.activityUrl)) I1ili1i.mode = "100", I1ili1i.activityType = this.activity.activityUrl.match(/activityType=([^&]+)/)[1]; else { + if (/(hdb|jingyun)/.test(this.activity.activityUrl)) I1ili1i.mode = "hdb", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "id"), I1ili1i.userId = this.getQueryString(this.activity.activityUrl, "userId"); else { + if (/jinggeng/.test(this.activity.activityUrl)) I1ili1i.mode = "jinggeng", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "id"), I1ili1i.userId = this.getQueryString(this.activity.activityUrl, "user_id"); else { + if (/gzsl/.test(this.activity.activityUrl)) I1ili1i.mode = "gzsl", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "activityId"); else { + if (/hzbz-isv|hdds-isv/.test(this.activity.activityUrl)) I1ili1i.mode = "hzbz", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "id"); else /txzj-isv/.test(this.activity.activityUrl) ? (I1ili1i.mode = "txzj", I1ili1i.activityId = this.getQueryString(this.activity.activityUrl, "a")) : I1ili1i.mode = "wx"; + } + } + } + } + } + } + I1ili1i.needPinToken = !iIl1IlI1.notInitPinTokenRegx.test(this.activity.activityUrl); + I1ili1i.activityId = this.getActivityId(); + I1ili1i.activityUrl = this.activity.activityUrl; + // if (IlIIlIli.redis) I1ili1i.activityId && (await IlIIlIli.redis.sismember("activity_stop", I1ili1i.activityId)) && (this.log("hit cache,stop"), process.exit(0)); else { + // let llI1ll1I = this.readFileSync("cache/stop/id"); + // I1ili1i.activityId && llI1ll1I.includes(I1ili1i.activityId) && (this.log("hit cache,stop"), process.exit(0)); + // } + } + this.activity = Object.assign(this.activity, I1ili1i); + } + static ["envCheck"](iIiiI1ll = {}) { + console.log("当前版本:v" + this.envInfo.version + ",依赖版本:v" + this.version); + const IiIIlIl = require.main.filename, + IIIl111i = IiIIlIl.match(/[^\\\/]+(?=\.\w+$)/)[0], + IlliIilI = llillIi1.parse(this.readFileSync("./config/config.yaml")) || {}, + IlIl1I1l = Object.assign({}, iIl1IlI1, iI111l1i), + IlliIiiI = Object.assign({}, iiIll1i, iIliIIII), + IIl1li11 = IIiIi => IlliIilI[IIIl111i + "_" + IIiIi] ?? IlliIilI[IIiIi] ?? process.env[IIIl111i + "_" + IIiIi] ?? IlIl1I1l[IlliIiiI[IIiIi].replace(/^__|__$/g, "")]; + for (let IillIlII in iiIll1i) { + let i1lIIlI = IIl1li11(IillIlII), + IIi1illl = iiIll1i[IillIlII].replace(/^__|__$/g, ""); + if (/^__.*__$/.test(iiIll1i[IillIlII]) && typeof i1lIIlI === "string") { + i1lIIlI.split(/[@,&|]/).forEach(lililIii => iIl1IlI1[IIi1illl].push(lililIii)); + continue; + } + if (/^__(?!_)/.test(iiIll1i[IillIlII]) && typeof i1lIIlI === "string") { + i1lIIlI.split(/[@,&|]/).forEach(iIIIiI11 => iIl1IlI1[IIi1illl].push(iIIIiI11.includes("-") ? iIIIiI11 : iIIIiI11 * 1)); + continue; + } + iIl1IlI1[IIi1illl] = typeof iIl1IlI1[IIi1illl] === "number" ? parseInt(i1lIIlI) : i1lIIlI; + } + for (let il1Il1I1 in iIliIIII) { + let i11il1ii = IIl1li11(il1Il1I1), + ill1I1I = iIliIIII[il1Il1I1].replace(/^__|__$/g, ""); + iI111l1i[iIliIIII[il1Il1I1]] = typeof iI111l1i[ill1I1I] === "number" ? parseInt(i11il1ii) : i11il1ii; + } + iIiiI1ll.thread = parseInt(IlliIilI[IIIl111i + "_B_THREAD"] ?? IlliIilI.B_THREAD ?? process.env[IIIl111i + "_B_THREAD"] ?? process.env.B_THREAD ?? iIiiI1ll?.["thread"] ?? 50); + iIiiI1ll.main_thread = parseInt(IlliIilI[IIIl111i + "_B_MAIN_THREAD"] ?? IlliIilI.B_MAIN_THREAD ?? process.env[IIIl111i + "_B_MAIN_THREAD"] ?? process.env.B_MAIN_THREAD ?? iIiiI1ll?.["main_thread"] ?? 50); + iIiiI1ll.inviteTask && (iIiiI1ll.main_thread = parseInt(IlliIilI[IIIl111i + "_B_INVITE_MAIN_THREAD"] ?? IlliIilI.B_INVITE_MAIN_THREAD ?? process.env[IIIl111i + "_B_INVITE_MAIN_THREAD"] ?? process.env.B_INVITE_MAIN_THREAD ?? 50)); + if (iIl1IlI1.leaderNum) iIiiI1ll.main_thread = Math.min(iIiiI1ll.main_thread, iIl1IlI1.leaderNum); + iIl1IlI1.wxProxyCheck = iIiiI1ll?.["wxProxyCheck"] ?? iIl1IlI1.wxProxyCheck; + iIl1IlI1.wxProxySmart = iIiiI1ll?.["wxProxySmart"] ?? iIl1IlI1.wxProxySmart; + console.log("当前token A_API_TOKEN=\"" + iI111l1i.apiToken + "\""); + console.log("运行参数:", iIiiI1ll); + console.log(Iii1iI1i.envInfo.name, IiIIlIl, "开始运行..."); + IlIIlIli.addressList = JSON.parse(this.readFileSync("./account.json") || "[]"); + iIl1IlI1.logger = new liiIIll({ + "level": iI111l1i.mode || iI111l1i.showDebugInfo === 1 ? "debug" : "info", + "filename": IIIl111i + "/" + i1I1IlI1(Date.now(), "yyyy-MM-dd_HH-mm-ss-SSS"), + "logToFile": iIl1IlI1.logToFile === 1 + }); + ilIiilII.setMaxListeners(iIiiI1ll.main_thread); + } + static async ["redis"]() { + if (iIl1IlI1.redisCacheEnable === 2) return; + if (iIl1IlI1.redisRequire === 2) { + this.log("redis依赖未安装,禁用"); + return; + } + if (!iIl1IlI1.redisUrl) { + this.log("未配置redis变量,禁用"); + return; + } + try { + let ll1lii11 = iIl1IlI1.redisUrl.split("/"), + iilIliil = ll1lii11[0].split(":"), + iIll1II = new I11I1l1I({ + "host": iilIliil[0], + "port": iilIliil[1], + "password": ll1lii11[1], + "db": ll1lii11[2] + }); + await iIll1II.connected; + if (iIl1IlI1.redisConnect === 2) { + this.log("redis连接失败,禁用"); + IlIIlIli.redis = null; + return; + } + this.log("启用redis缓存"); + IlIIlIli.redis = iIll1II; + } catch (l1IilIi) { + console.log(l1IilIi); + } + } + static async ["checkSendFiexd"]() { + if (iI111l1i.wxScheduledNotify === 2 && iI111l1i.scheduleTgBotToken && iI111l1i.scheduleTgUserId) { + IlIIlIli.activity.noStart && IlIIlIli.activity.startTime && !(await IlIIlIli?.["redis"]?.["sismember"]("activity_corn", this.activity.activityId)) && (IlIIlIli.activity.sendStartFiexd = true); + IlIIlIli.activity.noDraw && IlIIlIli.activity.drawTime && !(await IlIIlIli?.["redis"]?.["sismember"]("activity_draw_corn", this.activity.activityId)) && (IlIIlIli.activity.sendDrawFiexd = true); + } + } + static async ["checkWriteToRedis"](i1ilIIl1, I11ll1ii) { + i1ilIIl1.includes("spy定时") && (await IlIIlIli?.["redis"]?.["sadd"](I11ll1ii === 0 ? "activity_corn" : "activity_draw_corn", this.activity.activityId)); + } + static async ["run"](ll1lili1) { + this.runBefore(); + this.envCheck(ll1lili1); + this.activity.activityUrl && console.log("活动链接:", this.activity.activityUrl); + let iI1iil = this.cookieInit(), + IiIillI = iI1iil[0], + illIlII = iI1iil[1]; + console.log("原始ck长度", IiIillI.length); + const iii1iI11 = iIl1IlI1.wxWhitelist?.["length"] > 0 ? iIl1IlI1.wxWhitelist : ll1lili1?.["whitelist"], + iiI11Iil = new Set(this.__as(iii1iI11).map(IiiI1i1l => IiiI1i1l - 1)); + IiIillI = IiIillI.filter((I1lIilll, lIllilIi) => iiI11Iil.has(lIllilIi)); + console.log("设置白名单后ck长度", IiIillI.length); + try { + if (iIl1IlI1.wxBlockRegx) { + const II1Il1l1 = iIl1IlI1.wxBlockRegx.split(";").map(III1I1i => { + const [lI1l11li, l1lIilIl] = III1I1i.split("@"), + lII1Ii1i = l1lIilIl.split("|"); + return { + "regx": new RegExp(lI1l11li), + "blist": lII1Ii1i + }; + }), + IilIll11 = this.activity?.["activityUrl"]; + IiIillI = IiIillI.filter(I1iIiIII => { + for (const { + regx: I11i1iIl, + blist: ll1IIi1I + } of II1Il1l1) { + if (I11i1iIl.test(IilIll11) && ll1IIi1I.some(lI1Ilil1 => I1iIiIII.includes(lI1Ilil1))) return false; + } + return true; + }); + } + } catch (Illli1iI) { + this.log("排除黑名单Error", Illli1iI); + } + console.log("排除PIN黑名单后ck长度", IiIillI.length); + this.cookies = IiIillI; + this.cookieLength = IiIillI.length; + this.inviteCookieLength = illIlII.length; + this.paddedStringEndCount = String(this.cookieLength).length; + if (this.cookieLength === 0) return this.log("没有可运行的ck"); + //await this.#au(); + this.#overwriteConfig(ll1lili1); + await this.redis(); + await this.runActInfo(); + this.proxy = new lI1l11l1(this.activity.activityUrl); + if (iIl1IlI1.wxProxyEnable === 2 && iIl1IlI1.wxProxySmart === 2) { + if (this.proxy.subscriptionUrls.length === 0) return this.log("没有可用的代理"); + this.proxy.updateProxyEnable(true); + } + this.taskManager = new iIIIili1([...this.cookies, ...illIlII], this.TaskClass); + const liI1illi = Date.now(); + try { + if (iI111l1i.wxRunMode === 1 && !ll1lili1?.["inviteTask"]) try { + await this.get_mains_obj().userTask(); + } catch (lIiliIiI) { + if (lIiliIiI instanceof i1I1IiII) this.running = false; else { + if (lIiliIiI instanceof iiiIIIll) { } else { + this.log(lIiliIiI.message || lIiliIiI); + } + } + } + const I111IiIl = []; + for (let llllliil = 0; llllliil < Math.min(this.taskManager.cookie_all_obj.length, ll1lili1?.["main_thread"] || 1); llllliil++) { + I111IiIl.push(() => this.async_thread(llllliil, ll1lili1)); + } + let IlliI111 = ll1lili1?.["enableDynamic"] || false; + IlliI111 && (this.concurrencyLimit = ll1lili1?.["main_thread"] || 1); + await this.runTasksConcurrentlyWithDelay(I111IiIl, ll1lili1?.["main_thread"] || 1, 10, IlliI111); + } catch (iI1l11l1) { + iI1l11l1 instanceof i1I1IiII && (this.running = false); + } + const II1ii1i1 = Date.now(), + iIiliiiI = (Math.abs(II1ii1i1 - liI1illi) / 1000).toFixed(2); + console.log("" + Iii1iI1i.envInfo.name, "运行结束,耗时" + (II1ii1i1 - liI1illi) + "ms"); + await this.checkSendFiexd(); + const ll1111I = [() => this.notify(iIiliiiI, ll1lili1), ...this.sendTimeNotify(), ...this.sendNotifyToUser()]; + await this.runTasksConcurrentlyWithDelay(ll1111I, ll1111I.length, 10, false, false); + process.exit(0); + } + static ["runBefore"]() { } +} +process.on("uncaughtException", lI1IiIl1 => { + console.error("未捕获的异常:", lI1IiIl1); +}); +module.exports = { + "UserMode": IlIIlIli, + "RunMode": Iii1iI1i, + "CryptoJS": II11il11, + "baseCommonEnv": iIl1IlI1, + "baseCommonEnvKey": iiIll1i, + "tools": i1l1iil +}; \ No newline at end of file diff --git a/jd_follow_shop.js b/jd_follow_shop.js new file mode 100644 index 0000000..ecc2fab --- /dev/null +++ b/jd_follow_shop.js @@ -0,0 +1,143 @@ +/* +关注有礼beta v1.0.0 + +https://shop.m.jd.com/?shopId=1000304221 +650767_655224 +https://shop.m.jd.com/?shopId=650767&venderId=650767 + +export B_FOLLOW_SHOP_ARGV="" + +cron: 1 1 1 1 * +const $ = new Env("关注有礼beta"); +*/ + +let l1IlIiIi = __dirname.includes("bear"), + ilIIlIl1 = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_FOLLOW_SHOP_ARGV); +if (l1IlIiIi) { + ilIIlIl1 = "650767_655224"; + ilIIlIl1 = "https://shop.m.jd.com/?shopId=650767"; + ilIIlIl1 = "https://shop.m.jd.com/?venderId=650767"; + ilIIlIl1 = "https://shop.m.jd.com/?shopId=650767&venderId=650767"; + ilIIlIl1 = "1000083882_1000083882"; + ilIIlIl1 = "https://shop.m.jd.com/shop/home?shopId=158274"; +} +const { + RunMode: Ii1I1iil, + UserMode: lli1111I, + tools: tool +} = require("./bear"); +const qs = require("qs"); +Ii1I1iil.envInfo = { + "name": "M关注有礼", + "runName": "jd_follow_shop", + "version": "1.0.0" +}; +class i11IiIIl extends lli1111I { + constructor(iiiIIliI, l1I1iI) { + super(iiiIIliI, l1I1iI); + } + ["removeLastCharacterIfAmpersand"](Ii1iIlII) { + const l111i11l = Ii1iIlII.charAt(Ii1iIlII.length - 1); + if (l111i11l === "&") { + return Ii1iIlII.slice(0, -1); + } else return Ii1iIlII; + } + async ["drawShopGift"](IiiilI) { + let I1I11iii = { + "activityId": IiiilI + }; + this.shopId && (I1I11iii.shopId = this.shopId); + this.venderId && (I1I11iii.venderId = this.venderId); + let l1iiii1i = await this.jd_api({ + "url": "https://api.m.jd.com/client.action?functionId=whx_drawShopGift&appid=shop_m_jd_com&body=" + encodeURIComponent(JSON.stringify(I1I11iii)), + "headers": { + "Referer": "https://shop.m.jd.com/" + } + }); + this.debug(l1iiii1i); + if (l1iiii1i && l1iiii1i.code === "0") { + let iliI1iII = l1iiii1i.result, + iiIl1II = iliI1iII?.["alreadyReceivedGifts"]?.["map"](I11IlII => "" + I11IlII?.["rearWord"] + I11IlII?.["redWord"])["join"](","); + this.putMsg(iiIl1II); + return; + } + this.putMsg(l1iiii1i ? JSON.stringify(l1iiii1i) : "领取失败"); + } + async ["userTask"]() { + if (this.followShopArgv?.["startsWith"]("http")) { + this.shopId = this.getQueryString(this.followShopArgv, "shopId"); + this.venderId = this.getQueryString(this.followShopArgv, "venderId"); + } else { + if (this.followShopArgv.includes("_")) { + let I1i111il = this.followShopArgv.split("_"); + this.shopId = I1i111il[0]; + this.venderId = I1i111il[1]; + } else { + if (/^\d+$/.test(this.followShopArgv)) this.venderId = this.followShopArgv;else { + this.putMsg("参数错误"); + this.stop(); + return; + } + } + } + !this.shopId && !this.venderId && (this.putMsg("参数错误"), this.stop()); + let lIIl11Il = "https://shop.m.jd.com/?" + (this.shopId ? "shopId=" + this.shopId + "&" : "") + (this.venderId ? "venderId=" + this.venderId : ""); + Ii1I1iil.activity.activityUrl = this.removeLastCharacterIfAmpersand(lIIl11Il); + let body = { + "shopId": this.shopId, + "source":"app-shop", + "sourceRpc": "shop_app_home_home", + "venderId": this.venderId + }; + let sign = tool.getSignData("getShopHomeActivityInfo", body, this.phoneInfo); + let sifnStr = qs.stringify(sign); + + let i11li1i = await this.jd_api({ + "url": 'https://api.m.jd.com/client.action?functionId=getShopHomeActivityInfo&' + sifnStr, + "headers": this.headers + }); + if (!i11li1i || i11li1i.code !== "0") { + this.putMsg(i11li1i ? JSON.stringify(i11li1i) : "获取活动信息失败"); + return; + } + let iilliil1 = i11li1i.result; + if (iilliil1?.["followed"]) { + this.putMsg("已经关注过"); + await this.unfollow(); + } + if (iilliil1?.["shopGifts"]) { + let body = { + "shopId": this.shopId, + "source":"app-shop", + "sourceRpc": "shop_app_home_home", + "venderId": this.venderId, + "activityId": iilliil1?.["activityId"] + }; + let sign = tool.getSignData("drawShopGift", body, this.phoneInfo); + let sifnStr = qs.stringify(sign); + let lIiillIl = await this.jd_api({ + "url": "https://api.m.jd.com/client.action?functionId=drawShopGift&" + sifnStr, + "headers": this.headers + }); + this.debug(lIiillIl); + if (lIiillIl && lIiillIl.code === "0") { + let I1lIl1Ii = lIiillIl.result, + llIlli1I = I1lIl1Ii?.["alreadyReceivedGifts"]?.["map"](liIili1i => "" + liIili1i?.["rearWord"] + liIili1i?.["redWord"])["join"](","); + this.putMsg(llIlli1I); + return; + } + this.putMsg(lIiillIl ? JSON.stringify(lIiillIl) : "领取失败"); + } else { + this.putMsg("未发现关注有礼活动"); + } + } +} +Ii1I1iil.activity = { + "followShopArgv": ilIIlIl1 +}; +Ii1I1iil.TaskClass = i11IiIIl; +Ii1I1iil.run({ + "whitelist": ["1-2000"], + "main_thread": 3, + "wxProxySmart": 1 +}); diff --git a/jd_live.js b/jd_live.js new file mode 100644 index 0000000..7f65395 --- /dev/null +++ b/jd_live.js @@ -0,0 +1,153 @@ +/* +直播抽奖beta v1.0.6 + +https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=xxxxxx +xxxxxx + +export B_LIVE_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("直播抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let liveArgv = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_LIVE_URL); + +if (mode) { + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22832609"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22789891&sharer=%e8%93%9d%e8%89%b2%e9%9b%a8+R62663&user=tZLbIfinAeEQHKV7oZNnzHlo69Mkg6&cu=true&rid=12440&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1002070633_1589_169_1&utm_term=3f58013f8d4a4055942f01ff46fd9f84"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22775299&sharer=%e8%93%9d%e8%89%b2%e9%9b%a8+R62663&user=tZLbIfinAeEQHKV7oZNnzHlo69Mkg6&cu=true&rid=12422&hideyl=1&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1002070633_1589_169_1&utm_term=0785fb47bf6945baa958ba7e68e132e5"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22789891&sharer=%e8%93%9d%e8%89%b2%e9%9b%a8+R62663&user=tZLbIfinAeEQHKV7oZNnzHlo69Mkg6&cu=true&rid=12427&hideyl=1&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1002070633_1589_169_1&utm_term=5834da7c5ddd4bd8965fa763833aaa01"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22670339&sharer=%e8%93%9d%e8%89%b2%e9%9b%a8+R62663&user=tZLbIfinAeEQHKV7oZNnzHlo69Mkg6&cu=true&rid=12439&hideyl=1&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1002070633_1589_169_1&utm_term=0e716e561b334b1b9a75c87a5221be56"; + liveArgv = "22670339"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22773294"; + liveArgv = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=22747197"; + } + const { + RunMode: liii1i, + UserMode: IlI1iiII + } = require("./bear"); + liii1i.envInfo = { + "name": "直播抽奖beta", + "runName": "jd_live", + "version": "1.0.6" + }; + class i11Iliii extends IlI1iiII { + constructor(i1III1i, IIlI1i) { + super(i1III1i, IIlI1i); + this.retryCount = 2; + this.proxyRetryCount = 2; + this.otherHeaders = { + "User-Agent": this.ua.jd4, + "jdgs": "-3107", + "x-referer-package": "com.360buy.jdmobile", + "x-rp-client": "ios_4.0.0" + }; + } + ["randomCookie"]() { + const Iiiii11 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", + iili1II = Array.from({ + "length": 12 + }, () => Iiiii11.charAt(Math.floor(Math.random() * Iiiii11.length))).join(""), + illiiiI1 = Array.from({ + "length": 9 + }, () => Iiiii11.charAt(Math.floor(Math.random() * Iiiii11.length))).join(""); + return "pt_key=AAJi3kgCADBAwCJiwFJpvIfk7J_U6J0FsSZDCnvCtbEhC" + iili1II + ";pt_pin=jd_" + illiiiI1 + ";"; + } + async ["liveActivity"]() { + let iiIiIlIl = await this.jd_api({ + "api": "client.action", + "method": "post", + "data": {}, + "functionId": "liveActivityV946", + "body": { + "itemId": null, + "liveId": this.liveId, + "masterPin": null, + "pageId": "Live_Room", + "showCoupon": "0" + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + this.debug(iiIiIlIl); + if (!iiIiIlIl || iiIiIlIl.code !== "0") return this.putMsg(iiIiIlIl ? JSON.stringify(iiIiIlIl) : "获取直播信息失败"), this.exit(); + let IIIliI1i = iiIiIlIl.data?.["iconArea"]?.["filter"](iilIiii => iilIiii.type === "new_anchor_darw_lottery" && iilIiii.actionType === 3) ?? []; + if (IIIliI1i.length <= 0) return this.putMsg("未找到有效抽奖活动"), this.stop(); + this.iconArea = IIIliI1i; + } + async ["liveLotteryPanel"]() { + let lIllII1 = await this.jd_api({ + "api": "client.action", + "method": "post", + "data": {}, + "functionId": "liveLotteryPanelV1012", + "body": { + "liveId": this.liveId.toString(), + "lotteryId": this.lotteryId.toString(), + "pageId": "Live_Room", + "shared": 1 + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + this.debug(lIllII1); + if (!lIllII1 || lIllII1.code !== "0") return this.putMsg("获取活动详情失败"), this.exit(); + if (![3, 13].includes(lIllII1.data?.["lotteryRewardDetail"]?.["rewardType"])) { + return this.putMsg("垃圾活动"), this.stop(); + } + this.rewardValue = lIllII1.data?.["lotteryRewardDetail"]?.["couponCondition"] || lIllII1.data?.["lotteryRewardDetail"]?.["rewardValue"] || 0; + this.debug(this.rewardValue); + } + async ["userTask"]() { + this.liveArgv?.["startsWith"]("http") ? this.liveId = this.getQueryString(this.liveArgv, "id") : this.liveId = this.liveArgv; + if (!this.liveId) return this.putMsg("参数错误"), this.stop(); + liii1i.activity.activityUrl = "https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=" + this.liveId; + await this.liveActivity(); + for (let il1IllI1 of this.iconArea) { + this.lotteryId = il1IllI1.data.lotteryId; + if (!this.lotteryId) { + continue; + } + await this.liveLotteryPanel(); + let i1ii11Il = await this.jd_api({ + "api": "client.action", + "data": {}, + "method": "post", + "functionId": "liveDrawLotteryV1012", + "body": { + "fansLevel": 1, + "liveId": this.liveId.toString(), + "lotteryId": this.lotteryId.toString(), + "nickName": this.pin, + "pageId": "Live_Room", + "plus": 1, + "token": "", + "eid": "" + }, + "sign": true, + "jdje": true, + "noReferer": true + }); + this.debug(i1ii11Il); + if (!i1ii11Il || i1ii11Il.code !== "0") { + this.putMsg("抽奖失败"); + continue; + } + if (i1ii11Il.data?.["rewardTitle"]?.["includes"]("中奖")) { + this.putMsg(this.rewardValue + "京豆"); + } else i1ii11Il.data?.["rewardTitle"]?.["includes"]("擦肩") ? this.putMsg("空气") : this.putMsg(i1ii11Il.data?.["rewardTitle"]); + } + } + } + liii1i.activity = { + "liveArgv": liveArgv + }; + liii1i.TaskClass = i11Iliii; + liii1i.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_open_card.js b/jd_open_card.js new file mode 100644 index 0000000..6eb6f23 --- /dev/null +++ b/jd_open_card.js @@ -0,0 +1,106 @@ +/* +入会有礼beta v2.0.2 + +https://shopmember.m.jd.com/shopcard/?shopId=123 +https://shopmember.m.jd.com/shopcard/?venderId=123 +https://shopmember.m.jd.com/shopcard/?shopId=3779964&venderId=3779964 +650767_655224 + +export B_OPEN_CARD_ARGV="" +export B_OPEN_CARD_MODE="0" # 开卡模式 0:仅豆子 1:积分和豆子 +export B_OPEN_CARD_BEAN_NUM="10" # 超过这个数量才会开卡 默认值10 当B_OPEN_CARD_MODE为1时该配置无效 + +cron: 7 7 7 7 7 * +const $ = new Env("入会有礼beta"); +*/ + +let mode = __dirname.includes('bear'); + +let openCardArgv = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_OPEN_CARD_ARGV); + +if (mode) { + openCardArgv = "650767_655224"; + openCardArgv = "https://shopmember.m.jd.com/shopcard/?shopId=123"; + openCardArgv = "https://shopmember.m.jd.com/shopcard/?venderId=123"; + openCardArgv = "https://shopmember.m.jd.com/shopcard/?shopId=3779964&venderId=3779964"; + openCardArgv = "1000008814"; + openCardArgv = "https://shop.m.jd.com/shop/home?shopId=1000076283"; + openCardArgv = "https://shopmember.m.jd.com/shopcard?shopId=1000098801&venderId=1000098801"; + openCardArgv = "https://shopmember.m.jd.com/shopcard?shopId=1000077407&venderId=1000077407"; + openCardArgv = "https://shopmember.m.jd.com/shopcard?shopId=1000072462&venderId=1000072462"; + openCardArgv = "1000001195"; + } + const { + RunMode: i11I1ili, + UserMode: ll1li1Ii, + baseCommonEnv: II1I1ill, + baseCommonEnvKey: IliIIil + } = require("./bear"); + i11I1ili.envInfo = { + "name": "入会有礼beta", + "runName": "jd_open_card", + "version": "2.0.2" + }; + II1I1ill.openCardBeanNum = parseInt(process.env.B_OPEN_CARD_BEAN_NUM || "10"); + II1I1ill.openCardMode = parseInt(process.env.B_OPEN_CARD_MODE || "0"); + IliIIil.B_OPEN_CARD_BEAN_NUM = "openCardBeanNum"; + IliIIil.B_OPEN_CARD_MODE = "openCardMode"; + class ll11IIll extends ll1li1Ii { + constructor(lilI1Il1, l1l11ii1) { + super(lilI1Il1, l1l11ii1); + } + async ["userTask"]() { + const llIiiIlI = /^(https?:\/\/)?([\da-zA-Z.-]+)\.([a-z.]{2,6})([/\w.-]*)*\/?(\?[\w&=.-]*)?$/; + if (llIiiIlI.test(this.openCardArgv)) { + this.shopId = this.getQueryString(this.openCardArgv, "shopId"); + this.venderId = this.getQueryString(this.openCardArgv, "venderId"); + this.debug(this.shopId); + this.debug(this.venderId); + } else { + if (this.openCardArgv.includes("_")) { + let IlliilI = this.openCardArgv.split("_"); + this.shopId = IlliilI[0]; + this.venderId = IlliilI[1]; + } else { + if (/^\d+$/.test(this.openCardArgv)) this.venderId = this.openCardArgv;else { + this.putMsg("参数错误"); + this.stop(); + return; + } + } + } + i11I1ili.activity.activityUrl = "https://shopmember.m.jd.com/shopcard?" + (this.shopId ? "shopId=" + this.shopId + "&" : "") + "venderId=" + this.venderId; + let I1i11ilI = await this.getShopOpenCardInfo(); + this.debug(I1i11ilI); + if (!I1i11ilI) { + return; + } + if (this.openCardStatus == 0) { + if (!this.giftActId) { + this.putMsg("无入会礼包"); + this.stop(); + return; + } + let iliiIlII = I1i11ilI?.["result"]?.[0]?.["interestsRuleList"] ?? []; + if (II1I1ill.openCardMode === 0 && !iliiIlII.some(i1i11ll1 => ["京豆"].includes(i1i11ll1.prizeName) && parseInt(i1i11ll1.discountString) >= II1I1ill.openCardBeanNum)) return this.putMsg("垃圾活动"); //this.stop(); + if (II1I1ill.openCardMode === 1 && !iliiIlII.some(Iill1111 => /京豆|积分/.exec(Iill1111.prizeName))) return this.putMsg("垃圾活动"); //this.stop(); + let ili1iIlI = await this.bindWithVender(); + if (ili1iIlI && ili1iIlI.success) { + let i1iil111 = ili1iIlI?.["result"]?.["giftInfo"]?.["giftList"] ?? []; + for (let l111IIl1 of i1iil111) { + this.putMsg("" + l111IIl1?.["discount"] + l111IIl1?.["prizeTypeName"]); + } + } + return; + } + this.log("已开卡"); + } + } + i11I1ili.activity = { + "openCardArgv": openCardArgv + }; + i11I1ili.TaskClass = ll11IIll; + i11I1ili.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_shop_gyg.js b/jd_shop_gyg.js new file mode 100644 index 0000000..a8e5117 --- /dev/null +++ b/jd_shop_gyg.js @@ -0,0 +1,87 @@ +/* +店铺刮奖beta v1.0.0 + +https://shop.m.jd.com/?shopId=650767 +650767_655224 + +export B_GYG_SHOP_ARGV="" + +cron: 7 7 7 7 7 * +const $ = new Env("店铺刮奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let gygShopArgv = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_GYG_SHOP_ARGV); + +mode && (gygShopArgv = "650767_655224", gygShopArgv = "https://shop.m.jd.com/?shopId=650767", gygShopArgv = "https://shop.m.jd.com/?shopId=1000457155"); +const { + RunMode: iIlI1l1I, + UserMode: ilII1iiI +} = require("./bear"); +iIlI1l1I.envInfo = { + "name": "店铺刮奖beta", + "runName": "jd_shop_gyg", + "version": "1.0.0" +}; +class iIlIlIil extends ilII1iiI { + constructor(ll1iilIl, IIIlIiI) { + super(ll1iilIl, IIIlIiI); + } + ["removeLastCharacterIfAmpersand"](I1ii1lil) { + const IiIlllii = I1ii1lil.charAt(I1ii1lil.length - 1); + if (IiIlllii === "&") return I1ii1lil.slice(0, -1);else { + return I1ii1lil; + } + } + async ["userTask"]() { + if (this.gygShopArgv?.["startsWith"]("http")) { + this.shopId = this.getQueryString(this.gygShopArgv, "shopId"); + this.venderId = this.getQueryString(this.gygShopArgv, "venderId"); + } else { + if (this.gygShopArgv.includes("_")) { + let lIilII1l = this.gygShopArgv.split("_"); + this.shopId = lIilII1l[0]; + this.venderId = lIilII1l[1]; + } else { + if (/^\d+$/.test(this.gygShopArgv)) this.venderId = this.gygShopArgv;else { + this.putMsg("参数错误"); + this.stop(); + return; + } + } + } + !this.shopId && !this.venderId && (this.putMsg("参数错误"), this.stop()); + let ilIlllil = "https://shop.m.jd.com/?" + (this.shopId ? "shopId=" + this.shopId + "&" : "") + (this.venderId ? "venderId=" + this.venderId : ""); + iIlI1l1I.activity.activityUrl = this.removeLastCharacterIfAmpersand(ilIlllil); + let ilIiilll = await this.jd_api({ + "url": "https://api.m.jd.com/client.action", + "method": "post", + "data": {}, + "functionId": "sign", + "body": { + "vendorId": this.venderId || this.shopId, + "sourceRpc": "shop_app_sign_home" + }, + "sign": true, + "headers": { + "Referer": "", + "User-Agent": this.ua.jd4 + } + }); + this.debug(ilIiilll); + if (!ilIiilll || ilIiilll.code !== "0") { + this.putMsg(ilIiilll ? JSON.stringify(ilIiilll) : "获取活动信息失败"); + return; + } + if (ilIiilll?.["result"]?.["isSign"] === 3) return this.putMsg("已刮过奖");else ilIiilll?.["result"]?.["isSign"] === 1 ? ilIiilll.result?.["isWin"] ? this.putMsg(ilIiilll.result?.["signReward"]?.["name"]) : this.putMsg("未中奖") : this.log(ilIiilll); + } +} +iIlI1l1I.activity = { + "gygShopArgv": gygShopArgv +}; +iIlI1l1I.TaskClass = iIlIlIil; +iIlI1l1I.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_cartKoi.js b/jd_wx_cartKoi.js new file mode 100644 index 0000000..77cad3b --- /dev/null +++ b/jd_wx_cartKoi.js @@ -0,0 +1,332 @@ +/* +购物车锦鲤beta v2.0.0 + +https://lzkj-isv.isvjd.com/wxCartKoi/cartkoi/activity/361487a1d9704d178f77ea631279550f?activityId=361487a1d9704d178f77ea631279550f +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2021070590900gwcjl081&activityId=1722164785163591681&nodeId=101001&prd=cjwx + +export B_WX_CARTKOI_URL="" +export B_WX_CARTKOI_MODE="3" # 豆子 1 实物2 豆子或实物3 无视奖品4 默认值3 + +cron: 7 7 7 7 7 * +const $ = new Env("购物车锦鲤beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_CARTKOI_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjd.com/wxCartKoi/cartkoi/activity/361487a1d9704d178f77ea631279550f?activityId=361487a1d9704d178f77ea631279550f"; + activityUrl = "https://lzkj-isv.isvjd.com/wxCartKoi/cartkoi/activity/10f3ef3be1414b36b9b566f7ce381372?activityId=10f3ef3be1414b36b9b566f7ce381372&adsource=tg_storePage"; + activityUrl = "https://lzkj-isv.isvjcloud.com/wxCartKoi/cartkoi/activity/501953175faa4e09913847657eb81681?activityId=501953175faa4e09913847657eb81681"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2021070590900gwcjl081&activityId=1722164785163591681&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2021070590900gwcjl081&activityId=1724309552314191873&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&activityId=1723332057093693441&templateId=2021070590900gwcjl081&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkjdz-isv.isvjd.com/wxCartKoi/cartkoi/activity/07841bc39b0a4226b26f9d03535e9ab1?activityId=07841bc39b0a4226b26f9d03535e9ab1"; + activityUrl = "https://lzkj-isv.isvjd.com/wxCartKoi/cartkoi/activity?activityId=cc5ab0a00ccc48a288874549709db392"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2021070590900gwcjl081&activityId=1715308876757774338&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&activityId=1727254167809003522&templateId=2021070590900gwcjl081&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2021070590900gwcjl081&activityId=1727246016674234370&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v1/index?activityType=10036&templateId=2021070590900gwcjl08&activityId=1731494042823737346&nodeId=101001&prd=crm"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=2023121110036gwcjl01&activityId=1740321245336375298&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10036&templateId=20210518190900rlqd011&activityId=1744276235708506114&prd=cjwx"; + } + const { + RunMode: lIi1I11, + UserMode: IIiIi1li, + baseCommonEnv: lI1i11I, + baseCommonEnvKey: i1Il1Iii + } = require("./bear"); + lI1i11I.openCardBeanNum = parseInt(process.env.B_WX_CARTKOI_MODE || 3); + i1Il1Iii.B_WX_CARTKOI_MODE = "openCardBeanNum"; + lIi1I11.envInfo = { + "name": "购物车锦鲤beta", + "runName": "jd_wx_cartKoi", + "version": "2.0.0" + }; + class i11llii extends IIiIi1li { + constructor(IiI1iIil, llll1lII) { + super(IiI1iIil, llll1lII); + this.oneClickPurchase = 0; + } + async ["getDrawPrizeInfo"]() { + let I1i1lli1 = []; + if (lI1i11I.openCardBeanNum === 1) { + I1i1lli1.push(6); + } else { + if (lI1i11I.openCardBeanNum === 2) { + I1i1lli1.push(7); + } else lI1i11I.openCardBeanNum === 3 && I1i1lli1.push(6, 7); + } + if (I1i1lli1.length === 0) { + this.openCard = true; + return; + } + let lIIlI1iI = await this.wxApi("wxCartKoi/cartkoi/getDrawPrizeInfo", { + "activityId": this.activityId + }); + if (lIIlI1iI && lIIlI1iI.data) { + let iII1Ii1 = lIIlI1iI.data ?? []; + if (iII1Ii1.some(iliIiI11 => I1i1lli1.includes(iliIiI11.type))) { + this.openCard = true; + } + } + } + async ["addCart"]() { + let liI1lliI = await this.wxApi("wxCartKoi/cartkoi/addCart", { + "activityId": this.activityId, + "pin": this.secretPin, + "productId": this.prodectVos[0].productId + }); + this.debug(liI1lliI); + if (liI1lliI && liI1lliI.result) { + this.putMsg("加购完成"); + return; + } + let iiI1iiIl = liI1lliI?.["errorMessage"] || "加购失败"; + this.putMsg(iiI1iiIl); + this.wxStop(iiI1iiIl); + } + async ["quickAddCart"](llIIIiI = true) { + let ll1iilIl = await this.wxApi("wxCartKoi/cartkoi/quickAddCart", { + "activityId": this.activityId, + "pin": this.secretPin, + "productIds": JSON.stringify(this.prodectVos.map(Iiiil11l => Iiiil11l.productId)) + }); + this.debug(ll1iilIl); + if (ll1iilIl && ll1iilIl.result) { + if (this.timestamp() > IIiIi1li.activity.drawTime && this.timestamp() < IIiIi1li.activity.endTime) { + return await this.drawResult(); + } + this.putMsg("已完成加购"); + return; + } + let lIIl1IIl = ll1iilIl?.["errorMessage"] || "加购失败"; + if (lIIl1IIl.includes("未关注") && llIIIiI && (await this.follow())) return await this.quickAddCart(false); + if (lIIl1IIl.includes("会员") && this.openCard && llIIIiI && (await this.bindWithVender()) && !this.canNotOpenCard) return await this.quickAddCart(false); + this.putMsg(lIIl1IIl); + this.wxStop(lIIl1IIl); + } + async ["drawResult"](lIi1liI1 = true) { + let iilIIiI = await this.wxApi("wxCartKoi/cartkoi/drawResult", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.myUuid + }); + this.debug(iilIIiI); + if (iilIIiI && iilIIiI.result) this.putMsg("" + (iilIIiI.data?.["name"] || iilIIiI.data?.["drawInfo"]?.["name"] || "空气")), iilIIiI.data?.["drawInfoType"] === 7 && iilIIiI.data?.["needWriteAddress"] === "y" && iilIIiI.data?.["addressId"] && (this.addressId = iilIIiI.data.addressId, this.prizeName = iilIIiI.data.name, await this.saveAddress());else { + let II1l1Iii = res?.["errorMessage"]; + if (II1l1Iii?.["includes"]("未关注") && lIi1liI1 && (await this.follow())) { + return await this.drawResult(false); + } + if (II1l1Iii.includes("会员") && this.openCard && lIi1liI1 && (await this.bindWithVender()) && !this.canNotOpenCard) { + return await this.quickAddCart(false); + } + this.putMsg(II1l1Iii); + this.wxStop(II1l1Iii); + return; + } + } + async ["drawPrize"]() { + let IlIIIiII = await this.lzkjApi("api/prize/drawPrize"); + this.drawNumber = 1; + if (IlIIIiII && IlIIIiII.resp_code === 0) { + this.drawNumber = IlIIIiII?.["data"]?.["drawNumber"] ?? 1; + let I1IiIiIl = []; + if (lI1i11I.openCardBeanNum === 1) { + I1IiIiIl.push(1); + } else { + if (lI1i11I.openCardBeanNum === 2) I1IiIiIl.push(3);else lI1i11I.openCardBeanNum === 3 && I1IiIiIl.push(1, 3); + } + if (I1IiIiIl.length === 0) { + this.openCard = true; + return; + } + let Il1II1li = IlIIIiII?.["data"]?.["prizeInfo"] ?? []; + if (Il1II1li.some(illi1iI1 => I1IiIiIl.includes(illi1iI1?.["prizeType"]))) { + this.openCard = true; + } + } + } + async ["addSku"](l1lllIli = "999") { + let ii1I11I = await this.lzkjApi("api/task/addSkuPrice/addSku", { + "skuId": l1lllIli + }); + this.debug(ii1I11I); + if (typeof ii1I11I?.["data"] === "object" && Object.keys(ii1I11I.data).length === 0 && l1lllIli === "999") { + this.oneClickPurchase = 1; + return; + } + if (ii1I11I && ii1I11I.resp_code === 0) { + let il1lI111 = ii1I11I?.["data"] ?? {}; + if (il1lI111.skuFlag) { + this.putMsg("加购完成"); + return; + } + this.putMsg(il1lI111.messageFlag === 1 ? "未在加购时间内" : il1lI111.messageFlag === 2 ? "当前商品已加购" : il1lI111.messageFlag === 3 ? "当前商品已全部加购" : il1lI111.messageFlag === 4 && "没有加购资格"); + return; + } + let illiIIII = ii1I11I?.["resp_msg"] || "加购失败"; + this.putMsg(illiIIII); + this.wxStop(illiIIII); + } + async ["draw"]() { + let iill1I1l = await this.lzkjApi("api/task/addSkuPrice/draw"); + this.debug(iill1I1l); + if (iill1I1l && iill1I1l.resp_code === 0) { + let IiiIi11I = iill1I1l?.["data"] ?? {}; + if (IiiIi11I.skuFlag) { + this.putMsg("加购的商品数量不满足抽奖所需的数量"); + return; + } + if (IiiIi11I.drawNull) { + this.putMsg(IiiIi11I?.["draw"]?.["prizeName"] || "空气"); + IiiIi11I?.["draw"] && IiiIi11I?.["draw"]?.["prizeName"] && IiiIi11I?.["draw"]?.["prizeType"] === 3 && IiiIi11I?.["draw"]?.["addressId"] && IiiIi11I?.["draw"]?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = IiiIi11I.draw.addressId, this.prizeName = IiiIi11I.draw.prizeName, await this.saveAddress()); + return; + } else { + this.putMsg("空气"); + return; + } + } + let i1lIIIll = iill1I1l?.["resp_msg"]; + this.putMsg(i1lIIIll); + this.wxStop(i1lIIIll); + } + async ["inviteActivity"]() { + let I1ilIi1I = IIiIi1li.activity.userList && IIiIi1li.activity.userList.length > 0 ? IIiIi1li.activity.userList[0] : null; + if (!I1ilIi1I) return; + let II1lllil = await this.lzkjApi("api/task/addSkuPrice/activity", { + "shareUserId": "1744750944717832194" || "" + }); + if (II1lllil && II1lllil.resp_code === 0) { + let iiI1l11I = II1lllil?.["data"]?.["shareNum"] ?? 0, + l1I1IliI = II1lllil?.["data"]?.["shareFlag"] ?? 0; + this.debug(I1ilIi1I.pin, iiI1l11I, l1I1IliI); + if (l1I1IliI && iiI1l11I === 3) { + I1ilIi1I.helpedCount++; + I1ilIi1I.helpedCount >= I1ilIi1I.maxHelpCount && I1ilIi1I.needHelp && (I1ilIi1I.needHelp = false, IIiIi1li.activity.userList.shift(), await I1ilIi1I.addSku()); + } + } + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (["10036"].includes(this.activityType)) { + await this.login(); + await this.drawPrize(); + let lIi11iI1 = await this.lzkjApi("api/task/addSkuPrice/activity1"); + if (lIi11iI1 && lIi11iI1.resp_code === 0) { + let IiiI1iIi = lIi11iI1?.["data"]?.["skuInfoList"] ?? [], + llIliII = lIi11iI1?.["data"]?.["userAddSkuRecord"] ?? [], + iiil1Ill = lIi11iI1?.["data"]?.["addSkuNumber"] ?? 0, + I1lI11Il = lIi11iI1?.["data"]?.["addSkuStartTime"] ?? 0, + I1Ili1lI = lIi11iI1?.["data"]?.["addSkuEndTime"] ?? 0, + iIllIlll = lIi11iI1?.["data"]?.["priceTime"] ?? 0, + IlIiliiI = lIi11iI1?.["data"]?.["userSkuCount"] ?? 0, + IilIli1 = lIi11iI1?.["data"]?.["unlockSkuNumber"] ?? 0, + IiiIiilI = lIi11iI1?.["data"]?.["shareNum"] ?? 0, + iIili = lIi11iI1?.["data"]?.["shareFlag"] ?? 0, + Ii1ii1l1 = lIi11iI1?.["data"]?.["shareCount"] ?? 0; + this.debug(IiiIiilI, iIili); + IIiIi1li.activity.drawTimeStr = this.formatDate(iIllIlll, "yyyy-MM-dd HH:mm:ss"); + IIiIi1li.activity.drawTime = iIllIlll; + this.timestamp() < iIllIlll && (IIiIi1li.activity.noDraw = true); + if (this.timestamp() < I1lI11Il) { + this.putMsg("未到加购时间"); + this.stop(); + return; + } + if (["1006", "1005", "1002"].includes(this.joinCode)) { + if (!this.openCard) return this.putMsg(this.joinDes); + await this.getShopOpenCardInfo(); + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + await this.login(false); + } + if (this.timestamp() > I1lI11Il && this.timestamp() < I1Ili1lI) { + if (IlIiliiI >= iiil1Ill && IlIiliiI >= IilIli1 + Ii1ii1l1) { + this.putMsg("已完成加购"); + } + await this.inviteActivity(); + if (IilIli1 < iiil1Ill && IlIiliiI < iiil1Ill) { + await this.getUserId(); + this.helpedCount = Ii1ii1l1; + this.maxHelpCount = iiil1Ill - IilIli1; + !IIiIi1li.activity.userList && (IIiIi1li.activity.userList = []); + IIiIi1li.activity.userList.push(this); + } + this.debug(IilIli1 + Ii1ii1l1, IlIiliiI, iiil1Ill, IilIli1); + if (IilIli1 + Ii1ii1l1 > IlIiliiI && IilIli1 + Ii1ii1l1 >= iiil1Ill) { + await this.addSku(); + if (this.oneClickPurchase === 1) { + IiiI1iIi = IiiI1iIi.filter(I1lliII => !llIliII.some(lli1I1lI => lli1I1lI.skuId === I1lliII.skuId)); + if (IiiI1iIi.length === 0) { + this.putMsg("已完成加购"); + return; + } + for (let lIlIliI of IiiI1iIi) { + await this.addSku(lIlIliI.skuId); + } + } + } + } + this.debug(this.timestamp(), iIllIlll, IlIiliiI, iiil1Ill, this.drawNumber); + this.timestamp() > iIllIlll && IlIiliiI >= iiil1Ill && (await this.draw()); + } + return; + } + this.needHelp = false; + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.index === 0 && (await this.getShopInfo()); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let ll1liIIl = await this.activityContent({ + "status": 1 + }); + if (!ll1liIIl?.["result"] || !ll1liIIl?.["data"]) { + this.putMsg(ll1liIIl?.["errorMessage"]); + return; + } + this.prodectVos = ll1liIIl.data?.["prodectVos"] ?? []; + let Ii11I11I = ll1liIIl.data?.["addCarts"] ?? 1, + Illi1Iii = ll1liIIl.data?.["activityVo"] ?? {}, + lIiilllI = this.dateStringToTimestamp(Illi1Iii?.["drawTime"]), + ill11I1I = this.dateStringToTimestamp(Illi1Iii?.["cartStartTime"]), + llIII1Il = this.dateStringToTimestamp(Illi1Iii?.["cartEndTime"]), + IIl11llI = this.dateStringToTimestamp(Illi1Iii?.["startTime"]), + li1Ii11l = this.dateStringToTimestamp(Illi1Iii?.["endTime"]), + Ili11l11 = Illi1Iii?.["drawCondition"] ?? 1; + this.myUuid = ll1liIIl.data?.["joinRecord"]?.["myUuid"] ?? ""; + this.debug("startTime", "cartStartTime", ill11I1I, "cartEndTime", llIII1Il, IIl11llI, "drawTime", lIiilllI, "endTime", li1Ii11l); + this.rule = Illi1Iii?.["actRule"] ?? ""; + IIiIi1li.activity.timeStr = this.formatDate(IIl11llI, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(li1Ii11l, "yyyy-MM-dd HH:mm:ss"); + IIiIi1li.activity.startTime = IIl11llI; + IIiIi1li.activity.endTime = li1Ii11l; + IIiIi1li.activity.drawTimeStr = this.formatDate(lIiilllI, "yyyy-MM-dd HH:mm:ss"); + IIiIi1li.activity.drawTime = lIiilllI; + this.timestamp() < lIiilllI && (IIiIi1li.activity.noDraw = true); + IIl11llI && IIl11llI > Date.now() && (this.putMsg("活动未开始"), IIiIi1li.activity.noStart = true, this.stop()); + li1Ii11l && li1Ii11l < Date.now() && (this.putMsg("活动已结束"), this.stop()); + let ll11iil1 = Illi1Iii?.["needFollow"] ?? false, + Il1ii1Il = ll1liIIl.data?.["hasFollow"] ?? false; + ll11iil1 && !Il1ii1Il && (await this.follow()); + await this.getDrawPrizeInfo(); + if (this.timestamp() > lIiilllI && this.timestamp() < li1Ii11l && Ii11I11I >= Ili11l11) { + return await this.drawResult(); + } + if (this.timestamp() < llIII1Il) { + if (Ii11I11I >= Ili11l11) this.putMsg("已完成加购");else { + await this.quickAddCart(); + } + } + } + } + lIi1I11.activity = { + "activityUrl": activityUrl + }; + lIi1I11.TaskClass = i11llii; + lIi1I11.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_centerDraw.js b/jd_wx_centerDraw.js new file mode 100644 index 0000000..9d40e95 --- /dev/null +++ b/jd_wx_centerDraw.js @@ -0,0 +1,130 @@ +/* +老虎机抽奖beta v1.0.0 + +https://lzkj-isv.isvjd.com/drawCenter/activity/71ca645008bd4d688984bc7e737e6ebe?activityId=71ca645008bd4d688984bc7e737e6ebe +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10054&templateId=20210804190900ssq011&activityId=1722901315029733378&nodeId=101001054&prd=cjwx + +export B_WX_CENTER_DRAW_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("老虎机抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_CENTER_DRAW_URL); + +mode && (activityUrl = "https://lzkj-isv.isvjd.com/drawCenter/activity/ef729f6783cc405cbb9fa83e68ce9be3?activityId=ef729f6783cc405cbb9fa83e68ce9be3", activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10054&templateId=20210804190900ssq011&activityId=1722901315029733378&nodeId=101001054&prd=cjwx", activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10054&templateId=20210804190900ssq011&activityId=1722085969499193346&nodeId=101001054&prd=cjwx", activityUrl = "https://lzkj-isv.isvjd.com/drawCenter/activity/71ca645008bd4d688984bc7e737e6ebe?activityId=71ca645008bd4d688984bc7e737e6ebe"); +const { + RunMode: IIlII1l1, + UserMode: lIilIIi1 +} = require("./bear"); +IIlII1l1.envInfo = { + "name": "老虎机抽奖beta", + "runName": "jd_wx_centerDraw", + "version": "1.0.0" +}; +class lIll1ilI extends lIilIIi1 { + constructor(llII1iIl, ii1l11I1) { + super(llII1iIl, ii1l11I1); + this.lzkjOpenCard = true; + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (["10054"].includes(this.activityType)) { + await this.login(); + let l1IIlII = await this.lzkjApi("api/task/" + this.type + "/getTask", { + "shareUserId": "" + }); + this.debug(l1IIlII); + if (l1IIlII && l1IIlII.resp_code === 0) { + let I1IliIii = l1IIlII.data?.["taskList"] ?? []; + await this.lzkjTask(I1IliIii); + } + let IllIliii = await this.lzkjApi("api/prize/drawPrize"); + this.drawNumber = 0; + if (IllIliii && IllIliii.resp_code === 0) { + this.drawNumber = IllIliii.data?.["drawNumber"]; + } + if (this.drawNumber <= 0) { + this.putMsg("无抽奖次数"); + return; + } + this.drawNumber = Math.min(this.drawNumber, 7); + while (this.drawNumber-- > 0) { + let iil1IIll = await this.lzkjApi("api/prize/draw", { + "consumePoints": 0, + "actId": this.activityId + }); + this.debug(iil1IIll); + if (iil1IIll && iil1IIll.resp_code === 0) { + if (iil1IIll.data === "1") { + this.putMsg("积分不足"); + return; + } + this.putMsg(iil1IIll.data?.["prizeName"] || "空气"); + iil1IIll.data && iil1IIll.data?.["prizeName"] && iil1IIll.data?.["prizeType"] === 3 && iil1IIll.data?.["addressId"] && iil1IIll.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = iil1IIll.data.addressId, this.prizeName = iil1IIll.data?.["prizeName"], await this.saveAddress()); + await this.sleep(200); + } else { + let i1i1liI = iil1IIll?.["resp_msg"]; + this.putMsg(i1i1liI); + this.wxStop(i1i1liI); + return; + } + } + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.type = "drawCenter"; + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let I1i1llll = await this.activityContent({ + "shareUuid": "", + "nick": "", + "pinImg": "" + }); + if (!I1i1llll?.["result"] || !I1i1llll?.["data"]) { + this.putMsg(I1i1llll?.["errorMessage"]); + return; + } + let Iii1iiI1 = I1i1llll?.["data"]?.["chance"] ?? 3, + l1l11l = I1i1llll?.["data"]?.["isGameEnd"] ?? false; + if (l1l11l) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + if (Iii1iiI1 === 0) { + this.putMsg("抽奖机会不足"); + return; + } + Iii1iiI1 = Math.min(Iii1iiI1, 7); + while (Iii1iiI1-- > 0) { + let llIill1i = await this.wxApi("drawCenter/draw/luckyDraw", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(llIill1i); + if (llIill1i && llIill1i.result) this.putMsg("" + (llIill1i.data?.["name"] || "空气")), llIill1i.data?.["drawInfoType"] === 7 && llIill1i.data?.["needWriteAddress"] === "y" && llIill1i.data?.["addressId"] && (this.addressId = llIill1i.data.addressId, this.prizeName = llIill1i.data.name, await this.saveAddress()), await this.sleep(500);else { + let i1li11i1 = llIill1i?.["errorMessage"]; + if (i1li11i1?.["includes"]("未关注") && (await this.follow())) { + Iii1iiI1++; + continue; + } + this.putMsg(i1li11i1); + this.wxStop(i1li11i1); + return; + } + } + } +} +IIlII1l1.activity = { + "activityUrl": activityUrl +}; +IIlII1l1.TaskClass = lIll1ilI; +IIlII1l1.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_completeDraw.js b/jd_wx_completeDraw.js new file mode 100644 index 0000000..fc27dcb --- /dev/null +++ b/jd_wx_completeDraw.js @@ -0,0 +1,345 @@ +/* +完善有礼beta v2.1.0 + +https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=c9a7f0ca315d44aabecf618d953cadfd&venderId=1000091815 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10049&templateId=20210720190900wsxxyl011&activityId=1732713789232435201&nodeId=101001009&prd=cjwx +https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10049/1002/?activityId=1772602526133301250&shopId=1000399381 + +export B_WX_COMPLETE_DRAW_URL="" +export B_WX_COMPLETE_BEAN_NUM="2" # 超过这个数量才会开卡 默认值2 + +cron: 7 7 7 7 7 * +const $ = new Env("完善有礼beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_COMPLETE_DRAW_URL); + +if (mode) { + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=c9a7f0ca315d44aabecf618d953cadfd&venderId=1000091815"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10049&templateId=20210720190900wsxxyl011&activityId=1732713789232435201&nodeId=101001009&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=35bc437239234dd386cedae3751e9e53&venderId=102282&shareuserid4minipg=6%252BhitCZLEJf6Svvo%252BM5%252BfFhXBmEZA6lSVT%252B72G8p%252FfVoLg2u1PPhDKnKIGiyllSk&shopid=100391"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=0e39ac6147374ed68bd8112cf99788c0&venderId=1000385629"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10049/1002/?activityId=1772602526133301250&shopId=1000399381"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10049&activityId=1774620564769026049&templateId=20210720190900wsxxyl011&nodeId=101001009&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=2075e6cf7a64475c888303b7d95c9bb1&venderId=16401149"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=688c76293a42466b973fd62112de8e3d&venderId=14923588"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10049&templateId=20210720190900wsxxyl011&activityId=1784873822283304962&nodeId=101001009&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wx/completeInfoActivity/view/activity?activityId=a2bd9a11d77f48b5b8965eb11e9cc34a&venderId=1000092950"; + } + const { + RunMode: iI1II1i, + UserMode: lliii11, + baseCommonEnv: I1Ii1i, + baseCommonEnvKey: lI11ii1I + } = require("./bear"); + I1Ii1i.openCardBeanNum = parseInt(process.env.B_WX_COMPLETE_BEAN_NUM || "2"); + lI11ii1I.B_WX_COMPLETE_BEAN_NUM = "openCardBeanNum"; + iI1II1i.envInfo = { + "name": "完善有礼beta", + "runName": "jd_wx_completeDraw", + "version": "2.1.0" + }; + class l1il1l1i extends lliii11 { + constructor(li1l1Ii, I111iI1l) { + super(li1l1Ii, I111iI1l); + this.names = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康".split(""); + this.phones = this.generateRandomMobiles(10); + } + ["generateRandomMobiles"](iiilIIli) { + const l1I1Illi = ["130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "150", "151", "152", "153", "155", "156", "157", "158", "159", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189"]; + let ilIl1i1l = []; + for (let illI1i = 0; illI1i < iiilIIli; illI1i++) { + const IIil1 = l1I1Illi[Math.floor(Math.random() * l1I1Illi.length)]; + let I1i11ill = IIil1; + for (let i1lIlIII = 0; i1lIlIII < 8; i1lIlIII++) { + I1i11ill += Math.floor(Math.random() * 10); + } + ilIl1i1l.push(I1i11ill); + } + return ilIl1i1l; + } + ["firstCharToLowercase"](IiilIill) { + return IiilIill.charAt(0).toLowerCase() + IiilIill.slice(1); + } + async ["listDrawContent"]() { + lliii11.activity.listDrawContent && lliii11.activity?.["prizeList"] && (this.prizeList = lliii11.activity.prizeList); + let IIi11Ii1 = await this.wxApi("drawContent/listDrawContent", { + "activityId": this.activityId, + "type": this.activityType + }); + this.debug(IIi11Ii1); + if (!IIi11Ii1 || !IIi11Ii1.result) { + if (IIi11Ii1.errorMessage === null && IIi11Ii1.data === "") return this.putMsg("垃圾或领完"), this.stop(); + let I11Il11l = IIi11Ii1?.["errorMessage"] || "获取奖品失败"; + this.putMsg(I11Il11l); + await this.wxStopSync(I11Il11l); + this.exit(); + return; + } + this.prizeList = IIi11Ii1.data || []; + this.debug(this.prizeList); + this.prizeList = this.prizeList.filter(IiIlIili => [6, 7, 9, 13, 14, 15, 16].includes(IiIlIili.type) || IiIlIili.hasSendPrizeNum - IiIlIili.size > 0); + if (this.prizeList.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + lliii11.activity.prizeList = this.prizeList; + } + async ["userTask"]() { + await this.hitCache(); + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (this.mode === "v2") { + await this.login(); + let lI1I1IlI = await this.v2Api("api/" + this.activityType + "/getPrize"); + this.debug(lI1I1IlI); + if (!lI1I1IlI || lI1I1IlI.code !== 200) { + this.putMsg("获取活动信息失败"); + return; + } + if (lI1I1IlI.data?.["filter"](iII11i1i => iII11i1i.status === 1)["length"] > 0) { + this.putMsg("已领取"); + await this.writeLongCache(); + return; + } + if (!this.openCard) { + if (lI1I1IlI.data?.["some"](illI1iiI => illI1iiI.prizeName.includes("京豆"))) await this.bindWithVender();else return this.putMsg("活动仅限店铺会员参与"); + } + let I1iIIll1 = await this.v2Api("api/" + this.activityType + "/getItem"); + this.debug(I1iIIll1); + if (!I1iIIll1 || I1iIIll1.code !== 200) { + this.putMsg(I1iIIll1?.["message"] || "获取奖品失败"); + return; + } + let iIiIIi1i = I1iIIll1.data?.["allInfo"]; + if (I1iIIll1.data?.["status"] === 0) { + for (let IilI1lII of iIiIIi1i) { + switch (IilI1lII.num) { + case "1": + IilI1lII.content = this.names[this.random(0, this.names.length - 1)]; + break; + case "2": + IilI1lII.content = this.random(2000, 2022) + "/" + this.random(1, 12) + "/" + this.random(1, 27); + break; + case "3": + IilI1lII.content = this.phones[this.random(0, this.phones.length - 1)]; + break; + case "4": + IilI1lII.content = this.randomArray(["男", "女"], 1)[0]; + break; + case "5": + IilI1lII.content = this.random(1000000, 9999999) + "@qq.com"; + break; + case "6": + IilI1lII.content = "北京市/北京市/东城区"; + break; + default: + this.log("未知字段", IilI1lII.num, IilI1lII.title), IilI1lII.content = "1"; + } + } + let I1i1iI1 = await this.v2Api("api/" + this.activityType + "/addInfo", { + "allInfo": iIiIIi1i + }); + this.debug(I1i1iI1); + if (!I1i1iI1 || I1i1iI1.code !== 200) { + this.putMsg(I1i1iI1?.["message"] || "提交信息失败"); + return; + } + } + let iiIII1li = await this.v2Api("api/" + this.activityType + "/receivePrize"); + this.debug(iiIII1li); + if (!iiIII1li || iiIII1li.code !== 200) { + this.putMsg(iiIII1li?.["message"] || "领取奖品失败"); + return; + } + this.putMsg(iiIII1li.data?.["prizeName"] || "领取成功"); + await this.writeLongCache(); + return; + } + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.jinggengShopInfo(); + let Iiil1ill = await this.jinggengApi("postAddMaterial", { + "detail": JSON.stringify({ + "姓名": this.names[this.random(0, this.names.length - 1)], + "性别": this.randomArray(["男", "女"], 1)[0], + "生日": "19" + this.random(60, 99) + "-0" + this.random(1, 9) + "-0" + this.random(1, 9), + "手机号码": "" + this.phones[this.random(0, this.phones.length - 1)], + "地区(省市)": "北京市-北京市" + }) + }); + if (Iiil1ill && Iiil1ill.succ) { + let liilllil = JSON.parse(Iiil1ill.msg); + if (liilllil.isSendSucc && liilllil.drawAwardDto) { + let l1111iiI = liilllil?.["drawAwardDto"]?.["awardName"]; + this.putMsg("" + liilllil?.["drawAwardDto"]?.["awardDenomination"] + l1111iiI); + await this.writeLongCache(); + if (liilllil?.["drawAwardDto"]?.["awardType"] === "JD_GOODS") { + this.addressId = liilllil?.["drawAwardDto"]?.["actLogId"]; + this.prizeName = l1111iiI; + await this.saveAddress(); + } + } + return; + } + let IIlllI1i = Iiil1ill?.["msg"]; + this.putMsg(IIlllI1i); + await this.wxStopSync(IIlllI1i); + return; + } + if (["10049"].includes(this.activityType)) { + await this.login(); + let IiI1iil1 = await this.lzkjApi("api/task/perfectInfo/activity"); + this.debug(IiI1iil1); + if (!IiI1iil1 || IiI1iil1.resp_code !== 0) { + this.putMsg(IiI1iil1?.["resp_msg"] || "获取奖品失败"); + await this.wxStopSync(IiI1iil1?.["resp_msg"]); + return; + } + if (IiI1iil1.data?.["flag"] === "002") return this.putMsg("已领取"), await this.writeLongCache(); + let l1l11iii = [IiI1iil1?.["data"]]; + l1l11iii.some(I1l1i1lI => I1l1i1lI?.["prizeName"]?.["includes"]("京豆") && I1l1i1lI?.["beanNum"] >= I1Ii1i.openCardBeanNum) && (this.openCard = true); + await this.lzkjOpenCardTask(); + l1l11iii = l1l11iii.filter(Ii1l1III => Ii1l1III?.["prizeName"]["includes"]("京豆") || Ii1l1III?.["prizeName"]["includes"]("积分")); + if (l1l11iii.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let i1I1lliI = IiI1iil1.data.allInfo || []; + for (let i1Il1liI of i1I1lliI) { + switch (i1Il1liI.num) { + case "info01": + i1Il1liI.content = this.names[this.random(0, this.names.length - 1)]; + break; + case "info02": + i1Il1liI.content = this.random(2000, 2022) + "年" + this.random(1, 12) + "月" + this.random(1, 27) + "日 "; + break; + case "info03": + i1Il1liI.content = this.phones[this.random(0, this.phones.length - 1)]; + break; + case "info04": + i1Il1liI.content = this.randomArray(["男", "女"], 1)[0]; + break; + default: + this.log("未知字段", i1Il1liI.num, i1Il1liI.title), i1Il1liI.content = "1"; + } + } + let Ii1i1i1I = await this.lzkjApi("api/task/perfectInfo/addInfo", { + "perfectInfo": i1I1lliI + }); + this.debug(Ii1i1i1I); + if (!Ii1i1i1I || Ii1i1i1I.resp_code !== 0) { + this.putMsg(Ii1i1i1I?.["resp_msg"]); + await this.wxStopSync(Ii1i1i1I?.["resp_msg"]); + return; + } + await this.lzkjApi("api/task/perfectInfo/activity"); + await this.acquire(IiI1iil1.data.prizeId, true); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + await this.listDrawContent(); + let lli11ii1 = await this.wxApi("completeInfoActivity/selectById", { + "activityId": this.activityId, + "pin": this.secretPin, + "venderId": this.venderId + }); + this.debug(lli11ii1); + if (!lli11ii1 || !lli11ii1.result) { + let II1lli11 = lli11ii1?.["errorMessage"]; + this.putMsg(II1lli11); + await this.wxStopSync(II1lli11); + return; + } + let i1llI11 = lli11ii1.data?.["startTime"] || 0, + iiI11II = lli11ii1.data?.["endTime"] || 0; + lliii11.activity.startTime = i1llI11; + lliii11.activity.endTime = iiI11II; + if (i1llI11 && i1llI11 > this.timestamp()) { + this.log("活动未开始"); + this.stop(); + return; + } + if (iiI11II && iiI11II < this.timestamp()) { + this.log("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + let IIl1Ii = {}; + for (let IilI111l in lli11ii1.data) { + if (IilI111l.startsWith("choose") && lli11ii1.data[IilI111l] === "y") { + let IIiiiil1 = this.firstCharToLowercase(IilI111l?.["replace"]("choose", "")); + switch (IIiiiil1) { + case "name": + IIl1Ii.name = this.names[this.random(0, this.names.length - 1)]; + break; + case "phone": + IIl1Ii.phone = this.phones[this.random(0, this.phones.length - 1)]; + break; + case "weixin": + IIl1Ii.weiXin = "wx_" + this.randomNum(10); + break; + case "qQ": + IIl1Ii.QQ = this.randomNum(10); + break; + case "birth": + IIl1Ii.birthDay = "19" + this.random(60, 99) + "-0" + this.random(1, 9) + "-0" + this.random(1, 9); + break; + case "professional": + IIl1Ii.professional = this.randomArray(["科学家", "工人", "农民", "白领", "司机"], 1)[0]; + break; + case "address": + IIl1Ii.province = "上海市", IIl1Ii.city = "黄浦区", IIl1Ii.address = "未知"; + break; + case "email": + IIl1Ii.email = random(1000000, 9999999) + "@qq.com"; + break; + case "gender": + IIl1Ii.gender = this.randomArray(["男", "女"], 1)[0]; + break; + default: + IIl1Ii[IIiiiil1] = "1"; + } + } + } + if (lli11ii1.data?.["customJson"]) { + let lIiiI = []; + for (let li1I1II = 0; li1I1II < JSON.parse(lli11ii1.data.customJson).length; li1I1II++) { + lIiiI.push("1"); + } + IIl1Ii.customContent = JSON.stringify(lIiiI); + } + IIl1Ii.drawInfoId = this.prizeList[0].drawInfoId; + IIl1Ii.activityId = this.activityId; + IIl1Ii.venderId = this.venderId; + IIl1Ii.pin = this.secretPin; + IIl1Ii.vcode = ""; + IIl1Ii.token = this.isvToken; + IIl1Ii.fromType = "APP"; + let IIIilil = await this.wxApi("wx/completeInfoActivity/save", IIl1Ii); + this.debug(IIIilil); + if (IIIilil && IIIilil.result) { + if (IIIilil.data?.["drawOk"]) this.putMsg("领取成功"), await this.writeLongCache();else IIIilil.data === "修改成功" ? (this.putMsg("已领过"), await this.writeLongCache()) : (this.putMsg(IIIilil.data?.["errorMessage"]), await this.wxStopSync(IIIilil.data?.["errorMessage"])); + return; + } + let llIiIili = IIIilil.errorMessage; + this.putMsg(llIiIili); + await this.wxStopSync(llIiIili); + } + } + iI1II1i.activity = { + "activityUrl": activityUrl + }; + iI1II1i.TaskClass = l1il1l1i; + iI1II1i.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_daily.js b/jd_wx_daily.js new file mode 100644 index 0000000..adb0a0e --- /dev/null +++ b/jd_wx_daily.js @@ -0,0 +1,119 @@ +/* +每日抢beta v2.0.2 + +https://cjhy-isv.isvjcloud.com/activity/daily/wx/indexPage?activityId=25c8fa02eab04f6fb6ffbca9eef11e19 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10022&templateId=20210518190900mrqhl011&activityId=1764484786904494081&nodeId=101001&prd=cjwx + +export B_WX_DAILY_URL="" +export B_WX_DAILY_OPEN_MODE="0" // 0: 关闭, 1: 开启 + +cron: 7 7 7 7 7 * +const $ = new Env("每日抢beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_DAILY_GIFT_URL); + +mode && (activityUrl = "https://cjhy-isv.isvjcloud.com/activity/daily/wx/indexPage?activityId=25c8fa02eab04f6fb6ffbca9eef11e19", activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10022&templateId=20210518190900mrqhl011&activityId=1764484786904494081&nodeId=101001&prd=cjwx", activityUrl = "https://cjhy-isv.isvjcloud.com/activity/daily/wx/indexPage1/236b89e3b3d24379a56e6cb07ee997fa?activityId=236b89e3b3d24379a56e6cb07ee997fa&venderId=33957"); +const { + RunMode: I11ilI1i, + UserMode: l11ll1i, + baseCommonEnv: illill1i, + baseCommonEnvKey: iI1I1ili +} = require("./bear"); +I11ilI1i.envInfo = { + "name": "每日抢beta", + "runName": "jd_wx_daily", + "version": "2.0.2" +}; +illill1i.openCardMode = parseInt(process.env.B_WX_DAILY_OPEN_MODE || 0); +iI1I1ili.B_WX_DAILY_OPEN_MODE = "openCardMode"; +class IiI1llII extends l11ll1i { + constructor(li1iI11, lll1IIII) { + super(li1iI11, lll1IIII); + this.lzkjOpenCard = true; + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (["10022"].includes(this.activityType)) { + await this.login(); + if (illill1i.openCardMode && this.joinCode !== "1001") { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.putMsg(this.joinDes); + await this.login(false); + } + let l11Iiiii = await this.lzkjApi("api/task/dailyGrabs/activity"); + this.debug(l11Iiiii); + (!l11Iiiii || l11Iiiii.resp_code !== 0) && (this.putMsg(l11Iiiii.resp_msg || "获取活动信息失败"), this.exit()); + let li11I1i1 = l11Iiiii.data?.["activityEndTime"], + liilllll = l11Iiiii.data?.["activityStartTime"]; + l11ll1i.activity.timeStr = this.formatDate(liilllll, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(li11I1i1, "yyyy-MM-dd HH:mm:ss") + "\n" + "每日开抢时间:" + l11Iiiii.data?.["hours"] + "点" + l11Iiiii.data?.["minutes"] + "分"; + if (l11Iiiii.data?.["receiveStatus"] === 1) return this.putMsg("已领取"); + let lIlI1l1 = await this.lzkjApi("api/task/dailyGrabs/dayReceive", { + "prizeInfoId": l11Iiiii.data?.["prizeInfoId"] + }); + this.debug(lIlI1l1); + if (lIlI1l1 && lIlI1l1.resp_code === 0) { + this.putMsg(lIlI1l1.data?.["prizeName"] || "空气"); + lIlI1l1.data?.["prizeType"] === 3 && (this.addressId = lIlI1l1.data?.["addressId"], this.prizeName = lIlI1l1.data?.["prizeName"], await this.saveAddress()); + return; + } + let iillI1I = lIlI1l1?.["resp_msg"] || "抢礼物失败"; + this.putMsg(iillI1I); + this.wxStop(iillI1I); + return; + } + await this.wxCommonInfo(); + let iI11I1iI = await this.taskGet(this.activityUrl), + iiiillI = this.textToHtml(iI11I1iI), + lIl1lli1 = iiiillI("#actTimeStr", "body").attr("value"), + l11li11l = iiiillI("#giftJson", "body").attr("value"); + l11li11l && (l11li11l = JSON.parse(l11li11l)); + lIl1lli1 && (l11ll1i.activity.timeStr = lIl1lli1.replace(/\s*至\s*/, "至") + "\n" + "每日开抢时间:" + l11li11l?.["hours"] + "点" + l11li11l?.["minutes"] + "分"); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + if (illill1i.openCardMode) { + let IIliiI1i = "", + IiIillII = {}; + this.activityUrl.includes("//cjhy") ? (IIliiI1i = "mc/new/brandCard/common/shopAndBrand/getOpenCardInfo", IiIillII = { + "venderId": this.venderId, + "buyerPin": this.secretPin, + "activityType": this.activityType + }) : (IIliiI1i = "wxCommonInfo/getActMemberInfo", IiIillII = { + "activityId": this.activityId, + "venderId": this.venderId, + "pin": this.secretPin + }); + let i1ii1lII = await this.wxApi(IIliiI1i, IiIillII); + this.debug(i1ii1lII); + if (i1ii1lII && i1ii1lII.result && !i1ii1lII.data?.["openedCard"]) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.exit(); + } + } + let lll11l = await this.wxApi("activity/daily/wx/grabGift", { + "actId": this.activityId, + "pin": this.secretPin + }); + this.debug(lll11l); + if (lll11l && lll11l.isOk) { + this.putMsg(lll11l.gift?.["gift"]?.["giftName"] || "空气"); + lll11l.gift?.["gift"]?.["giftType"] === 7 && (this.addressId = lll11l?.["addressId"], this.prizeName = lll11l.gift?.["gift"]?.["giftName"], await this.saveAddress()); + return; + } + let iiiIill = lll11l?.["msg"] || "抢礼物失败"; + this.putMsg(iiiIill); + this.wxStop(iiiIill); + } +} +I11ilI1i.activity = { + "activityUrl": activityUrl +}; +I11ilI1i.TaskClass = IiI1llII; +I11ilI1i.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_fansDraw.js b/jd_wx_fansDraw.js new file mode 100644 index 0000000..d67a44c --- /dev/null +++ b/jd_wx_fansDraw.js @@ -0,0 +1,170 @@ +/* +粉丝互动beta v1.0.0 + +https://lzkj-isv.isvjcloud.com/wxFansInterActionActivity/activity/5876f114e9524b91ad00080850c49e30?activityId=5876f114e9524b91ad00080850c49e30 + +export B_WX_FANS_DRAW_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("粉丝互动beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_FANS_DRAW_URL); + +mode && (activityUrl = "https://lzkj-isv.isvjcloud.com/wxFansInterActionActivity/activity/5876f114e9524b91ad00080850c49e30?activityId=5876f114e9524b91ad00080850c49e30"); +const { + RunMode: iI11IIiI, + UserMode: il1lIl1i +} = require("./bear"); +iI11IIiI.envInfo = { + "name": "粉丝互动beta", + "runName": "jd_wx_fansDraw", + "version": "1.0.0" +}; +class iII1i1lI extends il1lIl1i { + constructor(lliliIlI, l1ll1l11) { + super(lliliIlI, l1ll1l11); + this.content = []; + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let Ill1II11 = await this.wxApi("wxFansInterActionActivity/activityContent", { + "activityId": this.activityId, + "pin": this.secretPin + }); + if (!Ill1II11 || !Ill1II11.result) { + let iiIIIIil = Ill1II11?.["msg"] || "获取活动信息失败"; + this.putMsg(iiIIIIil); + this.wxStop(iiIIIIil); + return; + } + let lIIII1i = Ill1II11.data?.["actInfo"]?.["startTime"], + ii1i1lii = Ill1II11.data?.["actInfo"]?.["endTime"]; + ["giftLevelOne", "giftLevelTwo", "giftLevelThree"].forEach(I1IiIliI => JSON.parse(Ill1II11.data?.["actInfo"]?.[I1IiIliI] ?? "[]").forEach(iii1lIIl => this.content.push(iii1lIIl))); + this.shopName = Ill1II11.data?.["actInfo"]?.["shopName"]; + let iliI1l11 = Ill1II11.data?.["actorInfo"]; + il1lIl1i.activity.shopName = this.shopName; + il1lIl1i.activity.startTime = lIIII1i; + il1lIl1i.activity.endTime = ii1i1lii; + if (lIIII1i && this.timestamp() < lIIII1i) { + this.putMsg("活动未开始"); + this.wxStop(); + return; + } + if (ii1i1lii && this.timestamp() > ii1i1lii) { + this.putMsg("活动已结束"); + this.wxStop(); + return; + } + if (iliI1l11?.["prizeOneStatus"] && iliI1l11?.["prizeTwoStatus"] && iliI1l11?.["prizeThreeStatus"]) { + this.putMsg("已领取所有奖品"); + return; + } + let lI1liliI = iliI1l11.uuid, + I11II1l1 = { + 1: "task1Sign", + 2: "task2BrowGoods", + 3: "task3AddCart", + 4: "task4Share", + 5: "task5Remind", + 6: "task6GetCoupon", + 7: "task7MeetPlaceVo" + }, + IIlIi1l1 = Ill1II11.data?.["actInfo"]?.["taskIds"]; + for (let ill1IIIi of IIlIi1l1.split(",")) { + let lIill11 = Ill1II11.data?.[I11II1l1[ill1IIIi]] ?? {}; + if (lIill11.finishedCount >= lIill11.upLimit) continue; + for (let i1ll1i1 = 0; i1ll1i1 < lIill11.upLimit - lIill11.finishedCount; i1ll1i1++) { + try { + if (["task1Sign", "task4Share", "task5Remind", "task7MeetPlaceVo"].includes(I11II1l1[ill1IIIi])) { + let iI11Il = I11II1l1[ill1IIIi] === "task1Sign" ? "doSign" : I11II1l1[ill1IIIi] === "task4Share" ? "doShareTask" : I11II1l1[ill1IIIi] === "task5Remind" ? "doRemindTask" : "doMeetingTask"; + await this.wxApi("wxFansInterActionActivity/" + iI11Il, { + "activityId": this.activityId, + "uuid": lI1liliI + }); + } + if (["task2BrowGoods", "task3AddCart"].includes(I11II1l1[ill1IIIi]) && lIill11.taskGoodList?.["length"] > 0) { + let iIil1IIl = lIill11.taskGoodList, + illlliI1 = iIil1IIl[i1ll1i1].skuId, + i1iIiI1I = I11II1l1[ill1IIIi] === "task2BrowGoods" ? "doBrowGoodsTask" : "doAddGoodsTask"; + await this.wxApi("wxFansInterActionActivity/" + i1iIiI1I, { + "activityId": this.activityId, + "uuid": lI1liliI, + "skuId": illlliI1 + }); + } + if (I11II1l1[ill1IIIi] === "task6GetCoupon" && lIill11.taskCouponInfoList?.["length"] > 0) { + let lI1IIl11 = lIill11.taskCouponInfoList, + il11illl = lI1IIl11[0].couponId; + await this.wxApi("wxFansInterActionActivity/doGetCouponTask", { + "activityId": this.activityId, + "uuid": lI1liliI, + "couponId": il11illl + }); + } + } catch (I1Ii1II) { + this.log(I1Ii1II); + } finally { + this.sleep(1500); + } + } + } + let iliIilIi = iliI1l11?.["follow"]; + !iliIilIi && (await this.wxApi("wxFansInterActionActivity/followShop", { + "activityId": this.activityId, + "uuid": lI1liliI + })); + Ill1II11 = await this.wxApi("wxFansInterActionActivity/activityContent", { + "activityId": this.activityId, + "pin": this.secretPin + }); + iliI1l11 = Ill1II11.data?.["actorInfo"] || iliI1l11; + let IiI1illi = iliI1l11?.["energyValue"] ?? 0; + IiI1illi += iliI1l11?.["fansLoveValue"] ?? 0; + let lIiiIi1l = iliI1l11?.["prizeOneStatus"] ?? false, + IIli11I1 = iliI1l11?.["prizeTwoStatus"] ?? false, + i11i1Ii = iliI1l11?.["prizeThreeStatus"] ?? false, + lIi1iiiI = Ill1II11.data?.["actConfig"], + Ii1IlIli = lIi1iiiI?.["prizeScoreOne"] ?? 0, + lil1IlII = lIi1iiiI?.["prizeScoreTwo"] ?? 0, + l1i1lI11 = lIi1iiiI?.["prizeScoreThree"] ?? 0, + iIl1Iii1 = ""; + !lIiiIi1l && IiI1illi >= Ii1IlIli && (iIl1Iii1 = "01"); + !IIli11I1 && IiI1illi >= lil1IlII && (iIl1Iii1 = "02"); + !i11i1Ii && IiI1illi >= l1i1lI11 && (iIl1Iii1 = "03"); + if (iIl1Iii1) { + let ili1Iil1 = await this.wxApi("wxFansInterActionActivity/startDraw", { + "activityId": this.activityId, + "uuid": lI1liliI, + "drawType": iIl1Iii1 + }); + this.log(ili1Iil1); + if (ili1Iil1 && ili1Iil1.result) { + let l1IIIilI = ili1Iil1.data.drawOk ? ili1Iil1.data?.["name"] : ili1Iil1.data?.["errorMessage"] || "空气"; + this.putMsg(l1IIIilI); + ili1Iil1.data.needWriteAddress === "y" && ili1Iil1.data?.["drawInfoType"] === 7 && ili1Iil1.data?.["addressId"] && (this.addressId = ili1Iil1.data.addressId, this.prizeName = l1IIIilI, await this.saveAddress()); + return; + } + let ilI111I = ili1Iil1?.["errorMessage"]; + this.putMsg(ilI111I); + this.wxStop(ilI111I); + return; + } + this.putMsg("积分:" + IiI1illi + ",兑换1:" + lIiiIi1l + ",兑换2:" + IIli11I1 + "兑换3:" + i11i1Ii); + } +} +iI11IIiI.activity = { + "activityUrl": activityUrl +}; +iI11IIiI.TaskClass = iII1i1lI; +iI11IIiI.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_followDraw.js b/jd_wx_followDraw.js new file mode 100644 index 0000000..5e09124 --- /dev/null +++ b/jd_wx_followDraw.js @@ -0,0 +1,196 @@ +/* +关注抽奖beta v1.0.1 + +https://cjhy-isv.isvjcloud.com/wxShopFollowActivity/activity?activityId=92406df13eae4203b77d7a567c398326 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10069&templateId=ac8b6564-aa35-4ba5-aa62-55b0ce61b5d01&activityId=1719974616209104898&nodeId=101001&prd=cjwx +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10053&templateId=20210804190900gzspyl011&activityId=1718891863502409730&nodeId=101001053&prd=cjwx +https://jinggeng-isv.isvjcloud.com/ql/front/showFavoriteShop?id=9e8080a784add0d20184c74e8f0659f5&user_id=11179724 + +export B_WX_FOLLOW_DRAW_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("关注抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_FOLLOW_DRAW_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10069&templateId=ac8b6564-aa35-4ba5-aa62-55b0ce61b5d01&activityId=1719974616209104898&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10053&templateId=20210804190900gzspyl011&activityId=1718891863502409730&nodeId=101001053&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxShopFollowActivity/activity?activityId=92406df13eae4203b77d7a567c398326"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/showFavoriteShop?id=9e8080a78b83db8f018b854284f27565&user_id=10028198"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10069&activityId=1723989742404182018&templateId=ac8b6564-aa35-4ba5-aa62-55b0ce61b5d01&nodeId=101001&prd=cjwx"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/showFavoriteShop?id=9e8080a784add0d20184c74e8f0659f5&user_id=11179724"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10053&templateId=20210804190900gzspyl011&activityId=1717457082637680641&nodeId=101001053&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v1/index?activityType=10069&templateId=b60a7f97-84ed-445b-a2e2-9709da4a4d34&activityId=1775495796115959810&nodeId=101001&prd=crm"; + } + const { + RunMode: lI11Il1, + UserMode: i1Ii1i1i + } = require("./bear"); + lI11Il1.envInfo = { + "name": "关注抽奖beta", + "runName": "jd_wx_followDraw", + "version": "1.0.1" + }; + class iII11II extends i1Ii1i1i { + constructor(il1l1iii, IilIllIl) { + super(il1l1iii, IilIllIl); + } + async ["getActivityContentOnly"]() {} + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.jinggengShopInfo(); + let I1ll11li = await this.jinggengApi("postFavoriteShop"); + this.debug(I1ll11li); + if (I1ll11li && I1ll11li.succ) { + let il1lli1I = I1ll11li.msg ?? "{}", + lIlI11i = JSON.parse(il1lli1I); + if (lIlI11i?.["actLogDto"]?.["remark"]) { + this.putMsg(lIlI11i?.["actLogDto"]?.["remark"]); + return; + } + } else { + let iIlIIl = I1ll11li?.["msg"] || "抽奖失败"; + this.putMsg(iIlIIl); + this.wxStop(); + } + return; + } + await this.getDefenseUrls(); + if (["10053", "10069"].includes(this.activityType)) { + await this.login(); + if (this.type === "lkFollowShop") { + await this.unfollow(); + let iIiil111 = await this.taskGet("api/task/" + this.type + "/getUserFollowInfo"); + this.debug(iIiil111); + if (iIiil111 && iIiil111.resp_code === 0) { + if (iIiil111.data.followShop) { + let IIllili1 = await this.taskGet("api/task/" + this.type + "/saveFollowInfo?actType=" + this.activityType); + this.debug(IIllili1); + if (IIllili1 && IIllili1.resp_code === 0) { + this.putMsg(IIllili1.data?.["prizeName"] || "空气"); + return; + } + let il11l1I1 = IIllili1?.["resp_msg"] || "关注店铺失败"; + this.putMsg(il11l1I1); + return; + } else this.putMsg("此活动只针对新关注店铺用户~"); + } else { + let lIII1lli = iIiil111?.["resp_msg"] || "获取关注信息失败"; + this.putMsg(lIII1lli); + } + return; + } + if (this.type === "followGoods") { + let Ill11lIl = await this.lzkjApi("api/task/" + this.type + "/getFollowGoods"); + if (Ill11lIl && Ill11lIl.resp_code === 0) { + this.taskId = Ill11lIl.data?.[0]?.["taskId"]; + let iil1IiIl = Ill11lIl.data?.[0]?.["completeCount"] || 0, + IlIilllI = Ill11lIl.data?.[0]?.["finishNum"] || 0, + i1II1il = Ill11lIl.data?.[0]?.["oneClickFollowPurchase"] || 1, + l1ll1iii = Ill11lIl.data?.[0]?.["status"] || 0, + il111Ii = Ill11lIl.data?.[0]?.["skuInfoVO"] || []; + il111Ii = il111Ii.filter(Ilii11li => Ilii11li.status === 0); + if (iil1IiIl >= IlIilllI || l1ll1iii === 1) { + this.putMsg("已领取"); + return; + } + if (i1II1il === 0) { + let i1llIlll = await this.lzkjApi("api/task/" + this.type + "/followGoods", { + "taskId": this.taskId, + "skuId": "" + }); + this.debug(i1llIlll); + if (i1llIlll && i1llIlll.resp_code === 0) { + this.putMsg(i1llIlll.data?.["prizeName"] || "空气"); + return; + } + let Ii1ilil = i1llIlll?.["resp_msg"] || "关注商品失败"; + this.log(Ii1ilil); + } else for (let lIIi11ll of il111Ii) { + let i1ilIil = await this.lzkjApi("api/task/" + this.type + "/followGoods", { + "skuId": lIIi11ll.skuId + }); + this.debug(i1ilIil); + if (i1ilIil && i1ilIil.resp_code === 0) { + if (i1ilIil.data) { + this.putMsg(i1ilIil.data?.["prizeName"] || "空气"); + return; + } + } + let iI1ii111 = i1ilIil?.["resp_msg"] || "关注商品失败"; + this.log(iI1ii111); + if (iI1ii111.includes("会员等级")) { + return; + } + } + } else { + let i1lll1II = Ill11lIl?.["resp_msg"] || "获取关注商品信息失败"; + this.log(i1lll1II); + } + } + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.index === 0 && (await this.getShopInfo()); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let lIiIil1i = await this.wxApi("wxShopFollowActivity/activityContentOnly", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(lIiIil1i); + if (lIiIil1i && lIiIil1i.result) { + let Iliilii = lIiIil1i.data.hasFollow ?? false, + II1iiI1 = lIiIil1i.data.canDrawTimes ?? 1, + IIIII = lIiIil1i.data.startTime ?? 0, + I111I1i = lIiIil1i.data.endTime ?? 0; + i1Ii1i1i.activity.startTime = IIIII; + i1Ii1i1i.activity.endTime = I111I1i; + const II11IiI1 = this.formatDate(IIIII, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(I111I1i, "yyyy-MM-dd HH:mm:ss"); + i1Ii1i1i.activity.timeStr = II11IiI1; + if (IIIII && IIIII > Date.now()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (I111I1i && I111I1i < Date.now()) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + if (II1iiI1 === 0) { + this.putMsg("无抽奖次数"); + return; + } + Iliilii && (await this.unfollow()); + if (this.domain.includes("cjhy")) await this.follow();else { + let Ii1ii111 = await this.wxApi("wxShopFollowActivity/follow", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(Ii1ii111); + if (!(Ii1ii111 && Ii1ii111.result)) { + let l11iilI = Ii1ii111?.["errorMessage"] || "关注店铺失败"; + this.putMsg(l11iilI); + return; + } + } + await this.getPrize(); + } + } + } + lI11Il1.activity = { + "activityUrl": activityUrl + }; + lI11Il1.TaskClass = iII11II; + lI11Il1.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_game.js b/jd_wx_game.js new file mode 100644 index 0000000..edd659f --- /dev/null +++ b/jd_wx_game.js @@ -0,0 +1,384 @@ +/* +无线游戏beta v2.0.1 + +https://cjhy-isv.isvjcloud.com/wxGameActivity/activity?activityId=2e8c28b441b34d03ab4579b1dd78fda3 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10092&templateId=831049299456454111&activityId=1730467509346807809&nodeId=101001&prd=cjwx +https://lzkj-isv.isvjd.com/wxgame/activity/de387009255e49d68a1a1ebc9973dc2a?activityId=de387009255e49d68a1a1ebc9973dc2a +https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10086/1001/?activityId=1809050581606518785&shopId=1000004065 + +export B_WX_GAME_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("无线游戏beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_GAME_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10092&templateId=831049299456454111&activityId=1730467509346807809&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxGameActivity/activity?activityId=2e8c28b441b34d03ab4579b1dd78fda3"; + activityUrl = "https://lzkj-isv.isvjd.com/wxgame/activity/de387009255e49d68a1a1ebc9973dc2a?activityId=de387009255e49d68a1a1ebc9973dc2a"; + activityUrl = "https://lzkj-isv.isvjd.com/wxgame/activity/7d77dd9caf16432cac8894e644bf146f?activityId=7d77dd9caf16432cac8894e644bf146f"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10086/1001/?activityId=1809050581606518785&shopId=1000004065"; + } + const { + RunMode: _0xfcbdcc, + UserMode: _0xd05e66 + } = require("./bear"); + _0xfcbdcc.envInfo = { + "name": "无线游戏beta", + "runName": "jd_wx_game", + "version": "2.0.1" + }; + let _0x120d7f = ["10082", "10084", "10086", "10089", "10091", "10092", "10093", "10094", "10095"]; + class _0xbfd39f extends _0xd05e66 { + constructor(_0x287e53, _0x5cfa76) { + super(_0x287e53, _0x5cfa76); + } + async ["v2ToDoTask"](_0x5d8961, _0x512db6 = "") { + let _0x5219b9 = { + 2: "浏览店铺", + 7: "加购商品", + 8: "购买商品", + 9: "分享商品", + 12: "分享活动" + }, + _0x373350 = { + 2: "browseShop/shareShop", + 7: "addSku/excute", + 9: "shareSku", + 12: "shareActivity" + }, + _0x1ed663 = await this.v2Api("api/" + this.activityType + "/" + _0x373350[_0x5d8961], { + "skuId": _0x512db6 + }); + this.debug(_0x1ed663, _0x5d8961); + if (_0x1ed663 && _0x1ed663.code === 200) { + return this.log("任务[" + (_0x5219b9[_0x5d8961] || _0x512db6 || _0x5d8961) + "]完成"), _0x1ed663.data; + } + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "v2") { + await this.login(); + let _0x2abea7 = await this.v2Api("api/" + this.activityType + "/getTask"); + this.debug(_0x2abea7); + if (_0x2abea7 && _0x2abea7.code === 200) { + let _0x1c9170 = _0x2abea7?.["data"] || []; + for (let _0x30e3dc of _0x1c9170) { + if (_0x30e3dc.taskFinishGiveAllLotteryCount >= _0x30e3dc.totalLimit) continue; + switch (_0x30e3dc.taskType) { + case 2: + case 12: + await this.v2ToDoTask(_0x30e3dc.taskType); + break; + case 9: + let _0x3102e1 = await this.v2Api("api/" + this.activityType + "/getShareSkuTaskSkuList"), + _0x1bfbb9 = _0x3102e1?.["data"]?.["filter"](_0x4eddc9 => !_0x4eddc9.isOperated) || []; + for (let _0x5c2024 = _0x30e3dc.taskFinishGiveAllLotteryCount || 0; _0x5c2024 < Math.min(_0x30e3dc.totalLimit, _0x1bfbb9.length); _0x5c2024++) { + await this.v2ToDoTask(9, _0x1bfbb9.shift().skuId); + } + break; + case 7: + let _0xadb004 = await this.v2Api("api/" + this.activityType + "/addSku/getSkuList"), + _0x3a6de8 = _0xadb004?.["data"]?.["filter"](_0x93d1c3 => !_0x93d1c3.isOperated) || []; + for (let _0xdcff7e = _0x30e3dc.taskFinishGiveAllLotteryCount || 0; _0xdcff7e < Math.min(_0x30e3dc.totalLimit, _0x3a6de8.length); _0xdcff7e++) { + await this.v2ToDoTask(7, _0x3a6de8.shift().skuId); + } + break; + } + } + } + let _0x4f0f26 = await this.v2Api("api/" + this.activityType + "/gameChanceNum"); + this.debug(_0x4f0f26); + let _0x4e0068 = _0x4f0f26?.["data"] ?? 0; + while (_0x4e0068-- > 0) { + await this.sleep(2000, 3000); + let _0x3ec701 = await this.v2Api("api/" + this.activityType + "/gameStart"); + this.debug(_0x3ec701); + let _0x2a3a0d = _0x3ec701.data.uuid; + await this.sleep(3000, 5000); + let _0x23d215 = await this.v2Api("api/" + this.activityType + "/gameEnd", { + "uuid": _0x2a3a0d + }); + this.debug(_0x23d215); + } + let _0x2aee39 = await this.v2Api("api/" + this.activityType + "/chanceNum"); + this.debug(_0x2aee39); + let _0x3e5c0e = _0x2aee39?.["data"] ?? 5; + this.debug(_0x3e5c0e); + while (_0x3e5c0e-- > 0) { + let _0x487bb1 = await this.v2Api("api/" + this.activityType + "/lotteryDraw"); + this.log(_0x487bb1); + if (_0x487bb1 && _0x487bb1.code === 200) { + this.putMsg(_0x487bb1?.["data"]?.["prizeName"] || "空气"); + _0x487bb1?.["data"]?.["result"]?.["result"] !== "true" && _0x487bb1?.["data"]?.["result"]?.["result"] !== true && _0x487bb1?.["data"]?.["activityPrizeId"] && (this.addressId = _0x487bb1?.["data"]?.["result"]?.["result"], this.prizeName = _0x487bb1?.["data"]?.["prizeName"], this.activityPrizeId = _0x487bb1?.["data"]?.["activityPrizeId"], await this.saveAddress()); + continue; + } + let _0x4d95a7 = _0x487bb1?.["message"] || "抽奖失败"; + this.putMsg(_0x4d95a7); + await this.wxStopSync(_0x4d95a7); + return; + } + return; + } + await this.getDefenseUrls(); + if (_0x120d7f.includes(this.activityType)) { + await this.login(); + let _0x34712c = this.getQueryString(this.activityUrl, "templateId"), + _0x180126 = await this.lzkjApi("api/game/getGameInfo", { + "gameUrl": "https://lzkj-yc.isvjd.com/index.html?templateId=" + _0x34712c + "&token=" + this.token, + "shareUserId": "" + }); + this.debug(_0x180126); + if (_0x180126 && _0x180126.resp_code === 0) { + await this.lzkjTask(_0x180126.data?.["taskList"]); + } + _0x180126 = await this.lzkjApi("api/game/getGameInfo", { + "gameUrl": "https://lzkj-yc.isvjd.com/index.html?templateId=" + _0x34712c + "&token=" + this.token, + "shareUserId": "" + }); + this.debug(_0x180126); + if (!(_0x180126 && _0x180126.resp_code === 0)) { + let _0x1ec695 = _0x180126?.["resp_msg"] || "获取任务失败"; + this.putMsg(_0x1ec695); + await this.wxStopSync(_0x1ec695); + return; + } + let _0x2f3f42 = _0x180126.data?.["gameChance"] ?? 4, + _0x442194 = _0x180126.data?.["canDrawTimes"] ?? 0, + _0x4b9d30 = await this.lzkjApi("api/game/init", { + "templateId": _0x34712c + }); + if (_0x4b9d30 && _0x4b9d30.resp_code === 0) { + let _0x49bff6 = _0x4b9d30.data?.["publicKey"], + _0x3d8d2e = _0x4b9d30.data?.["ruleScore"]; + this.debug(_0x49bff6, _0x3d8d2e); + for (let _0x5a6488 = 0; _0x5a6488 < _0x2f3f42; _0x5a6488++) { + let _0x5bbcce = await this.lzkjApi("api/game/start"); + this.debug(_0x5bbcce); + if (!(_0x5bbcce && _0x5bbcce.resp_code === 0)) { + this.log("开启游戏失败"); + continue; + } + let _0xb7b9d3 = _0x5bbcce.data?.["id"], + _0x59c786 = this.rsaEncrypt(_0x49bff6, { + "encryptionScheme": "pkcs1" + }, JSON.stringify({ + "score": _0x3d8d2e + "", + "id": _0xb7b9d3 + })); + this.debug(_0x59c786); + let _0x36d08d = await this.lzkjApi("api/game/end", { + "result": _0x59c786, + "activityId": this.activityId + }); + this.debug(_0x36d08d); + if (_0x36d08d && _0x36d08d.resp_code === 0) { + _0x36d08d.data === 1 && _0x442194++; + } + } + } else { + let _0x57b2a1 = _0x4b9d30?.["resp_msg"] || "初始化游戏失败"; + this.putMsg(_0x57b2a1); + await this.wxStopSync(_0x57b2a1); + } + while (_0x442194-- > 0) { + let _0x1c7c7d = await this.lzkjApi("api/prize/draw", { + "consumePoints": 0 + }); + this.debug(_0x1c7c7d); + if (_0x1c7c7d && _0x1c7c7d.resp_code === 0) { + this.putMsg(_0x1c7c7d.data?.["prizeName"] || "空气"); + if (_0x1c7c7d.data.prizeType == 3) { + this.addressId = _0x1c7c7d.data.addressId; + this.prizeName = _0x1c7c7d.data.prizeName; + await this.saveAddress(); + } + } else { + let _0x214e28 = _0x1c7c7d?.["resp_msg"] || "抽奖失败"; + this.putMsg(_0x214e28); + await this.wxStopSync(_0x214e28); + } + await this.sleep(200); + } + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.index === 0 && (await this.getShopInfo()); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let _0x32c3bc = "", + _0x1e68bc = "", + _0x185ec2 = this.activityType == 7 ? {} : { + "pinImg": _0x32c3bc, + "nick": _0x1e68bc, + "shareUuid": _0xd05e66.activity.shareUuid || "", + "cjyxPin": "", + "cjhyPin": "" + }; + this.debug(_0x185ec2, this.type); + let _0x34eb84 = await this.activityContent(_0x185ec2); + if (!_0x34eb84?.["result"] || !_0x34eb84?.["data"]) { + this.putMsg(_0x34eb84?.["errorMessage"]); + return; + } + if (this.activityType == 7) { + let _0x3a461e = _0x34eb84?.["data"]?.["todayCanDrawOk"] || 1, + _0x56c403 = _0x34eb84?.["data"]?.["drawContentVOs"] ?? []; + _0x56c403 = _0x56c403.filter(_0x258f0d => [6, 7, 9, 13, 14, 15, 16].includes(_0x258f0d.type) && _0x258f0d.prizeNum > _0x258f0d.hasSendPrizeNum); + if (_0x56c403.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + await this.wxApi("wxGameActivity/follow", { + "activityId": this.activityId, + "pin": this.secretPin + }); + if (_0x3a461e === 0) { + this.putMsg("无次数"); + return; + } + _0x3a461e = Math.min(_0x3a461e, 20); + _0x56c403 = _0x56c403.sort((_0x40d810, _0x3c4545) => _0x3c4545.startScore - _0x40d810.startScore); + while (_0x3a461e-- > 0) { + let _0x11379c = this.random(_0x56c403[0].startScore, _0x56c403[0].endScore) + ""; + _0x11379c = (_0x11379c.substring(0, _0x11379c.length - 1) + 0) * 1; + this.domain.includes("cjhy") && (_0x11379c = this.encryptCrypto("AES", "ECB", "Pkcs7", "00000000", JSON.stringify(_0x11379c), this.activityId)); + let _0x275fb3 = await this.wxApi("wxGameActivity/gameStartDeposit", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(_0x275fb3); + if (!(_0x275fb3 && _0x275fb3.result)) { + this.log("开启游戏失败"); + continue; + } + let _0xfdf5ce = { + "activityId": this.activityId, + "pin": this.secretPin, + "score": encodeURIComponent(_0x11379c) + }; + this.debug(_0xfdf5ce); + let _0x27eecd = await this.wxApi("wxGameActivity/gameOverRecord", _0xfdf5ce); + this.debug(_0x27eecd); + if (_0x27eecd && _0x27eecd.result) this.putMsg(_0x27eecd.data?.["name"] || "空气"), _0x27eecd.data?.["needWriteAddress"] === "y" && (this.addressId = _0x27eecd.data.addressId, this.prizeName = _0x27eecd.data.name, await this.saveAddress());else { + let _0x5bcfbd = _0x27eecd?.["errorMessage"] || "游戏失败"; + this.putMsg(_0x5bcfbd); + await this.wxStopSync(_0x5bcfbd); + } + } + } else { + let _0x32418f = _0x34eb84?.["data"]?.["drawMiniScore"] ?? 1000; + if (_0x34eb84?.["data"]?.["isGameEnd"]) { + this.putMsg("活动已结束"); + await this.writeLongCache(); + this.stop(); + return; + } + let _0x6dbfd3 = _0x34eb84?.["data"]?.["uid"]; + this.index === 0 && _0x6dbfd3 && (_0xd05e66.activity.shareUuid = _0x6dbfd3); + let _0xfe0f4a = await this.wxApi("wxgame/myInfo", { + "activityId": this.activityId, + "pin": this.secretPin + }); + if (_0xfe0f4a && _0xfe0f4a.result) { + let _0x17d9fe = _0xfe0f4a.data?.["taskList"] ?? []; + _0x17d9fe = _0x17d9fe.filter(_0x166acf => _0x166acf.taskId !== "share2help" && _0x166acf.curNum < _0x166acf.maxNeed); + for (let _0x5cdc86 of _0x17d9fe) { + let _0x44f128 = _0x5cdc86.taskId === "followsku" ? "3" : _0x5cdc86.taskId === "add2cart" ? "1" : ""; + if (_0x44f128 === "") continue; + let _0x5602a7 = await this.wxApi("wxgame/getProduct", { + "activityId": this.activityId, + "pin": this.secretPin, + "type": _0x44f128 + }); + if (_0x5602a7 && _0x5602a7.result) for (let _0x422e36 = 0; _0x422e36 < _0x5602a7.data.length && _0x422e36 < _0x5cdc86.maxNeed; _0x422e36++) { + let _0x5b29c1 = await this.wxApi("wxgame/doTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "taskId": _0x5cdc86.taskId, + "param": _0x5602a7.data[_0x422e36].skuId + }); + this.debug(_0x5b29c1); + } + } + } + _0xfe0f4a = await this.wxApi("wxgame/myInfo", { + "activityId": this.activityId, + "pin": this.secretPin + }); + if (_0xfe0f4a && _0xfe0f4a.result) { + let _0x1f3998 = Math.min(_0xfe0f4a.data?.["chance"] ?? 0, 7); + if (_0x1f3998 === 0) { + this.putMsg("无次数"); + return; + } + while (_0x1f3998-- > 0) { + let _0x5dad61 = await this.wxApi("wxgame/game/start", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(_0x5dad61); + if (_0x5dad61 && _0x5dad61.result) { + let _0x492de3 = _0x5dad61.data; + this.debug("gameId:", _0x492de3); + let _0x4126ee = _0x32418f + this.random(100, 200); + await this.sleep(1000); + let _0x367930 = this.timestamp(), + _0x3a9bec = this.md5(_0x492de3 + "," + _0x367930 + "," + _0x4126ee + ",0eed6538f6e84b754ad2ab95b45c54f8"), + _0x589956 = await this.wxApi("wxgame/game/end", { + "activityId": this.activityId, + "pin": this.secretPin, + "gameId": _0x492de3, + "score": _0x4126ee, + "sign": _0x3a9bec, + "reqtime": _0x367930, + "getRank": true, + "getScoreRank": true, + "getPlayerNum": true + }); + this.debug(_0x589956); + if (_0x589956 && _0x589956.result) { + _0x367930 = this.timestamp() + ""; + let _0x420872 = await this.wxApi("wxgame/game/luckyDraw", { + "activityId": this.activityId, + "pin": this.secretPin, + "gameId": _0x492de3, + "score": _0x4126ee, + "reqtime": _0x367930, + "sign": this.md5(_0x492de3 + "," + _0x367930 + ",0eed6538f6e84b754ad2ab95b45c54f8") + }); + this.debug(_0x420872); + if (_0x420872 && _0x420872.result) this.putMsg(_0x420872.data.name || "空气"), _0x420872.data.needWriteAddress === "y" && (this.addressId = _0x420872.data.addressId, this.prizeName = _0x420872.data.name, await this.saveAddress());else { + let _0x3639e4 = _0x420872?.["errorMessage"] || "抽奖失败"; + this.putMsg(_0x3639e4); + await this.wxStopSync(_0x3639e4); + } + } else { + let _0x5d28c7 = _0x589956?.["errorMessage"] || "游戏失败"; + this.putMsg(_0x5d28c7); + await this.wxStopSync(_0x5d28c7); + } + } + } + } else { + let _0x1fd8bf = _0xfe0f4a?.["errorMessage"] || "获取用户信息失败"; + this.putMsg(_0x1fd8bf); + await this.wxStopSync(_0x1fd8bf); + } + } + } + } + _0xfcbdcc.activity = { + "activityUrl": activityUrl + }; + _0xfcbdcc.TaskClass = _0xbfd39f; + _0xfcbdcc.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_knowledge.js b/jd_wx_knowledge.js new file mode 100644 index 0000000..dd45557 --- /dev/null +++ b/jd_wx_knowledge.js @@ -0,0 +1,117 @@ +/* +知识超人beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/wxKnowledgeActivity/activity?activityId=ffa61daaa499402da5fdc1bf4a779cfe + +export B_WX_KNOWLEDGE_URL="" +export B_WX_KNOWLEDGE_BEAN_NUM="1" # 豆子超过多少才开卡 默认值1 + +cron: 7 7 7 7 7 * +const $ = new Env("知识超人beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_KNOWLEDGE_URL); + +mode && (activityUrl = "https://cjhy-isv.isvjcloud.com/wxKnowledgeActivity/activity?activityId=ffa61daaa499402da5fdc1bf4a779cfe"); +const { + RunMode: lII1il1l, + UserMode: llIlilIl, + baseCommonEnv: Iil1i1II, + baseCommonEnvKey: il1i11i +} = require("./bear"); +Iil1i1II.openCardBeanNum = parseInt(process.env.B_WX_KNOWLEDGE_BEAN_NUM || 1); +il1i11i.B_WX_KNOWLEDGE_BEAN_NUM = "openCardBeanNum"; +lII1il1l.envInfo = { + "name": "知识超人beta", + "runName": "jd_wx_knowledge", + "version": "2.0.0" +}; +class IillI1ll extends llIlilIl { + constructor(II11lIli, liiiiI1I) { + super(II11lIli, liiiiI1I); + } + async ["userTask"]() { + if (this.activityType === "10039") return; + await this.isvObfuscator(); + await this.getDefenseUrls(); + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.type = "wxKnowledgeActivity"; + this.index === 0 && (await this.getShopInfo()); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let IIl1lII1 = await this.activityContent(); + if (!IIl1lII1 || !IIl1lII1.result) { + this.putMsg(IIl1lII1?.["errorMessage"]); + this.wxStop(IIl1lII1?.["errorMessage"]); + return; + } + let IIii1iI = IIl1lII1.data.questions ?? [], + i1lIllil = IIl1lII1.data.drawContentVOs ?? []; + i1lIllil = i1lIllil.filter(iiII1iI => [6, 7, 9, 13, 14, 15, 16].includes(iiII1iI.type)); + if (i1lIllil.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let iiiilil1 = i1lIllil[0].type === 6 && i1lIllil[0].beanNum >= Iil1i1II.openCardBeanNum || i1lIllil[0].type === 7 || false, + IliIlil = 10, + I11II = null; + while (IliIlil-- > 0) { + I11II = await this.wxApi("wxKnowledgeActivity/startAnswer", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(I11II); + if (I11II && I11II.result) break; + let i1lllllI = I11II?.["errorMessage"]; + if (i1lllllI.includes("会员") && iiiilil1) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + continue; + } + this.putMsg(i1lllllI); + this.wxStop(i1lllllI); + return; + } + for (let ll11liII of IIii1iI) { + let IIIliIll = await this.wxApi("wxKnowledgeActivity/answer", { + "questionId": ll11liII.id, + "answer": ll11liII.realAnswer, + "detailId": I11II.data.id + }); + this.debug(IIIliIll); + let lIliII1l = IIIliIll?.["errorMessage"]; + this.wxStop(lIliII1l); + if (lIliII1l.includes("答题已通关")) break; + } + let I1iIII = await this.wxApi("wxKnowledgeActivity/getPrize", { + "detailId": I11II.data.id + }); + this.debug(I1iIII); + if (I1iIII && I1iIII.result) { + if (I1iIII.data.drawOk) { + this.putMsg(I1iIII.data.name || "空气"); + if (I1iIII.data?.["drawInfoType"] === 7 && I1iIII.data?.["needWriteAddress"] === "y" && I1iIII.data?.["addressId"]) { + this.addressId = I1iIII.data.addressId; + this.prizeName = I1iIII.data.name; + await this.saveAddress(); + } + } + return; + } + let Il1lli1 = I1iIII?.["errorMessage"]; + this.putMsg(Il1lli1); + this.wxStop(Il1lli1); + } +} +lII1il1l.activity = { + "activityUrl": activityUrl +}; +lII1il1l.TaskClass = IillI1ll; +lII1il1l.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_levelBirth.js b/jd_wx_levelBirth.js new file mode 100644 index 0000000..513e6d5 --- /dev/null +++ b/jd_wx_levelBirth.js @@ -0,0 +1,193 @@ +/* +等级/生日礼包beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=d651133fe1e74bb3823dc745d571a185 + +export B_WX_LEVEL_BIRTH_URL="" +export B_WX_LEVEL_BIRTH_BEAN_NUM="10" # 豆子超过多少才开卡 默认值10 + +cron: 7 7 7 7 7 * +const $ = new Env("等级/生日礼包beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_LEVEL_BIRTH_URL); + +if (mode) { + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=d651133fe1e74bb3823dc745d571a185"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=25386dcd16b34b14ba50b5c6c5c5b0f4"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=ee8648bca1ae492cacc43dcf8ae294d7"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=b741377f23a048a08b64999b08cbd7aa"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxMcLevelAndBirthGifts/activity?activityId=b1cd3698edad47698573bad5742356f6"; + activityUrl = "https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/20002/1001/?shopId=1000309923&activityId=1762435679669395458"; + } + const { + RunMode: i1i1lIlI, + UserMode: ilII11I, + baseCommonEnv: I1i1liil, + baseCommonEnvKey: I11i1iIl + } = require("./bear"); + I1i1liil.beanNum = parseInt(process.env?.["B_WX_LEVEL_BIRTH_BEAN_NUM"] || 10); + I11i1iIl.B_WX_LEVEL_BIRTH_BEAN_NUM = "beanNum"; + i1i1lIlI.envInfo = { + "name": "等级/生日礼包beta", + "runName": "jd_wx_levelBirth", + "version": "2.0.0" + }; + class l1liIIil extends ilII11I { + constructor(liiIi1l, IIlI11Il) { + super(liiIi1l, IIlI11Il); + this.level = 0; + this.openedCard = false; + } + async ["saveBirthDay"]() { + let i11IiI1I = this.formatDate(Date.now(), "yyyy-MM-dd"), + ill11Ii = await this.wxApi("mc/wxMcLevelAndBirthGifts/saveBirthDay", { + "venderId": this.venderId, + "pin": this.secretPin, + "birthDay": i11IiI1I + }); + if (ill11Ii && ill11Ii.result) { + this.log("设置生日" + i11IiI1I + "成功"); + return; + } + let lIi11Il = ill11Ii?.["errorMessage"] || "设置生日失败"; + this.log(lIi11Il); + } + async ["sendBirthGifts"]() { + let lIIIll1 = await this.wxApi("mc/wxMcLevelAndBirthGifts/sendBirthGifts", { + "activityId": this.activityId, + "venderId": this.venderId, + "pin": this.secretPin, + "level": this.level + }); + this.debug(lIIIll1); + if (lIIIll1 && lIIIll1.result) { + let IiiiiiI = []; + if (lIIIll1.data?.["birthdayData"]) { + for (let lliIiii of lIIIll1.data.birthdayData) { + if (lliIiii.name) { + IiiiiiI.push(lliIiii.beanNum + "个" + lliIiii.name); + } + } + } + IiiiiiI.length > 0 ? this.putMsg(IiiiiiI.join(",")) : this.putMsg("没有获得奖品"); + return; + } + let Iiil1lli = lIIIll1?.["errorMessage"] || lIIIll1?.["data"]?.["birthdayError"] || "领取生日礼包失败"; + this.putMsg(Iiil1lli); + this.wxStop(Iiil1lli); + } + async ["sendLevelGifts"]() { + let ill1iIiI = await this.wxApi("mc/wxMcLevelAndBirthGifts/sendLevelGifts", { + "activityId": this.activityId, + "venderId": this.venderId, + "pin": this.secretPin, + "level": this.level + }); + this.debug(ill1iIiI); + if (ill1iIiI && ill1iIiI.result) { + let i11iilI1 = []; + if (ill1iIiI.data?.["birthdayData"]) for (let lllIi1I1 of ill1iIiI.data.birthdayData) { + lllIi1I1.name && i11iilI1.push(lllIi1I1.beanNum + "个" + lllIi1I1.name); + } + i11iilI1.length > 0 ? this.putMsg(i11iilI1.join(",")) : this.putMsg("没有获得奖品"); + return; + } + let Il1lllii = ill1iIiI?.["errorMessage"] || ill1iIiI?.["data"]?.["levelError"] || "领取等级礼包失败"; + this.putMsg(Il1lllii); + this.wxStop(Il1lllii); + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "v2") { + await this.login(); + let lI1Iili1 = await this.v2Api("api/" + this.activityType + "/getActivityInfo"); + this.debug(lI1Iili1); + if (!lI1Iili1 && !lI1Iili1.code === 200) { + this.putMsg("获取活动信息失败"); + return; + } + if (lI1Iili1?.["data"]?.["remark"]?.["includes"]("已经领取") || lI1Iili1?.["data"]?.["status"] === 4) { + this.putMsg("已领取"); + return; + } + let IIiI1liI = await this.v2Api("api/" + this.activityType + "/birthday", { + "birthday": this.formatDate(Date.now(), "yyyy/MM/dd") + }); + this.debug(IIiI1liI); + let IIl1111I = await this.v2Api("api/" + this.activityType + "/receivePrize"); + this.debug(IIl1111I); + let iIiI1i1I = await this.v2Api("api/" + this.activityType + "/myPrizes"); + this.debug(iIiI1i1I); + if (iIiI1i1I && iIiI1i1I.code === 200) { + this.putMsg(iIiI1i1I.data.map(liilllii => "" + liilllii.prizeName).join(",") || "空气"); + return; + } + this.putMsg("领取失败"); + return; + } + await this.getDefenseUrls(); + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let iI1lii1i = await this.wxApi("mc/new/brandCard/common/shopAndBrand/getOpenCardInfo", { + "venderId": this.venderId, + "buyerPin": this.secretPin, + "activityType": 103 + }); + this.debug(iI1lii1i); + if (iI1lii1i && iI1lii1i.result) this.openedCard = iI1lii1i.data.openedCard;else { + let iIli1il = iI1lii1i?.["errorMessage"] || "获取开卡信息失败"; + this.log(iIli1il); + } + let llIliII1 = await this.wxApi("mc/wxMcLevelAndBirthGifts/getMemberLevel", { + "venderId": this.venderId, + "pin": this.secretPin + }); + this.debug(llIliII1); + if (llIliII1 && llIliII1.result) { + this.level = llIliII1.data.level; + } else { + let ilIl1lI = llIliII1?.["errorMessage"] || "获取会员等级失败"; + this.log(ilIl1lI); + } + let ll11liIl = await this.activityContent({ + "level": 1 + }); + if (ll11liIl && ll11liIl.result) { + let iIi1i111 = JSON.parse(ll11liIl.data?.["content"]).filter(i1111II => [4, 6, 7, 9, 13, 14, 15, 16].includes(i1111II.type)); + if (iIi1i111.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + iIi1i111 = iIi1i111.sort((iiI1Ii1, l1iIiii1) => iiI1Ii1.drawLevel - l1iIiii1.drawLevel); + if (ll11liIl.data.isReceived === 0) { + let iiI11Iii = !this.openedCard && iIi1i111.filter(l1iIIil => l1iIIil.beanNum >= I1i1liil.beanNum && l1iIIil.name == "京豆" && l1iIIil.drawLevel == 1).length > 0; + if (iiI11Iii) { + await this.getShopOpenCardInfo(); + await this.bindWithVender(); + if (this.canNotOpenCard) return; + this.level = 1; + } + this.debug(this.activityType); + if (this.activityType === 103) await this.saveBirthDay(), await this.sendBirthGifts();else [104, 119].includes(this.activityType) && (await this.sendLevelGifts()); + } else this.putMsg("已领取"); + return; + } + let IiII1iii = ll11liIl?.["errorMessage"] || "获取活动信息失败"; + this.putMsg(IiII1iii); + this.wxStop(IiII1iii); + } + } + i1i1lIlI.activity = { + "activityUrl": activityUrl + }; + i1i1lIlI.TaskClass = l1liIIil; + i1i1lIlI.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_luckDraw.js b/jd_wx_luckDraw.js new file mode 100644 index 0000000..1d2d3dc --- /dev/null +++ b/jd_wx_luckDraw.js @@ -0,0 +1,587 @@ +/* +幸运抽奖beta v2.0.6 + +https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=56f3d081b3394dd0bf78c3b2ad8ada99 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10046&templateId=20210714190900lhj011&activityId=1706582977057599489&nodeId=101001&prd=cjwx +https://jinggeng-isv.isvjcloud.com/ql/front/loadBlindBox?id=9e8080f28b7c3eeb018b7f17e0e01f0a&user_id=1000003788 +https://hdb-isv.isvjcloud.com/h5/pages/pointDraw/pointDraw?id=aa5737bac99a9b9f5a4defad272ba8df&userId=131385 +https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable11?id=715459808c66e8fe5cac9bad3e1aab46&userId=11744671 +https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/gameDZPWw_1.html?activityId=bdcbe31ba346449a93e95d749a1c493b +https://hzbz-isv.isvjcloud.com/bigdraw/draw.h4?id=d571bc02uzix +https://hdds-isv.isvjcloud.com/bigdraw/draw.h4?id=f0c6c831megx +https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30003/1001/?shopId=819551&activityId=1783351662425452546 + +export B_WX_LUCK_DRAW_URL="" +export B_WX_NOT_LUCK_DRAW_LIST="" # 积分不跑 @分割 例子: a2海外@马可波罗@合田家@风向标@罗技二手外设 +export B_WX_BLACK_LUCK_DRAW_RULE="" # 拉黑的店铺 例子: FITURE|FITURE +export B_WX_LUCK_OPEN_MODE="0" # 强制开卡 0:不开卡 1:开卡 默认值0 +export B_WX_NOT_LUCK_LIMIT="100" # 前N没有次数跳出 默认值100 + +cron: 7 7 7 7 7 * +const $ = new Env("幸运抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.B_WX_LUCK_DRAW_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10046&templateId=20210714190900lhj011&activityId=1706582977057599489&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10080&templateId=20210714190901ggl011&activityId=1707242183950278658"; + activityUrl = "https://lorealjdcampaign-rc.isvjcloud.com/interact/index?activityType=10021&activityId=1706684390047875073&templateId=20210527190900dazhuanpan01&nodeId=101001&prd=crm"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10021&activityId=1714950726797340674&templateId=33ed5a4c-5aae-4b99-8b92-85c1c2e5a784&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=56f3d081b3394dd0bf78c3b2ad8ada99"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=8f740c7af17747c79d364434aa47c363"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/loadBlindBox?id=9e8080f28b7c3eeb018b7f17e0e01f0a&user_id=1000003788"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10062&templateId=20210824190900zjd011&activityId=1724100184810049538&prd=cjwx"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist2/views/pages/gameDZP_57.html?activityId=e836f4faad8d4c99a25ab888288ebae8"; + activityUrl = "https://hdb-isv.isvjcloud.com/h5/pages/turntable/turntable?id=3ebc29c4a08bf9192d0effd569a491af&userId=12303514"; + activityUrl = "https://hdb-isv.isvjcloud.com/h5/pages/pointDraw/pointDraw?id=aa5737bac99a9b9f5a4defad272ba8df&userId=131385"; + activityUrl = "https://hdb-isv.isvjcloud.com/h5/pages/luckyGrid/luckyGrid1?id=87cf65dd463e47e89807d763c43a3f5d&userId=10016542"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable11?id=6750963b19ec9483a51ae7ca400eb490&userId=688781"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable11?id=715459808c66e8fe5cac9bad3e1aab46&userId=11744671"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/gameDZP_17.html?activityId=089149abd5454a58a924be1e774b9bd3"; + activityUrl = "https://hzbz-isv.isvjcloud.com/bigdraw/draw.h4?id=d571bc02uzix"; + activityUrl = "https://hdds-isv.isvjcloud.com/bigdraw/draw.h4?id=f0c6c831megx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10026&activityId=1729748317390970881&templateId=20210518190900jfcj011&nodeId=101001&prd=cjwx&adsource=tg_storePage"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/showDrawOne?id=9e8080c08c1efd3e018c1f9780f5248b&user_id=1000117302"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10026&activityId=1722146358967668737&templateId=20210518190900jfcj011&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/?activityType=10021&activityId=1730049752963821570&templateId=2adaadf0-d16c-4533-b8b4-f32608f4db4c&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=5aaf763d9a0e4e70a3bddc60d1d14e5d"; + activityUrl = "https://hdb-isv.isvjcloud.com/h5/pages/pointDraw/pointDraw?id=c1d6a646cab33cd6f8786b7f627e30d2&userId=131385"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10026&activityId=1729088940946305026&templateId=20210518190900jfcj011&nodeId=101001&prd=cjwx"; + activityUrl = "https://hdds-isv.isvjcloud.com/bigdraw/draw.h4?id=a0ea1ac582gx"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/showDrawOne?id=9e8080708c9a6bf2018ca1395354375a&user_id=64340"; + activityUrl = "https://hzbz-isv.isvjcloud.com/bigdraw/draw.h4?id=1bd11547y87x"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/gameDZPWw_1.html?activityId=bdcbe31ba346449a93e95d749a1c493b"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30003/1003/?shopId=819551&activityId=1750765103755206657"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30003/1003/?activityId=1751949454304165889&shopId=1000015026"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10020/1001/?activityId=1752247172913238018&shopId=1000004064"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable?id=cdbe2aaf3b36048dba88c3c40ffaf59f&userId=1000311299"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10021&activityId=1763155905388326913&templateId=2023120510021dzpcj02&nodeId=101001&prd=cjwx&adsource=tg_storePage"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10042&activityId=1763084851989499905&templateId=20210714190900ggl011&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?shopId=1000003015&activityId=1774717615353618434&shareId=1775154418404347905&nick=醉清风十4506164"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/bestTicket/default?id=24cd1c31ced80756f0bf04e09ec098d2&userId=1000007503"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/gashapon/gashapon?id=9e015d859e3506791672d63bfa21a069&userId=1000015664&actForm=single"; + activityUrl = "https://lzkj-isv.isvjd.com/wxDrawActivity/activity/activity?activityId=4e314d7ccf594e129f04735705b1bdfc"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30003/1001/?shopId=819551&activityId=1783351662425452546"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10021&templateId=20210527190900dazhuanpan011&activityId=1785218258431082497&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10021/1006/?shopId=1000002984&activityId=1784546748423274498&shareId=1787350615634395137"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10021&templateId=20210527190900dazhuanpan011&activityId=1784159118973149185&nodeId=101001&prd=cjwx"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable3?id=35bfa9eceee09eccb92b5c5cfa08b83d&userId=139755&actForm=single"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/showDrawOne?id=9e8080a48f2dbdeb018f2e46fae077d1&user_id=722518"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist2/views/pages/gameDZP_34.html?activityId=f42d4b371284463eaae514fc0d4b6bef"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=b62b337bfc984c40b2c30ece36214dce"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10021&activityId=1775405379973079042&templateId=10021240320dzpcj01&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v1/index?activityType=10046&templateId=20210714190900lhj01&activityId=1800790172506263554&nodeId=101001&prd=crm"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=aa8ce8604a064d35a02098444c98f248"; + activityUrl = "https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=71660c5f93094903827bbf91f7cdb21c"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable4?id=5096a3806604378765d8863acb6c921f&userId=65679"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10021/1006/?activityId=1806579415919820801&shopId=1000386186"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/10020/1002/?activityId=1810484831281164289&shopId=1000376431"; + activityUrl = "https://lzkj-isv.isvjcloud.com/wxDrawActivity/activity/8906c94a5be64525b9b454fabc0a1b4e?activityId=8906c94a5be64525b9b454fabc0a1b4e"; + } + const { + RunMode: _0x14c5ce, + UserMode: _0x2785a5, + baseCommonEnv: _0x34c2bd, + baseCommonEnvKey: _0x42af3f + } = require("./bear"); + let _0x32ba81 = ["10020", "10021", "10026", "10031", "10041", "10042", "10046", "10062", "10063", "10073", "10080"]; + process.env.B_WX_LUCK_ACTIVITY_TYPES ? process.env.B_WX_LUCK_ACTIVITY_TYPES.split(/[@,&|]/).forEach(_0x3b0926 => _0x32ba81.push(_0x3b0926)) : ""; + _0x34c2bd.notLuckDrawList = process.env.B_WX_NOT_LUCK_DRAW_LIST ? process.env.B_WX_NOT_LUCK_DRAW_LIST.split(/[@,&|]/) : "a2海外@马可波罗@合田家@风向标@罗技二手外设".split("@"); + _0x34c2bd.blackLuckDrawRule = process.env.B_WX_BLACK_LUCK_DRAW_RULE || "FITURE|FITURE"; + _0x34c2bd.openCardMode = parseInt(process.env.B_WX_LUCK_OPEN_MODE || 0); + _0x34c2bd.notLuckLimit = parseInt(process.env.B_WX_NOT_LUCK_LIMIT || 100); + _0x34c2bd.activityTypes = _0x32ba81; + _0x42af3f.B_WX_NOT_LUCK_DRAW_LIST = "__notLuckDrawList__"; + _0x42af3f.B_WX_BLACK_LUCK_DRAW_RULE = "blackLuckDrawRule"; + _0x42af3f.B_WX_LUCK_OPEN_MODE = "openCardMode"; + _0x42af3f.B_WX_LUCK_ACTIVITY_TYPES = "__activityTypes__"; + _0x42af3f.B_WX_NOT_LUCK_LIMIT = "notLuckLimit"; + _0x14c5ce.envInfo = { + "name": "幸运抽奖beta", + "runName": "jd_wx_luckDraw", + "version": "2.0.6" + }; + let _0x5002ff = 0; + class _0x2f7451 extends _0x2785a5 { + constructor(_0x2a4581, _0x463154) { + super(_0x2a4581, _0x463154); + this.lzkjOpenCard = true; + _0x34c2bd.openCardMode === 1 && (this.openCardTypes = [...this.openCardTypes, ..._0x32ba81]); + } + async ["followShop"](_0x3dd62e) { + let _0x9882db = await this.wxApi(this.type + "/follow", { + "pin": this.secretPin, + "skuId": _0x3dd62e + }); + if (_0x9882db && _0x9882db.result) { + return _0x9882db.data; + } + return false; + } + ["exitShop"]() { + if (this.shopName?.["match"](_0x34c2bd.blackLuckDrawRule) || _0x34c2bd.notLuckDrawList.some(_0x13379e => this.shopName?.["includes"](_0x13379e))) { + return this.putMsg("已屏蔽"), this.stop(); + } + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "v2") { + await this.login(); + this.exitShop(); + if (_0x34c2bd.openCardMode === 1 && !this.openCard) { + await this.bindWithVender(); + } + let _0x20f2a7; + if (!["30003"].includes(this.activityType)) { + await this.v2Task(); + let _0x4eef74 = await this.v2Api("api/" + this.activityType + "/chanceNum"); + _0x20f2a7 = _0x4eef74?.["data"] ?? 5; + } else _0x20f2a7 = 3; + if (_0x20f2a7 === 0) return _0x5002ff++, _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()), this.putMsg("无抽奖次数"); + while (_0x20f2a7-- > 0) { + let _0x59e27e = await this.v2Api("api/" + this.activityType + "/lotteryDraw"); + this.log(_0x59e27e); + if (_0x59e27e && _0x59e27e.code === 200) { + this.putMsg(_0x59e27e?.["data"]?.["prizeName"] || "空气"); + _0x59e27e?.["data"]?.["result"]?.["result"] !== "true" && _0x59e27e?.["data"]?.["result"]?.["result"] !== true && _0x59e27e?.["data"]?.["activityPrizeId"] && (this.addressId = _0x59e27e?.["data"]?.["result"]?.["result"], this.prizeName = _0x59e27e?.["data"]?.["prizeName"], this.activityPrizeId = _0x59e27e?.["data"]?.["activityPrizeId"], await this.saveAddress()); + continue; + } + let _0x3e41dc = _0x59e27e?.["message"] || "抽奖失败"; + this.putMsg(_0x3e41dc); + await this.wxStopSync(_0x3e41dc); + return; + } + return; + } + if (this.mode === "hzbz") { + let _0x5d029d = await this.taskGet(this.activityUrl); + if (!_0x5d029d) return; + if (_0x5d029d.includes("活动已结束")) { + this.putMsg("活动已经结束,手动确认"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + let _0x115d53 = this.textToHtml(_0x5d029d), + _0x3e36cb = _0x115d53("#draw_info").text(); + _0x3e36cb = this.parseJSON(_0x3e36cb); + let _0x48fcd2 = _0x3e36cb?.["condtions"] || [], + _0x562996 = _0x3e36cb?.["stime"] || 0, + _0x204f49 = _0x3e36cb?.["etime"] || 0; + this.shopName = _0x3e36cb?.["shopName"]; + this.shopId = _0x3e36cb?.["shopId"]; + this.rule = _0x3e36cb?.["drawRule"]; + _0x2785a5.activity.shopId = this.shopId; + _0x2785a5.activity.venderId = this.shopId; + _0x2785a5.activity.shopName = this.shopName; + _0x2785a5.activity.startTime = _0x562996; + _0x2785a5.activity.endTime = _0x204f49; + if (_0x562996 && _0x562996 > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (_0x204f49 && _0x204f49 < this.timestamp()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + this.exitShop(); + let _0x7a15b7 = await this.hzbzApi("LoadUserData.json", { + "id": this.activityId, + "token": this.isvToken, + "buyerFrom": "01" + }); + this.debug(_0x7a15b7); + if (_0x7a15b7 && _0x7a15b7.code !== 0 && _0x7a15b7.code !== 1) { + this.putMsg(_0x7a15b7?.["txt"]); + } + this.wxStop(_0x7a15b7?.["txt"]); + for (let _0x2dca05 of _0x48fcd2) { + this.debug(_0x2dca05?.["type"]); + _0x2dca05?.["type"] === "sc_shop" && (await this.hzbzApi("CollectShopToDraw.json", { + "conditionid": _0x2dca05?.["id"] + })); + _0x2dca05?.["type"] === "sign_draw" && (await this.hzbzApi("SingedInfo.json", { + "conditionid": _0x2dca05?.["id"] + })); + if (_0x2dca05?.["type"] === "ll_goods") { + let _0x3cd470 = JSON.parse(_0x2dca05.condition), + _0x5eb9e9 = _0x3cd470?.["allMax"] ?? 0, + _0x11b89b = _0x3cd470?.["dayMax"] ?? 0, + _0x410394 = _0x3cd470?.["viewCount"] ?? 0; + this.debug(_0x5eb9e9, _0x11b89b, _0x410394); + this.debug(_0x11b89b ?? _0x410394); + await this.hzbzApi("ViewGoodsToDraw.json", { + "conditionid": _0x2dca05?.["id"], + "count": _0x11b89b ?? _0x410394 + }); + } + if (_0x2dca05?.["type"] === "sc_goods") { + let _0x4adff0 = JSON.parse(_0x2dca05.condition), + _0x1b871f = _0x4adff0?.["viewCount"] ?? 0, + _0xcfc62 = _0x4adff0?.["dayMax"] ?? 0; + await this.hzbzApi("CollectGoodsToDraw.json", { + "conditionid": _0x2dca05?.["id"], + "count": _0xcfc62 ?? _0x1b871f + }); + } + } + _0x7a15b7 = await this.hzbzApi("LoadUserData.json", { + "id": this.activityId, + "token": this.isvToken, + "buyerFrom": "01" + }); + this.debug(_0x7a15b7); + if (_0x7a15b7?.["code"] !== 0) { + this.putMsg(_0x7a15b7?.["txt"]); + return; + } + let _0x5a6e98 = _0x7a15b7?.["drawChances"] ?? 0; + _0x5a6e98 = Math.min(_0x5a6e98, 3); + while (_0x5a6e98-- > 0) { + await this.sleep(1000); + let _0x9c8b99 = await this.hzbzApi("DoDraw.json", { + "needCollectShop": _0x7a15b7.needCollectShop ?? false + }); + this.debug(_0x9c8b99); + if (_0x9c8b99?.["prizeName"]) { + this.putMsg(_0x9c8b99?.["prizeName"]); + _0x9c8b99?.["needInputInfo"] && (this.addressId = _0x9c8b99?.["prizeId"], this.prizeName = _0x9c8b99?.["prizeName"], await this.saveAddress()); + continue; + } + let _0x15fd7c = _0x9c8b99?.["txt"]; + this.putMsg(_0x15fd7c); + this.wxStop(_0x15fd7c); + } + return; + } + if (this.mode === "gzsl") { + let _0x1da79b = await this.gzslApi("getLottery"); + this.debug(_0x1da79b); + if (_0x1da79b && _0x1da79b.status === "1") { + let _0x3ee58d = _0x1da79b?.["activity"] || {}; + this.shopId = _0x3ee58d.shopId; + this.venderId = _0x3ee58d.customerId ?? this.shopId; + this.rule = _0x3ee58d.rule; + this.shopName = _0x3ee58d.shopName; + let { + startTime: _0x2cc036, + endTime: _0x173ea5 + } = _0x3ee58d; + _0x2785a5.activity.shopId = this.shopId; + _0x2785a5.activity.venderId = this.venderId; + _0x2785a5.activity.shopName = this.shopName; + _0x2785a5.activity.startTime = _0x2cc036; + _0x2785a5.activity.endTime = _0x173ea5; + if (_0x2cc036 && _0x2cc036 > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (_0x173ea5 && _0x173ea5 < this.timestamp()) { + this.putMsg("活动已结束"); + await this.writeLongCacheByStop(); + this.stop(); + return; + } + this.exitShop(); + let _0x3d7147 = Math.max(0, _0x1da79b?.["leftTime"] ?? 0); + if (_0x3d7147 === 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + _0x3d7147 = Math.min(_0x3d7147, 3); + this.debug(_0x3d7147); + while (_0x3d7147-- > 0) { + await this.sleep(2000, 3000); + let _0x1a513e = await this.gzslApi("draw"); + this.log(_0x1a513e); + if (_0x1a513e && _0x1a513e.status === "1") this.putMsg(_0x1a513e?.["data"]?.["name"] || "空气");else { + if (_0x1a513e && _0x1a513e.status === "-14") { + this.putMsg("非会员"); + return; + } else { + if (_0x1a513e && _0x1a513e.status === "-3") { + this.log("关注"); + let _0x2e44a0 = await this.taskPostByJson("wuxian/user/flowShop/" + this.shopId + "/" + this.venderId, { + "shopId": this.shopId, + "venderId": this.venderId, + "token": this.isvToken, + "source": "01" + }); + if (_0x2e44a0 && _0x2e44a0.status !== "1") return this.putMsg(_0x1a513e?.["msg"]); + _0x3d7147++; + continue; + } else { + let _0x3ef19c = _0x1a513e?.["msg"]; + this.putMsg(_0x3ef19c); + await this.wxStopSync(_0x3ef19c); + return; + } + } + } + } + } else { + let _0x3bd477 = _0x1da79b?.["msg"]; + this.putMsg(_0x3bd477); + await this.wxStopSync(_0x3bd477); + return; + } + return; + } + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.jinggengShopInfo(); + this.exitShop(); + let _0x37c70a = { + "user_id": this.userId, + "act_id": this.activityId + }, + _0x5afddd = ""; + if (this.activityUrl.includes("showDrawOne")) _0x5afddd = "postFrontCheckDrawOne";else { + if (this.activityUrl.includes("showTaskDraw")) { + _0x5afddd = "postFrontTaskDraw"; + _0x37c70a.drawCountNumFlag = true; + } else { + if (this.activityUrl.includes("loadBlindBox")) _0x5afddd = "postBlindBox";else { + this.putMsg("未知活动类型"); + this.stop(); + return; + } + } + } + let _0x5953ac = 1; + while (_0x5953ac-- > 0) { + await this.sleep(1000, 2000); + let _0x4a715c = await this.jinggengApi(_0x5afddd, _0x37c70a); + this.debug(_0x4a715c); + if (_0x4a715c && _0x4a715c.succ) { + this.log(_0x4a715c); + let _0x41ffd2 = _0x4a715c.msg ?? "{}", + _0x4e7ab2 = JSON.parse(_0x41ffd2); + if (_0x4e7ab2?.["isSendSucc"]) { + let _0x5b0978 = _0x4e7ab2?.["drawAwardDto"]?.["awardName"]; + this.putMsg("" + _0x4e7ab2?.["drawAwardDto"]?.["awardDenomination"] + _0x5b0978); + if (_0x4e7ab2?.["drawAwardDto"]?.["awardType"] === "JD_GOODS") { + this.addressId = _0x4e7ab2?.["drawAwardDto"]?.["actLogId"]; + this.prizeName = _0x5b0978; + await this.saveAddress(); + } + } + } else { + let _0x15ba92 = _0x4a715c?.["msg"] || "抽奖失败"; + if (_0x15ba92?.["includes"]("部分会员") && _0x34c2bd.openCardMode === 1) { + this.debug("尝试开卡", this.venderId, this.shopId); + await this.bindWithVender(); + if (this.canNotOpenCard) return; + _0x5953ac++; + continue; + } + if (_0x15ba92?.["includes"]("关注店铺")) { + await this.taskPost("front/followShop", { + "userId": this.userId + }); + _0x5953ac++; + continue; + } + _0x5953ac = _0x4a715c?.["drawNum"] ?? _0x5953ac; + this.putMsg(_0x15ba92); + this.wxStop(); + } + } + return; + } + if (this.mode === "hdb") { + await this.login(); + await this.reportPVUV(); + await this.loadFrontAct(); + await this.loadFrontAward(); + this.exitShop(); + _0x34c2bd.openCardMode === 1 && this.openCard === 0 && (this.debug("尝试开卡", this.venderId, this.shopId), await this.bindWithVender()); + let _0x50018a = 1; + if (this.actType === "pointDraw") {} else { + let _0x5d1189 = await this.hdbApi("showTaskList", {}, true); + if (_0x5d1189 && _0x5d1189.succ) { + let _0x2e2805 = _0x5d1189?.["result"]?.["taskList"] ?? []; + if (_0x2e2805.some(_0x5c72e1 => _0x5c72e1.conditionType === "favouriteShop" && _0x5c72e1.isFinish === 0)) { + let _0x241748 = await this.hdbApi("completeActivityTask", { + "conditionType": "favouriteShop" + }, true); + this.debug(_0x241748); + } + } + let _0x31118e = await this.hdbApi("getDrawTimes"); + this.debug(_0x31118e); + if (_0x31118e && _0x31118e.succ) { + _0x50018a = _0x31118e?.["result"]?.["giveTimes"] ?? 1; + } + } + if (_0x50018a === 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + _0x50018a = Math.min(_0x50018a, 3); + while (_0x50018a-- > 0) { + await this.sleep(1500); + let _0x196699 = await this.hdbApi(this.actType === "pointDraw" ? "postPointDraw" : "postDraw", { + "drawTimes": 1 + }); + this.log(_0x196699); + if (_0x196699 && _0x196699.succ) { + if (_0x196699.result.succ) { + this.putMsg(_0x196699.result?.["dmActivityLog"]?.["awardName"] || "空气"); + _0x196699.result?.["msg"]?.["includes"]("填写信息") && (this.addressId = _0x196699.result?.["dmActivityLog"]?.["id"], this.prizeName = _0x196699.result?.["dmActivityLog"]?.["awardName"], await this.saveAddress()); + return; + } else this.putMsg(_0x196699.result?.["errorMsg"] || _0x196699.result?.["message"]); + } + let _0x4e39b5 = _0x196699?.["message"]; + if (_0x4e39b5?.["includes"]("您未中奖")) { + this.putMsg("空气"); + continue; + } + if (_0x4e39b5?.["includes"]("关注店铺") && (await this.follow())) { + _0x50018a++; + continue; + } + this.putMsg(_0x4e39b5); + await this.wxStopSync(_0x4e39b5); + return; + } + return; + } + await this.getDefenseUrls(); + if (_0x32ba81.includes(this.activityType)) { + await this.login(); + this.exitShop(); + if (![10026, 10080].includes(this.actType)) { + let _0x29cd8a = await this.lzkjApi("api/task/" + this.type + "/activity"); + if (_0x29cd8a && _0x29cd8a.resp_code === 0) { + let _0x431f59 = _0x29cd8a.data?.["taskList"] || []; + await this.lzkjTask(_0x431f59); + } + } + let _0x7b628d = await this.lzkjApi("api/prize/drawPrize"); + this.drawNumber = 5; + _0x7b628d && _0x7b628d.resp_code === 0 && (this.drawNumber = _0x7b628d.data?.["drawNumber"]); + [10026, 10080].includes(this.actType) && (this.drawNumber = 3); + if (this.drawNumber <= 0) { + _0x5002ff++; + _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()); + this.putMsg("无抽奖次数"); + return; + } + this.drawNumber = Math.min(this.drawNumber, 7); + while (this.drawNumber-- > 0) { + let _0x5aceaa = await this.lzkjApi("api/prize/draw", { + "consumePoints": 0, + "actId": this.activityId + }); + this.debug(_0x5aceaa); + if (_0x5aceaa && _0x5aceaa.resp_code === 0) { + if (_0x5aceaa.data === "1") { + this.putMsg("积分不足"); + return; + } + this.putMsg(_0x5aceaa.data?.["prizeName"] || "空气"); + _0x5aceaa.data && _0x5aceaa.data?.["prizeName"] && _0x5aceaa.data?.["prizeType"] === 3 && _0x5aceaa.data?.["addressId"] && _0x5aceaa.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = _0x5aceaa.data.addressId, this.prizeName = _0x5aceaa.data?.["prizeName"], await this.saveAddress()); + await this.sleep(200); + } else { + let _0x524f34 = _0x5aceaa?.["resp_msg"]; + this.putMsg(_0x524f34); + await this.wxStopSync(_0x524f34); + return; + } + } + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + if (this.index === 0) { + await this.getShopInfo(); + if (this.shopName && ([26, 128, 129].includes(this.activityType) && _0x34c2bd.notLuckDrawList.some(_0x3d777b => this.shopName.includes(_0x3d777b)) || this.shopName.match(_0x34c2bd.blackLuckDrawRule))) { + this.putMsg("已屏蔽"); + this.stop(); + return; + } + } + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let _0x7b6d73 = await this.activityContent(); + if (!_0x7b6d73?.["result"] || !_0x7b6d73?.["data"]) { + this.putMsg(_0x7b6d73?.["errorMessage"]); + return; + } + let _0x16966d = _0x7b6d73.data?.["canDrawTimes"] ?? 5, + _0xd7f791 = _0x7b6d73.data?.["dayMaxDraw"] || 5, + _0x7dead6 = _0x7b6d73.data?.["hasFollow"] || false, + _0x1eb877 = _0x7b6d73.data?.["needFollow"] || false, + _0x17c7b8 = _0x7b6d73.data?.["content"]["filter"](_0x2a8f53 => [6, 7, 13, 14, 15, 16].includes(_0x2a8f53.type)); + if (_0x17c7b8.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let _0x55f613 = await this.getGiveContent(); + if (_0x55f613 && _0x55f613.data) { + let _0x2085f4 = _0x55f613.data; + if (_0x2085f4?.["follow"] && _0x2085f4.follow.hasGetGiveTimes < _0x2085f4.follow.maxGiveTimes) { + this.log("做关注任务"); + let _0x2e965c = _0x55f613.data.follow.skuIdsList; + const _0x5d0d21 = _0x2085f4?.["followRecordVO"]?.["hasFollowSkuIdsList"]; + _0x2e965c = _0x5d0d21 ? this.different(_0x2e965c, _0x5d0d21) : _0x2e965c; + for (let _0x5b0c3f = 0; _0x5b0c3f < _0x2085f4.follow.followTimes - _0x2085f4.follow.hasFollowTimes; _0x5b0c3f++) { + await this.followShop(_0x2e965c[_0x5b0c3f]); + await this.sleep(100); + } + _0x16966d++; + } + } + _0x16966d = Math.min(_0x16966d, _0xd7f791, 7); + if (_0x16966d <= 0) return _0x5002ff++, _0x5002ff >= _0x34c2bd.notLuckLimit && _0x34c2bd.notLuckLimit === this.index + 1 && (this.putMsg("达到无抽奖次数上限"), this.stop()), this.putMsg("无抽奖次数"); + _0x1eb877 && !_0x7dead6 && (this.log("关注店铺"), await this.wxApi("wxActionCommon/newFollowShop", { + "buyerPin": this.secretPin, + "venderId": this.venderId, + "activityType": this.activityType + })); + _0x16966d = Math.min(_0x16966d, 7); + while (_0x16966d-- > 0) { + let _0x53578c = await this.wxApi(this.type + "/start", { + "pin": this.secretPin + }); + this.debug(_0x53578c); + if (_0x53578c && _0x53578c.result) this.putMsg("" + (_0x53578c.data?.["name"] || "空气")), _0x53578c.data?.["drawInfoType"] === 7 && _0x53578c.data?.["needWriteAddress"] === "y" && _0x53578c.data?.["addressId"] && (this.addressId = _0x53578c.data.addressId, this.prizeName = _0x53578c.data.name, await this.saveAddress()), await this.sleep(500);else { + let _0x2db8bd = _0x53578c?.["errorMessage"]; + if (_0x2db8bd?.["includes"]("未关注") && (await this.follow())) { + _0x16966d++; + continue; + } + if (_0x34c2bd.openCardMode === 1 && ["不是会员", "店铺会员"].some(_0x336e5a => _0x2db8bd?.["includes"](_0x336e5a))) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + _0x16966d++; + continue; + } + this.putMsg(_0x2db8bd); + await this.wxStopSync(_0x2db8bd); + return; + } + } + } + } + _0x14c5ce.activity = { + "activityUrl": activityUrl + }; + _0x14c5ce.TaskClass = _0x2f7451; + _0x14c5ce.run({ + "whitelist": ["1-20000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_opencard.js b/jd_wx_opencard.js new file mode 100644 index 0000000..c6ec30d --- /dev/null +++ b/jd_wx_opencard.js @@ -0,0 +1,776 @@ +/* +通用开卡beta v2.0.2 + +https://lzdz1-isv.isvjcloud.com/m/1000282702/dze70dc1d244b18a194dfc8857shop +https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=8b0ef0c607f34f2ab2a7a5_240401 +https://lzdz1-isv.isvjd.com/m/unite/dzlh0001/?activityId=d5412c11d735467abbfba3b3f4b319d7&venderId=1000001933&adSource=TBGFQJD +https://lzdz1-isv.isvjd.com/m/1000001683/dzb08098af8dca4bb28fce9c88b6e4/?adsource=0005 +https://lzdz1-isv.isvjd.com/dingzhi/joinCommon/activity/activity?activityId=d5412c11d735467abbfba3b3f4b319d7 +https://szxyun-rc.isvjcloud.com/pagec/unionOpenSHR240422/index.html + +export B_WX_OPENCARD_URL="" +export B_WX_OPENCARD_INVITE_NUM=100 邀请人数 +export B_WX_OPENCARD_LEADER_NUM=1 车头数量 默认值1 +export B_WX_OPENCARD_VIEW_SHOP=0 0:邀请 1:浏览 2:邀请+浏览 默认值0 +export B_WX_OPENCARD_ADD_SKU=0 0:不加购 1:加购 默认值0 + +ps: 当关注和加购为1时则不会邀请 建议分身设置单独跑浏览或加购 + +cron: 7 7 7 7 7 * +const $ = new Env("通用开卡beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_OPENCARD_M_URL); + +if (mode) { + activityUrl = "https://lzdz1-isv.isvjcloud.com/m/1000282702/dze70dc1d244b18a194dfc8857shop/"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=8b0ef0c607f34f2ab2a7a5_240401"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=c903126b617b4d8e943c82baa_240403"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=0f03b6459c2c4333a1081be5acca7_240410"; + activityUrl = "https://lzdz1-isv.isvjd.com/m/unite/dzlh0001/?activityId=d5412c11d735467abbfba3b3f4b319d7&venderId=1000001933&adSource=TBGFQJD"; + activityUrl = "https://lzdz1-isv.isvjd.com/m/1000001683/dzb08098af8dca4bb28fce9c88b6e4/?adsource=0005"; + activityUrl = "https://lzdz1-isv.isvjd.com/dingzhi/joinCommon/activity/activity?activityId=d5412c11d735467abbfba3b3f4b319d7"; + activityUrl = "https://szxyun-rc.isvjcloud.com/pagec/unionOpenSHR240422/index.html"; + activityUrl = "https://lzdz1-isv.isvjcloud.com/m/unite/dzlh0001?activityId=7940395b691b4611a4eadb59c3c8a4f6&venderId=1000003443&adSource=MJLJDZYGFQJD"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240410aslw/oC20240410aslw?actId=5f4d63b233744b1_240515"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240410aslw/oC20240410aslw?actId=42af5f29743f45e_240517"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240520def/oC20240520def?actId=df5b2fe59b9b453_240520"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC2024052402cxc/oC2024052402cxc?actId=0421ccc68d7c41bb_24052402"; + } + const { + RunMode: l1IilII, + UserMode: il11iiIl, + baseCommonEnv: l1l11I1l, + baseCommonEnvKey: iIIiIil + } = require("./bear"); + l1l11I1l.inviteNum = parseInt(process.env.B_WX_OPENCARD_INVITE_NUM || 100); + l1l11I1l.leaderNum = parseInt(process.env.B_WX_OPENCARD_LEADER_NUM || 1); + l1l11I1l.viewShop = parseInt(process.env.B_WX_OPENCARD_VIEW_SHOP || 0); + l1l11I1l.addSku = parseInt(process.env.B_WX_OPENCARD_ADD_SKU || 0); + iIIiIil.B_WX_OPENCARD_INVITE_NUM = "inviteNum"; + iIIiIil.B_WX_OPENCARD_LEADER_NUM = "leaderNum"; + iIIiIil.B_WX_OPENCARD_VIEW_SHOP = "viewShop"; + iIIiIil.B_WX_OPENCARD_ADD_SKU = "addSku"; + l1IilII.envInfo = { + "name": "通用开卡beta", + "runName": "jd_wx_opencard", + "version": "2.0.2" + }; + class I1IiiIil extends il11iiIl { + constructor(ilIIiil1, liIIIiil) { + super(ilIIiil1, liIIIiil); + this.pinImg = "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg"; + this.viewShop = true; + } + async ["writeLongCache"]() { + this.writeFileSyncByLock("cache", this.activityId, this.pin); + } + async ["checkOpenCard"](ii1II1II = false) { + this.debug({ + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + let i1iI1lI = await this.wxApi("dingzhi/shop/league/checkOpenCard", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(i1iI1lI); + if (!i1iI1lI || !i1iI1lI.result) { + this.putMsg(i1iI1lI?.["errorMessage"]); + this.wxStop(i1iI1lI?.["errorMessage"]); + return; + } + let iIilili = i1iI1lI.data.allOpenCard, + IIll1iil = i1iI1lI.data.assistStatus, + II1lIlIi = i1iI1lI.data.sendBeanNum; + this.debug("----", II1lIlIi); + if (iIilili) { + this.log("已完成全部开卡"); + } + if (this.toHelpUser?.["shareUuid"] && ii1II1II) switch (IIll1iil) { + case 0: + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("您已经为该好友助力过了!"); + break; + case 3: + this.log("您已经为其他好友助力过了!"); + break; + case 11: + this.log("今日助力次数已达上限,无法继续为他助力!"); + break; + case 12: + this.log("您活动期间助力次数已达上限,无法继续助力!"); + break; + case 21: + this.log("您还不是会员,无法为好友助力!"); + break; + case 22: + this.log("需要关注店铺及成为全部品牌会员并且有新会员,才能助力成功哦~"); + break; + case 88: + this.log("需要关注店铺及成为全部品牌会员并且有新会员,才能助力成功哦~"); + break; + case 66: + break; + case 99: + switch (i1iI1lI.shareType) { + case 2: + this.log("您需要完成全部开卡才能为好友助力"); + break; + case 5: + this.log("您需要完成任意一组开卡,并关注店铺才能为好友助力"); + break; + case 6: + this.log("您的好友邀请您为TA助力,您关注店铺和品牌全部开卡后,即为好友助力成功"); + break; + default: + break; + } + break; + } + return i1iI1lI.data.cardList.filter(l1lIIilI => !l1lIIilI.status); + } + async ["assist"](lI11iIii = false) { + let Ii1Ilil1 = await this.wxApi("dingzhi/joinCommon/assist", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(Ii1Ilil1); + let iiiil1I1 = Ii1Ilil1?.["data"]?.["assistState"], + lI1I1lI = Ii1Ilil1?.["data"]?.["openCardInfo"]?.["openAll"]; + lI1I1lI && this.log("已完成全部开卡"); + if (this.toHelpUser?.["shareUuid"]) switch (iiiil1I1) { + case 0: + this.log("无法助力自己"); + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("没有助力次数了"); + break; + case 10: + this.log("您已为好友助力过了哦"); + break; + case 11: + this.log("您已成功为好友助力了,不能再为其他好友助力了"); + break; + case 20: + this.log("您需注册会员,才能为好友助力!"); + break; + case 21: + this.log("您需注册会员并关注店铺,才能为好友助力!"); + break; + case 22: + this.log("您需注关注店铺,才能为好友助力!"); + break; + case 77: + this.log("未全部开卡和关注,不能助力"); + break; + case 78: + this.log("已经是老会员,不能助力"); + break; + default: + this.log("未知状态"); + break; + } + return Ii1Ilil1.data?.["openCardInfo"]["openVenderId"] || []; + } + async ["getActivityContent"]() { + let ll1iIi1I = ""; + if (this.domain.includes("lzdz-isv")) { + let iliIIIil = await this.wxApi("dingzhi/taskact/common/init", { + "activityId": this.activityId, + "dzActivityType": 0, + "pin": "", + "adSource": "" + }); + if (!iliIIIil || !iliIIIil.result) { + this.putMsg(iliIIIil?.["errorMessage"]); + this.wxStop(iliIIIil?.["errorMessage"]); + return; + } + let l1ll1iIl = iliIIIil?.["data"]?.["startTime"], + IlIIIIl1 = iliIIIil?.["data"]?.["endTime"]; + if (l1ll1iIl && this.timestamp() < l1ll1iIl) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (IlIIIIl1 && this.timestamp() > IlIIIIl1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + ll1iIi1I = await this.wxApi("dingzhi/uinion/plus2505/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + let IIlI1lIi = ll1iIi1I?.["data"]?.["vipPrize"] ?? []; + if (IIlI1lIi.length > 0) { + let l1liil11 = []; + for (let Ill11lii of IIlI1lIi) { + let { + bean = 0, + score = 0 + } = Ill11lii; + if (bean) l1liil11.push(bean + "京豆"); + if (score) l1liil11.push(score + "金币"); + } + this.log("获得入会奖励:" + l1liil11.join(",")); + } + } else { + if (this.activityUrl.includes("/m/unite/") || this.activityUrl.includes("joinCommon")) { + let ilIIliII = await this.wxApi("dingzhi/taskact/common/init", { + "activityId": this.activityId, + "dzActivityType": 1, + "pin": "" + }); + this.debug(ilIIliII); + if (!ilIIliII || !ilIIliII.result) { + this.putMsg(ilIIliII?.["errorMessage"]); + this.wxStop(ilIIliII?.["errorMessage"]); + return; + } + let Ilililil = ilIIliII?.["data"]?.["startTime"], + illIIii1 = ilIIliII?.["data"]?.["endTime"]; + if (Ilililil && this.timestamp() < Ilililil) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (illIIii1 && this.timestamp() > illIIii1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + ll1iIi1I = await this.wxApi("dingzhi/joinCommon/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(ll1iIi1I); + } else this.activityUrl.includes("shop") ? (ll1iIi1I = await this.wxApi("dingzhi/shop/league/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }), this.debug(ll1iIi1I)) : (await this.getOpenCardPath(), this.debug("dingzhi/" + this.pathType + "/union/activityContent"), ll1iIi1I = await this.wxApi("dingzhi/" + this.pathType + "/union/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + })); + } + return ll1iIi1I; + } + async ["getOpenCardPath"]() { + if (il11iiIl.activity.pathType) return this.pathType = il11iiIl.activity.pathType; + let iiIii1Il = await this.taskGet(this.activityUrl); + const liIIillI = this.textToHtml(iiIii1Il); + let iilill1i = ""; + liIIillI("script[src]").each((i1Iii1I1, i1I1lli1) => { + const iiIl1Ii = liIIillI(i1I1lli1).attr("src"); + let i1i1II1l = iiIl1Ii.match(/\/\/.*\/js\/index\.\w+\.js/); + i1i1II1l && i1i1II1l.length > 0 && (iilill1i = i1i1II1l[0]); + }); + let ll1IllII = await this.request({ + "url": "https:" + iilill1i + }), + Iiiiili1 = ll1IllII?.["data"]?.["match"](/dingzhi\/([a-zA-Z]+)\/union\/saveTask/); + if (Iiiiili1 && Iiiiili1.length > 1) { + il11iiIl.activity.pathType = Iiiiili1[1]; + this.pathType = Iiiiili1[1]; + return; + } + return this.log("未匹配到路径"), this.stop(); + } + async ["initOpenCard"](l1iilIi1 = false) { + let lliI11II = await this.wxApi("dingzhi/" + this.pathType + "/union/initOpenCard", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(lliI11II); + let Il11lill = lliI11II?.["data"]?.["allOpenCard"], + lliiII1i = lliI11II?.["data"]?.["assistStatus"], + Illl1liI = lliI11II?.["data"]?.["openCardBeans"]; + Illl1liI > 0 && this.log("开卡获得京豆: " + Illl1liI); + Il11lill && this.log("已完成全部开卡"); + if (this.toHelpUser?.["shareUuid"]) { + switch (lliiII1i) { + case 0: + this.log("无法助力自己"); + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("没有助力次数了"); + break; + case 10: + this.log("您已为好友助力过了哦"); + break; + case 11: + this.log("您已成功为好友助力了,不能再为其他好友助力了"); + break; + case 20: + this.log("您需注册会员,才能为好友助力!"); + break; + case 21: + this.log("您需注册会员并关注店铺,才能为好友助力!"); + break; + case 22: + this.log("您需注关注店铺,才能为好友助力!"); + break; + case 77: + this.log("未全部开卡和关注,不能助力"); + break; + case 78: + this.log("已经是老会员,不能助力"); + break; + default: + this.log("未知状态"); + break; + } + } + return lliI11II?.["data"]?.["openInfo"] || []; + } + async ["task"]() { + if (this.domain.includes("lzdz-isv")) { + let ll11i1lI = this.activityContent.data.vipList ?? [], + lIIil1ii = this.activityContent.data.venderList?.["filter"](IilliiI1 => !ll11i1lI.includes(IilliiI1.venderId)); + if (lIIil1ii.length === 0) return this.log("已全部开卡"); + for (let IIiilII1 of lIIil1ii) { + await this.bindWithVender(IIiilII1.venderId || IIiilII1.shopId); + await this.sleep(500, 1000); + } + await this.getActivityContent(); + return; + } + if (this.activityUrl.includes("shop")) { + for (let i1ll1li1 in this.activityContent.data) { + if (this.activityContent.data[i1ll1li1]?.["allStatus"]) continue; + switch (i1ll1li1) { + case "followShop": + await this.wxApi("dingzhi/shop/league/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 1, + "taskValue": 1, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + break; + case "addSku": + await this.wxApi("dingzhi/shop/league/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 2, + "taskValue": 2, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + break; + case "mainActive": + break; + } + } + let iliIlll = await this.checkOpenCard(); + for (let lIlIll1l of iliIlll) { + await this.bindWithVender(lIlIll1l.value || lIlIll1l.value2); + await this.sleep(500, 1000); + } + iliIlll?.["length"] > 0 && (await this.checkOpenCard(true)); + } else { + if (this.activityUrl.includes("/m/unite/") || this.activityUrl.includes("joinCommon")) { + let ii11l1ii = await this.wxApi("dingzhi/joinCommon/taskInfo", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }), + lIIi11II = await this.wxApi("dingzhi/joinCommon/taskRecord", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "", + "taskType": "" + }); + this.debug(lIIi11II); + for (let liiliilI in lIIi11II?.["data"] || {}) { + if (liiliilI === "1") continue; + if (lIIi11II.data[liiliilI]?.["recordCount"] > 0) continue; + if (["20", "23", "24"].includes(liiliilI)) { + let iii1ll11 = await this.wxApi("dingzhi/joinCommon/doTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "", + "taskType": liiliilI, + "taskValue": "" + }); + this.debug(iii1ll11); + } + } + let IlIIIlIl = ii11l1ii?.["data"]?.[1]?.["settingInfo"]["map"](liiIliI => parseInt(liiIliI.value)) || [], + l1lllilI = (await this.assist()).map(lii1ilii => parseInt(lii1ilii)); + IlIIIlIl = this.different(IlIIIlIl, l1lllilI); + for (let iiil1111 of IlIIIlIl) { + await this.bindWithVender(iiil1111); + await this.sleep(50, 500); + } + IlIIIlIl?.["length"] > 0 && (await this.assist(true)); + } else { + let I1I1iliI = await this.initOpenCard(); + for (let I1IlIi of I1I1iliI) { + !I1IlIi?.["followShopStatus"] && (await this.wxApi("dingzhi/" + this.pathType + "/union/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 1, + "taskValue": I1IlIi.venderId, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + })); + !I1IlIi?.["openStatus"] && (await this.bindWithVender(I1IlIi.venderId)); + } + I1I1iliI?.["length"] > 0 && (await this.initOpenCard(true)); + } + } + } + ["mpdzSign"](i11l1lii) { + let lI111i1l = "6cc5dbd8900e434b94c4bdb0c16348ed", + I11iIIII = "c1614da9ac68", + l1lIiIii = this.timestamp(), + l11Ii1iI = "f" + I11iIIII + "D" + JSON.stringify(i11l1lii) + "c" + l1lIiIii + lI111i1l, + lli1II = this.md5(l11Ii1iI.toLowerCase()); + return { + "sign": lli1II, + "timeStamp": l1lIiIii + }; + } + ["jgcqdm"](I1lIIIi, Il1lIill) { + let I11ili11 = { + "actId": this.activityId, + ...Il1lIill, + "method": I1lIIIi.replace("dm/front", ""), + "userId": this.userId, + "buyerNick": this.buyerNick || "" + }, + IlII1Ill = this.mpdzSign(I11ili11); + return { + "jsonRpc": "2.0", + "params": { + "commonParameter": { + "m": "POST", + "oba": IlII1Ill.sign, + "timestamp": IlII1Ill.timeStamp, + "userId": this.userId + }, + "admJson": I11ili11 + } + }; + } + async ["mpdzTask"](I1IIIlIl, Iliii11I = {}) { + let lIllIil = I1IIIlIl.replace("dm/front", "").replace("//", "/"); + return await this.taskPostByJson(I1IIIlIl + "?open_id=&mix_nick=" + (this.buyerNick ?? "") + "&user_id=10299171", this.jgcqdm(lIllIil, Iliii11I)); + } + async ["load"]() { + let IIll1Ill = await this.mpdzTask("dm/front/jdJoinCardtf/activity/load", { + "jdToken": this.isvToken, + "source": "01", + "inviteNick": this.toHelpUser?.["buyerNick"] || "" + }); + this.debug(IIll1Ill); + if (!IIll1Ill || !IIll1Ill.success || IIll1Ill.data.status !== 200) return this.putMsg(IIll1Ill?.["errorMessage"]), this.wxStop(IIll1Ill?.["errorMessage"]), this.index === 0 && this.stop(), this.exit(); + this.buyerNick = IIll1Ill.data.data.missionCustomer.buyerNick; + if (!this.buyerNick) { + return this.index === 0 && (this.putMsg("无法获取到buyerNick"), this.stop()), this.log("黑号,跳过"), this.exit(); + } + let lIliiiil = IIll1Ill.data.data.cusActivity.startTime, + lli11lI1 = IIll1Ill.data.data.cusActivity.endTime; + if (lIliiiil && this.timestamp() < lIliiiil) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (lli11lI1 && this.timestamp() > lli11lI1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + !this.isInviter && l1l11I1l.viewShop !== 1 && l1l11I1l.addSku !== 1 && (await this.inviteRelation()); + if (IIll1Ill.data.data?.["missionCustomer"]?.["hasAddCart"] === 0 && l1l11I1l.viewShop !== 1 && l1l11I1l.addSku === 1) { + let l1Illlii = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "uniteAddCart" + }); + this.log(l1Illlii?.["data"]?.["data"]?.["remark"] || l1Illlii.errorMessage || "已完成加购任务"); + } + if (IIll1Ill.data?.["data"]?.["missionCustomer"]?.["hasCollectShop"] === 0 && l1l11I1l.viewShop !== 1) { + let li1Iili1 = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "uniteCollectShop" + }); + this.log(li1Iili1?.["data"]?.["data"]?.["remark"] || li1Iili1.errorMessage || "已完成关注店铺任务"); + } + let lil1llIi = await this.mpdzTask("dm/front/jdJoinCardtf/shop/shopList"); + this.debug(lil1llIi); + let i111iII = lil1llIi?.["data"]?.["data"] || []; + if (l1l11I1l.viewShop === 1 || l1l11I1l.viewShop === 2) { + for (let iill1II of i111iII) { + let lIlll1il = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "viewShop", + "goodsNumId": iill1II.userId + }); + this.log(lIlll1il?.["data"]?.["data"]?.["remark"] || lIlll1il.errorMessage); + await this.sleep(800, 1200); + } + } + if (l1l11I1l.viewShop === 1 || l1l11I1l.addSku === 1) return; + i111iII = lil1llIi?.["data"]?.["data"]?.["filter"](IlIl1I1l => !IlIl1I1l.open) || []; + for (let l1Iii1il of i111iII) { + let iiii1Iil = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "openCard", + "shopId": l1Iii1il.userId + }); + this.log(iiii1Iil?.["data"]?.["data"]?.["remark"] || iiii1Iil.errorMessage); + let iIi1iil1 = this.getQueryString(l1Iii1il?.["openCardUrl"] || "", "venderId") || l1Iii1il.userId || l1Iii1il.shopId; + await this.bindWithVender(iIi1iil1); + if (this.canNotOpenCard) this.log("不能开卡", iIi1iil1), this.exit(); + await this.sleep(500, 1000); + await await this.mpdzTask("dm/front/jdJoinCardtf/activity/load", { + "jdToken": this.isvToken, + "source": "01", + "inviteNick": this.toHelpUser?.["buyerNick"] || "", + "shopId": l1Iii1il.userId + }); + } + } + async ["inviteRelation"]() { + let I1iiIII = { + "inviterNick": this.toHelpUser?.["buyerNick"] || "" + }, + liiiIlI1 = this.jgcqdm("/jdJoinCardtf/customer/inviteRelation", I1iiIII), + liiilIII = await this.taskPostByJson("dm/front/jdJoinCardtf/customer/inviteRelation?open_id=&mix_nick=" + (this.buyerNick ?? "") + "&user_id=10299171", liiiIlI1); + this.debug(liiilIII); + if (!liiilIII || !liiilIII.success || liiilIII.data.status !== 200) return this.putMsg(liiilIII?.["errorMessage"]), this.wxStop(liiilIII?.["errorMessage"]), this.exit(); + this.log(liiilIII.data.msg || "绑定邀请成功"); + this.toHelpUser.helpedCount++; + this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false); + } + async ["getszxyunActid"]() { + if (il11iiIl.activity.activityId) return this.activityId = il11iiIl.activity.activityId; + let Iililiii = await this.taskGet(this.activityUrl); + const l1illiI1 = this.textToHtml(Iililiii); + let ll1llIi = ""; + l1illiI1("script[src]").each((lli1l1lI, illlllI) => { + const iIII1II = l1illiI1(illlllI).attr("src"); + let iIlIllll = iIII1II.match(/\/\/.*\/js\/app\.\w+\.js/); + iIlIllll && iIlIllll.length > 0 && (ll1llIi = iIlIllll[0]); + }); + let lIllI1 = await this.request({ + "url": "https:" + ll1llIi + }), + ilIll1iI = lIllI1?.["data"]?.["match"](/unionOpen\w*\"/g); + if (ilIll1iI && ilIll1iI.length > 0) { + let ilillIl1 = ilIll1iI[0].replace("\"", ""); + il11iiIl.activity.activityId = ilillIl1; + this.activityId = ilillIl1; + return; + } + return this.putMsg("未匹配到活动id"), this.stop(); + } + async ["szxyunLogin"]() { + let i1IiI1Il = await this.taskPostByJson("webc/login/userLogin", { + "shopId": "1000100710", + "token": this.isvToken, + "source": "01" + }); + if (!i1IiI1Il || i1IiI1Il.code !== "200") { + return this.putMsg(i1IiI1Il.message || "登录失败"), this.wxStop(i1IiI1Il.message || "登录失败"), this.exit(); + } + this.otherHeaders = { + "jd-fast-token": i1IiI1Il.data + }; + } + async ["active"](ill1liiI = false) { + let iiili11i = await this.taskPostByJson("webc/unionOpen/active", { + "activeId": this.activityId, + "shareId": null + }); + this.debug(iiili11i); + if (!iiili11i || iiili11i.code !== "200") { + return this.putMsg(iiili11i.message || "获取活动详情失败"), this.wxStop(iiili11i.message || "获取活动详情失败"), this.exit(); + } + if (ill1liiI) { + iiili11i.data?.["showBeanList"] && iiili11i.data?.["showBeanList"]["length"] > 0 && this.log("获得:", iiili11i.data?.["showBeanList"][0]?.["sendNum"] + "京豆"); + return; + } + this.shareUuid = iiili11i.data?.["userVO"]?.["joinId"]; + this.helpedCount = iiili11i.data?.["userVO"]?.["points"]; + this.log("助力码: " + this.shareUuid); + this.log("已邀请: " + this.helpedCount); + if (this.isInviter) il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + let l1iIiI1i = iiili11i.data?.["bindCardInfo"] ?? []; + l1iIiI1i = l1iIiI1i.filter(I1lI1i11 => !I1lI1i11.isBindCard); + for (let iIili11i of l1iIiI1i) { + let liIlilI1 = this.getQueryString(iIili11i?.["openUrl"] || "", "venderId") ?? iIili11i?.["shopId"]; + await this.bindWithVender(liIlilI1); + await this.sleep(50, 500); + } + l1iIiI1i?.["length"] > 0 && (await this.active(true)); + } + async ["szyunShare"]() { + let ili1i = await this.taskPostByJson("webc/unionOpen/share", { + "activeId": this.activityId, + "joinId": this.shareUuid || "", + "shareId": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(ili1i); + if (!ili1i || ili1i.code !== "200") return this.putMsg(ili1i.message || "助力失败"), this.wxStop(ili1i.message || "助力失败"), this.exit(); + let li1lIIiI = ili1i.data?.["helpStatus"]; + switch (li1lIIiI) { + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("已为他人助力"); + break; + case 4: + this.log("发起人助力到达限制"); + break; + case 5: + this.log("发起人助力数达到上限"); + break; + default: + this.log("未知状态", li1lIIiI); + break; + } + } + async ["inviteTask"](l11llII1) { + this.toHelpUser = l11llII1; + if (!this.toHelpUser.needHelp) { + return; + } + await this.isvObfuscator(); + if (this.activityUrl.includes("szxyun")) { + await this.getszxyunActid(); + await this.szxyunLogin(); + this.debug(this.otherHeaders); + await this.active(); + await this.szyunShare(); + return; + } + if (this.activityUrl.includes("jinggengjcq")) { + this.activityId = this.getQueryString(this.activityUrl, "actId"); + this.userId = "10299171"; + await this.load(); + return; + } + if (this.domain.includes("lzdz-isv")) await this.taskGet("/wxCommonInfo/token"), this.venderId = this.activityUrl.match(/\/m\/(\d+)/)[1], this.activityId = this.activityUrl.match(/\/(\d+)$/)[1];else { + await this.wxCommonInfo(); + await this.getSimpleActInfoVo("dz/common/getSimpleActInfoVo"); + } + if (this.activityUrl.includes("joinCommon")) { + await this.getMyPing(); + } else { + await this.getMyPing("customer/getMyCidPing"); + } + await this.accessLog(); + let Iilili1i = await this.getActivityContent(); + if (!Iilili1i || !Iilili1i.result) { + return this.putMsg(Iilili1i?.["errorMessage"]), this.wxStop(Iilili1i?.["errorMessage"]), this.exit(); + } + this.activityContent = Iilili1i; + let iiIiilii = Iilili1i?.["data"]?.["actorUuid"] || Iilili1i?.["data"]?.["actorInfo"]?.["uuid"]; + this.shareUuid = iiIiilii; + await this.task(); + } + async ["userTask"]() { + if (this.index >= l1l11I1l.leaderNum && l1l11I1l.viewShop !== 1) return this.stop(); + await this.isvObfuscator(); + if (this.activityUrl.includes("szxyun")) { + await this.getszxyunActid(); + this.debug("activityId:", this.activityId); + await this.szxyunLogin(); + this.debug(this.otherHeaders); + await this.active(); + return; + } + if (this.activityUrl.includes("jinggengjcq")) { + this.activityId = this.getQueryString(this.activityUrl, "actId"); + this.userId = "10299171"; + await this.load(); + if (l1l11I1l.viewShop === 1) this.needHelp = false; + il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + this.helpedCount = 0; + return; + } + if (this.domain.includes("lzdz-isv")) await this.taskGet("/wxCommonInfo/token"), this.venderId = this.activityUrl.match(/\/m\/(\d+)/)[1], this.activityId = this.activityUrl.match(/\/(\d+)$/)[1];else { + await this.wxCommonInfo(); + await this.getSimpleActInfoVo("dz/common/getSimpleActInfoVo"); + } + this.activityUrl.includes("joinCommon") ? await this.getMyPing() : await this.getMyPing("customer/getMyCidPing"); + await this.accessLog(); + let iill1I1i = await this.getActivityContent(); + if (!iill1I1i || !iill1I1i.result) return this.putMsg(iill1I1i?.["errorMessage"]), this.wxStop(iill1I1i?.["errorMessage"]), this.exit(); + let iI1Ili1 = iill1I1i?.["data"]?.["startTime"], + IiIl111 = iill1I1i?.["data"]?.["endTime"]; + if (iI1Ili1 && this.timestamp() < iI1Ili1) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (IiIl111 && this.timestamp() > IiIl111) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + let l1iilIlI = iill1I1i?.["data"]?.["actorUuid"] || iill1I1i?.["data"]?.["actorInfo"]?.["uuid"] || iill1I1i?.["data"]?.["userInfo"]?.["uid"]; + this.shareUuid = l1iilIlI; + this.helpedCount = 0; + il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + this.log("助力码: " + l1iilIlI); + this.activityContent = iill1I1i; + await this.task(); + } + } + l1IilII.activity = { + "activityUrl": activityUrl + }; + l1IilII.TaskClass = I1IiiIil; + l1IilII.run({ + "whitelist": ["1-2000"], + "main_thread": 50, + "thread": 10, + "inviteTask": true, + "noPush": true + }); \ No newline at end of file diff --git a/jd_wx_opencardll.js b/jd_wx_opencardll.js new file mode 100644 index 0000000..c6ec30d --- /dev/null +++ b/jd_wx_opencardll.js @@ -0,0 +1,776 @@ +/* +通用开卡beta v2.0.2 + +https://lzdz1-isv.isvjcloud.com/m/1000282702/dze70dc1d244b18a194dfc8857shop +https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=8b0ef0c607f34f2ab2a7a5_240401 +https://lzdz1-isv.isvjd.com/m/unite/dzlh0001/?activityId=d5412c11d735467abbfba3b3f4b319d7&venderId=1000001933&adSource=TBGFQJD +https://lzdz1-isv.isvjd.com/m/1000001683/dzb08098af8dca4bb28fce9c88b6e4/?adsource=0005 +https://lzdz1-isv.isvjd.com/dingzhi/joinCommon/activity/activity?activityId=d5412c11d735467abbfba3b3f4b319d7 +https://szxyun-rc.isvjcloud.com/pagec/unionOpenSHR240422/index.html + +export B_WX_OPENCARD_URL="" +export B_WX_OPENCARD_INVITE_NUM=100 邀请人数 +export B_WX_OPENCARD_LEADER_NUM=1 车头数量 默认值1 +export B_WX_OPENCARD_VIEW_SHOP=0 0:邀请 1:浏览 2:邀请+浏览 默认值0 +export B_WX_OPENCARD_ADD_SKU=0 0:不加购 1:加购 默认值0 + +ps: 当关注和加购为1时则不会邀请 建议分身设置单独跑浏览或加购 + +cron: 7 7 7 7 7 * +const $ = new Env("通用开卡beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_OPENCARD_M_URL); + +if (mode) { + activityUrl = "https://lzdz1-isv.isvjcloud.com/m/1000282702/dze70dc1d244b18a194dfc8857shop/"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=8b0ef0c607f34f2ab2a7a5_240401"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=c903126b617b4d8e943c82baa_240403"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240401cot/oC20240401cot?actId=0f03b6459c2c4333a1081be5acca7_240410"; + activityUrl = "https://lzdz1-isv.isvjd.com/m/unite/dzlh0001/?activityId=d5412c11d735467abbfba3b3f4b319d7&venderId=1000001933&adSource=TBGFQJD"; + activityUrl = "https://lzdz1-isv.isvjd.com/m/1000001683/dzb08098af8dca4bb28fce9c88b6e4/?adsource=0005"; + activityUrl = "https://lzdz1-isv.isvjd.com/dingzhi/joinCommon/activity/activity?activityId=d5412c11d735467abbfba3b3f4b319d7"; + activityUrl = "https://szxyun-rc.isvjcloud.com/pagec/unionOpenSHR240422/index.html"; + activityUrl = "https://lzdz1-isv.isvjcloud.com/m/unite/dzlh0001?activityId=7940395b691b4611a4eadb59c3c8a4f6&venderId=1000003443&adSource=MJLJDZYGFQJD"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240410aslw/oC20240410aslw?actId=5f4d63b233744b1_240515"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240410aslw/oC20240410aslw?actId=42af5f29743f45e_240517"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC20240520def/oC20240520def?actId=df5b2fe59b9b453_240520"; + activityUrl = "https://jinggengjcq-isv.isvjcloud.com/jdbeverage/pages/oC2024052402cxc/oC2024052402cxc?actId=0421ccc68d7c41bb_24052402"; + } + const { + RunMode: l1IilII, + UserMode: il11iiIl, + baseCommonEnv: l1l11I1l, + baseCommonEnvKey: iIIiIil + } = require("./bear"); + l1l11I1l.inviteNum = parseInt(process.env.B_WX_OPENCARD_INVITE_NUM || 100); + l1l11I1l.leaderNum = parseInt(process.env.B_WX_OPENCARD_LEADER_NUM || 1); + l1l11I1l.viewShop = parseInt(process.env.B_WX_OPENCARD_VIEW_SHOP || 0); + l1l11I1l.addSku = parseInt(process.env.B_WX_OPENCARD_ADD_SKU || 0); + iIIiIil.B_WX_OPENCARD_INVITE_NUM = "inviteNum"; + iIIiIil.B_WX_OPENCARD_LEADER_NUM = "leaderNum"; + iIIiIil.B_WX_OPENCARD_VIEW_SHOP = "viewShop"; + iIIiIil.B_WX_OPENCARD_ADD_SKU = "addSku"; + l1IilII.envInfo = { + "name": "通用开卡beta", + "runName": "jd_wx_opencard", + "version": "2.0.2" + }; + class I1IiiIil extends il11iiIl { + constructor(ilIIiil1, liIIIiil) { + super(ilIIiil1, liIIIiil); + this.pinImg = "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg"; + this.viewShop = true; + } + async ["writeLongCache"]() { + this.writeFileSyncByLock("cache", this.activityId, this.pin); + } + async ["checkOpenCard"](ii1II1II = false) { + this.debug({ + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + let i1iI1lI = await this.wxApi("dingzhi/shop/league/checkOpenCard", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(i1iI1lI); + if (!i1iI1lI || !i1iI1lI.result) { + this.putMsg(i1iI1lI?.["errorMessage"]); + this.wxStop(i1iI1lI?.["errorMessage"]); + return; + } + let iIilili = i1iI1lI.data.allOpenCard, + IIll1iil = i1iI1lI.data.assistStatus, + II1lIlIi = i1iI1lI.data.sendBeanNum; + this.debug("----", II1lIlIi); + if (iIilili) { + this.log("已完成全部开卡"); + } + if (this.toHelpUser?.["shareUuid"] && ii1II1II) switch (IIll1iil) { + case 0: + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("您已经为该好友助力过了!"); + break; + case 3: + this.log("您已经为其他好友助力过了!"); + break; + case 11: + this.log("今日助力次数已达上限,无法继续为他助力!"); + break; + case 12: + this.log("您活动期间助力次数已达上限,无法继续助力!"); + break; + case 21: + this.log("您还不是会员,无法为好友助力!"); + break; + case 22: + this.log("需要关注店铺及成为全部品牌会员并且有新会员,才能助力成功哦~"); + break; + case 88: + this.log("需要关注店铺及成为全部品牌会员并且有新会员,才能助力成功哦~"); + break; + case 66: + break; + case 99: + switch (i1iI1lI.shareType) { + case 2: + this.log("您需要完成全部开卡才能为好友助力"); + break; + case 5: + this.log("您需要完成任意一组开卡,并关注店铺才能为好友助力"); + break; + case 6: + this.log("您的好友邀请您为TA助力,您关注店铺和品牌全部开卡后,即为好友助力成功"); + break; + default: + break; + } + break; + } + return i1iI1lI.data.cardList.filter(l1lIIilI => !l1lIIilI.status); + } + async ["assist"](lI11iIii = false) { + let Ii1Ilil1 = await this.wxApi("dingzhi/joinCommon/assist", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(Ii1Ilil1); + let iiiil1I1 = Ii1Ilil1?.["data"]?.["assistState"], + lI1I1lI = Ii1Ilil1?.["data"]?.["openCardInfo"]?.["openAll"]; + lI1I1lI && this.log("已完成全部开卡"); + if (this.toHelpUser?.["shareUuid"]) switch (iiiil1I1) { + case 0: + this.log("无法助力自己"); + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("没有助力次数了"); + break; + case 10: + this.log("您已为好友助力过了哦"); + break; + case 11: + this.log("您已成功为好友助力了,不能再为其他好友助力了"); + break; + case 20: + this.log("您需注册会员,才能为好友助力!"); + break; + case 21: + this.log("您需注册会员并关注店铺,才能为好友助力!"); + break; + case 22: + this.log("您需注关注店铺,才能为好友助力!"); + break; + case 77: + this.log("未全部开卡和关注,不能助力"); + break; + case 78: + this.log("已经是老会员,不能助力"); + break; + default: + this.log("未知状态"); + break; + } + return Ii1Ilil1.data?.["openCardInfo"]["openVenderId"] || []; + } + async ["getActivityContent"]() { + let ll1iIi1I = ""; + if (this.domain.includes("lzdz-isv")) { + let iliIIIil = await this.wxApi("dingzhi/taskact/common/init", { + "activityId": this.activityId, + "dzActivityType": 0, + "pin": "", + "adSource": "" + }); + if (!iliIIIil || !iliIIIil.result) { + this.putMsg(iliIIIil?.["errorMessage"]); + this.wxStop(iliIIIil?.["errorMessage"]); + return; + } + let l1ll1iIl = iliIIIil?.["data"]?.["startTime"], + IlIIIIl1 = iliIIIil?.["data"]?.["endTime"]; + if (l1ll1iIl && this.timestamp() < l1ll1iIl) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (IlIIIIl1 && this.timestamp() > IlIIIIl1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + ll1iIi1I = await this.wxApi("dingzhi/uinion/plus2505/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + let IIlI1lIi = ll1iIi1I?.["data"]?.["vipPrize"] ?? []; + if (IIlI1lIi.length > 0) { + let l1liil11 = []; + for (let Ill11lii of IIlI1lIi) { + let { + bean = 0, + score = 0 + } = Ill11lii; + if (bean) l1liil11.push(bean + "京豆"); + if (score) l1liil11.push(score + "金币"); + } + this.log("获得入会奖励:" + l1liil11.join(",")); + } + } else { + if (this.activityUrl.includes("/m/unite/") || this.activityUrl.includes("joinCommon")) { + let ilIIliII = await this.wxApi("dingzhi/taskact/common/init", { + "activityId": this.activityId, + "dzActivityType": 1, + "pin": "" + }); + this.debug(ilIIliII); + if (!ilIIliII || !ilIIliII.result) { + this.putMsg(ilIIliII?.["errorMessage"]); + this.wxStop(ilIIliII?.["errorMessage"]); + return; + } + let Ilililil = ilIIliII?.["data"]?.["startTime"], + illIIii1 = ilIIliII?.["data"]?.["endTime"]; + if (Ilililil && this.timestamp() < Ilililil) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (illIIii1 && this.timestamp() > illIIii1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + ll1iIi1I = await this.wxApi("dingzhi/joinCommon/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(ll1iIi1I); + } else this.activityUrl.includes("shop") ? (ll1iIi1I = await this.wxApi("dingzhi/shop/league/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }), this.debug(ll1iIi1I)) : (await this.getOpenCardPath(), this.debug("dingzhi/" + this.pathType + "/union/activityContent"), ll1iIi1I = await this.wxApi("dingzhi/" + this.pathType + "/union/activityContent", { + "activityId": this.activityId, + "nick": this.nickname, + "pinImg": this.pinImg, + "pin": this.secretPin, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + })); + } + return ll1iIi1I; + } + async ["getOpenCardPath"]() { + if (il11iiIl.activity.pathType) return this.pathType = il11iiIl.activity.pathType; + let iiIii1Il = await this.taskGet(this.activityUrl); + const liIIillI = this.textToHtml(iiIii1Il); + let iilill1i = ""; + liIIillI("script[src]").each((i1Iii1I1, i1I1lli1) => { + const iiIl1Ii = liIIillI(i1I1lli1).attr("src"); + let i1i1II1l = iiIl1Ii.match(/\/\/.*\/js\/index\.\w+\.js/); + i1i1II1l && i1i1II1l.length > 0 && (iilill1i = i1i1II1l[0]); + }); + let ll1IllII = await this.request({ + "url": "https:" + iilill1i + }), + Iiiiili1 = ll1IllII?.["data"]?.["match"](/dingzhi\/([a-zA-Z]+)\/union\/saveTask/); + if (Iiiiili1 && Iiiiili1.length > 1) { + il11iiIl.activity.pathType = Iiiiili1[1]; + this.pathType = Iiiiili1[1]; + return; + } + return this.log("未匹配到路径"), this.stop(); + } + async ["initOpenCard"](l1iilIi1 = false) { + let lliI11II = await this.wxApi("dingzhi/" + this.pathType + "/union/initOpenCard", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(lliI11II); + let Il11lill = lliI11II?.["data"]?.["allOpenCard"], + lliiII1i = lliI11II?.["data"]?.["assistStatus"], + Illl1liI = lliI11II?.["data"]?.["openCardBeans"]; + Illl1liI > 0 && this.log("开卡获得京豆: " + Illl1liI); + Il11lill && this.log("已完成全部开卡"); + if (this.toHelpUser?.["shareUuid"]) { + switch (lliiII1i) { + case 0: + this.log("无法助力自己"); + break; + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("没有助力次数了"); + break; + case 10: + this.log("您已为好友助力过了哦"); + break; + case 11: + this.log("您已成功为好友助力了,不能再为其他好友助力了"); + break; + case 20: + this.log("您需注册会员,才能为好友助力!"); + break; + case 21: + this.log("您需注册会员并关注店铺,才能为好友助力!"); + break; + case 22: + this.log("您需注关注店铺,才能为好友助力!"); + break; + case 77: + this.log("未全部开卡和关注,不能助力"); + break; + case 78: + this.log("已经是老会员,不能助力"); + break; + default: + this.log("未知状态"); + break; + } + } + return lliI11II?.["data"]?.["openInfo"] || []; + } + async ["task"]() { + if (this.domain.includes("lzdz-isv")) { + let ll11i1lI = this.activityContent.data.vipList ?? [], + lIIil1ii = this.activityContent.data.venderList?.["filter"](IilliiI1 => !ll11i1lI.includes(IilliiI1.venderId)); + if (lIIil1ii.length === 0) return this.log("已全部开卡"); + for (let IIiilII1 of lIIil1ii) { + await this.bindWithVender(IIiilII1.venderId || IIiilII1.shopId); + await this.sleep(500, 1000); + } + await this.getActivityContent(); + return; + } + if (this.activityUrl.includes("shop")) { + for (let i1ll1li1 in this.activityContent.data) { + if (this.activityContent.data[i1ll1li1]?.["allStatus"]) continue; + switch (i1ll1li1) { + case "followShop": + await this.wxApi("dingzhi/shop/league/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 1, + "taskValue": 1, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + break; + case "addSku": + await this.wxApi("dingzhi/shop/league/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 2, + "taskValue": 2, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }); + break; + case "mainActive": + break; + } + } + let iliIlll = await this.checkOpenCard(); + for (let lIlIll1l of iliIlll) { + await this.bindWithVender(lIlIll1l.value || lIlIll1l.value2); + await this.sleep(500, 1000); + } + iliIlll?.["length"] > 0 && (await this.checkOpenCard(true)); + } else { + if (this.activityUrl.includes("/m/unite/") || this.activityUrl.includes("joinCommon")) { + let ii11l1ii = await this.wxApi("dingzhi/joinCommon/taskInfo", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + }), + lIIi11II = await this.wxApi("dingzhi/joinCommon/taskRecord", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "", + "taskType": "" + }); + this.debug(lIIi11II); + for (let liiliilI in lIIi11II?.["data"] || {}) { + if (liiliilI === "1") continue; + if (lIIi11II.data[liiliilI]?.["recordCount"] > 0) continue; + if (["20", "23", "24"].includes(liiliilI)) { + let iii1ll11 = await this.wxApi("dingzhi/joinCommon/doTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": this.shareUuid, + "shareUuid": this.toHelpUser?.["shareUuid"] || "", + "taskType": liiliilI, + "taskValue": "" + }); + this.debug(iii1ll11); + } + } + let IlIIIlIl = ii11l1ii?.["data"]?.[1]?.["settingInfo"]["map"](liiIliI => parseInt(liiIliI.value)) || [], + l1lllilI = (await this.assist()).map(lii1ilii => parseInt(lii1ilii)); + IlIIIlIl = this.different(IlIIIlIl, l1lllilI); + for (let iiil1111 of IlIIIlIl) { + await this.bindWithVender(iiil1111); + await this.sleep(50, 500); + } + IlIIIlIl?.["length"] > 0 && (await this.assist(true)); + } else { + let I1I1iliI = await this.initOpenCard(); + for (let I1IlIi of I1I1iliI) { + !I1IlIi?.["followShopStatus"] && (await this.wxApi("dingzhi/" + this.pathType + "/union/saveTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "actorUuid": this.shareUuid, + "taskType": 1, + "taskValue": I1IlIi.venderId, + "shareUuid": this.toHelpUser?.["shareUuid"] || "" + })); + !I1IlIi?.["openStatus"] && (await this.bindWithVender(I1IlIi.venderId)); + } + I1I1iliI?.["length"] > 0 && (await this.initOpenCard(true)); + } + } + } + ["mpdzSign"](i11l1lii) { + let lI111i1l = "6cc5dbd8900e434b94c4bdb0c16348ed", + I11iIIII = "c1614da9ac68", + l1lIiIii = this.timestamp(), + l11Ii1iI = "f" + I11iIIII + "D" + JSON.stringify(i11l1lii) + "c" + l1lIiIii + lI111i1l, + lli1II = this.md5(l11Ii1iI.toLowerCase()); + return { + "sign": lli1II, + "timeStamp": l1lIiIii + }; + } + ["jgcqdm"](I1lIIIi, Il1lIill) { + let I11ili11 = { + "actId": this.activityId, + ...Il1lIill, + "method": I1lIIIi.replace("dm/front", ""), + "userId": this.userId, + "buyerNick": this.buyerNick || "" + }, + IlII1Ill = this.mpdzSign(I11ili11); + return { + "jsonRpc": "2.0", + "params": { + "commonParameter": { + "m": "POST", + "oba": IlII1Ill.sign, + "timestamp": IlII1Ill.timeStamp, + "userId": this.userId + }, + "admJson": I11ili11 + } + }; + } + async ["mpdzTask"](I1IIIlIl, Iliii11I = {}) { + let lIllIil = I1IIIlIl.replace("dm/front", "").replace("//", "/"); + return await this.taskPostByJson(I1IIIlIl + "?open_id=&mix_nick=" + (this.buyerNick ?? "") + "&user_id=10299171", this.jgcqdm(lIllIil, Iliii11I)); + } + async ["load"]() { + let IIll1Ill = await this.mpdzTask("dm/front/jdJoinCardtf/activity/load", { + "jdToken": this.isvToken, + "source": "01", + "inviteNick": this.toHelpUser?.["buyerNick"] || "" + }); + this.debug(IIll1Ill); + if (!IIll1Ill || !IIll1Ill.success || IIll1Ill.data.status !== 200) return this.putMsg(IIll1Ill?.["errorMessage"]), this.wxStop(IIll1Ill?.["errorMessage"]), this.index === 0 && this.stop(), this.exit(); + this.buyerNick = IIll1Ill.data.data.missionCustomer.buyerNick; + if (!this.buyerNick) { + return this.index === 0 && (this.putMsg("无法获取到buyerNick"), this.stop()), this.log("黑号,跳过"), this.exit(); + } + let lIliiiil = IIll1Ill.data.data.cusActivity.startTime, + lli11lI1 = IIll1Ill.data.data.cusActivity.endTime; + if (lIliiiil && this.timestamp() < lIliiiil) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (lli11lI1 && this.timestamp() > lli11lI1) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + !this.isInviter && l1l11I1l.viewShop !== 1 && l1l11I1l.addSku !== 1 && (await this.inviteRelation()); + if (IIll1Ill.data.data?.["missionCustomer"]?.["hasAddCart"] === 0 && l1l11I1l.viewShop !== 1 && l1l11I1l.addSku === 1) { + let l1Illlii = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "uniteAddCart" + }); + this.log(l1Illlii?.["data"]?.["data"]?.["remark"] || l1Illlii.errorMessage || "已完成加购任务"); + } + if (IIll1Ill.data?.["data"]?.["missionCustomer"]?.["hasCollectShop"] === 0 && l1l11I1l.viewShop !== 1) { + let li1Iili1 = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "uniteCollectShop" + }); + this.log(li1Iili1?.["data"]?.["data"]?.["remark"] || li1Iili1.errorMessage || "已完成关注店铺任务"); + } + let lil1llIi = await this.mpdzTask("dm/front/jdJoinCardtf/shop/shopList"); + this.debug(lil1llIi); + let i111iII = lil1llIi?.["data"]?.["data"] || []; + if (l1l11I1l.viewShop === 1 || l1l11I1l.viewShop === 2) { + for (let iill1II of i111iII) { + let lIlll1il = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "viewShop", + "goodsNumId": iill1II.userId + }); + this.log(lIlll1il?.["data"]?.["data"]?.["remark"] || lIlll1il.errorMessage); + await this.sleep(800, 1200); + } + } + if (l1l11I1l.viewShop === 1 || l1l11I1l.addSku === 1) return; + i111iII = lil1llIi?.["data"]?.["data"]?.["filter"](IlIl1I1l => !IlIl1I1l.open) || []; + for (let l1Iii1il of i111iII) { + let iiii1Iil = await this.mpdzTask("dm/front/jdJoinCardtf/mission/completeMission", { + "missionType": "openCard", + "shopId": l1Iii1il.userId + }); + this.log(iiii1Iil?.["data"]?.["data"]?.["remark"] || iiii1Iil.errorMessage); + let iIi1iil1 = this.getQueryString(l1Iii1il?.["openCardUrl"] || "", "venderId") || l1Iii1il.userId || l1Iii1il.shopId; + await this.bindWithVender(iIi1iil1); + if (this.canNotOpenCard) this.log("不能开卡", iIi1iil1), this.exit(); + await this.sleep(500, 1000); + await await this.mpdzTask("dm/front/jdJoinCardtf/activity/load", { + "jdToken": this.isvToken, + "source": "01", + "inviteNick": this.toHelpUser?.["buyerNick"] || "", + "shopId": l1Iii1il.userId + }); + } + } + async ["inviteRelation"]() { + let I1iiIII = { + "inviterNick": this.toHelpUser?.["buyerNick"] || "" + }, + liiiIlI1 = this.jgcqdm("/jdJoinCardtf/customer/inviteRelation", I1iiIII), + liiilIII = await this.taskPostByJson("dm/front/jdJoinCardtf/customer/inviteRelation?open_id=&mix_nick=" + (this.buyerNick ?? "") + "&user_id=10299171", liiiIlI1); + this.debug(liiilIII); + if (!liiilIII || !liiilIII.success || liiilIII.data.status !== 200) return this.putMsg(liiilIII?.["errorMessage"]), this.wxStop(liiilIII?.["errorMessage"]), this.exit(); + this.log(liiilIII.data.msg || "绑定邀请成功"); + this.toHelpUser.helpedCount++; + this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false); + } + async ["getszxyunActid"]() { + if (il11iiIl.activity.activityId) return this.activityId = il11iiIl.activity.activityId; + let Iililiii = await this.taskGet(this.activityUrl); + const l1illiI1 = this.textToHtml(Iililiii); + let ll1llIi = ""; + l1illiI1("script[src]").each((lli1l1lI, illlllI) => { + const iIII1II = l1illiI1(illlllI).attr("src"); + let iIlIllll = iIII1II.match(/\/\/.*\/js\/app\.\w+\.js/); + iIlIllll && iIlIllll.length > 0 && (ll1llIi = iIlIllll[0]); + }); + let lIllI1 = await this.request({ + "url": "https:" + ll1llIi + }), + ilIll1iI = lIllI1?.["data"]?.["match"](/unionOpen\w*\"/g); + if (ilIll1iI && ilIll1iI.length > 0) { + let ilillIl1 = ilIll1iI[0].replace("\"", ""); + il11iiIl.activity.activityId = ilillIl1; + this.activityId = ilillIl1; + return; + } + return this.putMsg("未匹配到活动id"), this.stop(); + } + async ["szxyunLogin"]() { + let i1IiI1Il = await this.taskPostByJson("webc/login/userLogin", { + "shopId": "1000100710", + "token": this.isvToken, + "source": "01" + }); + if (!i1IiI1Il || i1IiI1Il.code !== "200") { + return this.putMsg(i1IiI1Il.message || "登录失败"), this.wxStop(i1IiI1Il.message || "登录失败"), this.exit(); + } + this.otherHeaders = { + "jd-fast-token": i1IiI1Il.data + }; + } + async ["active"](ill1liiI = false) { + let iiili11i = await this.taskPostByJson("webc/unionOpen/active", { + "activeId": this.activityId, + "shareId": null + }); + this.debug(iiili11i); + if (!iiili11i || iiili11i.code !== "200") { + return this.putMsg(iiili11i.message || "获取活动详情失败"), this.wxStop(iiili11i.message || "获取活动详情失败"), this.exit(); + } + if (ill1liiI) { + iiili11i.data?.["showBeanList"] && iiili11i.data?.["showBeanList"]["length"] > 0 && this.log("获得:", iiili11i.data?.["showBeanList"][0]?.["sendNum"] + "京豆"); + return; + } + this.shareUuid = iiili11i.data?.["userVO"]?.["joinId"]; + this.helpedCount = iiili11i.data?.["userVO"]?.["points"]; + this.log("助力码: " + this.shareUuid); + this.log("已邀请: " + this.helpedCount); + if (this.isInviter) il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + let l1iIiI1i = iiili11i.data?.["bindCardInfo"] ?? []; + l1iIiI1i = l1iIiI1i.filter(I1lI1i11 => !I1lI1i11.isBindCard); + for (let iIili11i of l1iIiI1i) { + let liIlilI1 = this.getQueryString(iIili11i?.["openUrl"] || "", "venderId") ?? iIili11i?.["shopId"]; + await this.bindWithVender(liIlilI1); + await this.sleep(50, 500); + } + l1iIiI1i?.["length"] > 0 && (await this.active(true)); + } + async ["szyunShare"]() { + let ili1i = await this.taskPostByJson("webc/unionOpen/share", { + "activeId": this.activityId, + "joinId": this.shareUuid || "", + "shareId": this.toHelpUser?.["shareUuid"] || "" + }); + this.debug(ili1i); + if (!ili1i || ili1i.code !== "200") return this.putMsg(ili1i.message || "助力失败"), this.wxStop(ili1i.message || "助力失败"), this.exit(); + let li1lIIiI = ili1i.data?.["helpStatus"]; + switch (li1lIIiI) { + case 1: + this.toHelpUser.helpedCount++, this.toHelpUser.helpedCount >= il11iiIl.activity.maxHelpCount && (this.toHelpUser.needHelp = false), this.log("助力成功,已邀请" + this.toHelpUser.helpedCount + "人"); + break; + case 2: + this.log("已经助力过了"); + break; + case 3: + this.log("已为他人助力"); + break; + case 4: + this.log("发起人助力到达限制"); + break; + case 5: + this.log("发起人助力数达到上限"); + break; + default: + this.log("未知状态", li1lIIiI); + break; + } + } + async ["inviteTask"](l11llII1) { + this.toHelpUser = l11llII1; + if (!this.toHelpUser.needHelp) { + return; + } + await this.isvObfuscator(); + if (this.activityUrl.includes("szxyun")) { + await this.getszxyunActid(); + await this.szxyunLogin(); + this.debug(this.otherHeaders); + await this.active(); + await this.szyunShare(); + return; + } + if (this.activityUrl.includes("jinggengjcq")) { + this.activityId = this.getQueryString(this.activityUrl, "actId"); + this.userId = "10299171"; + await this.load(); + return; + } + if (this.domain.includes("lzdz-isv")) await this.taskGet("/wxCommonInfo/token"), this.venderId = this.activityUrl.match(/\/m\/(\d+)/)[1], this.activityId = this.activityUrl.match(/\/(\d+)$/)[1];else { + await this.wxCommonInfo(); + await this.getSimpleActInfoVo("dz/common/getSimpleActInfoVo"); + } + if (this.activityUrl.includes("joinCommon")) { + await this.getMyPing(); + } else { + await this.getMyPing("customer/getMyCidPing"); + } + await this.accessLog(); + let Iilili1i = await this.getActivityContent(); + if (!Iilili1i || !Iilili1i.result) { + return this.putMsg(Iilili1i?.["errorMessage"]), this.wxStop(Iilili1i?.["errorMessage"]), this.exit(); + } + this.activityContent = Iilili1i; + let iiIiilii = Iilili1i?.["data"]?.["actorUuid"] || Iilili1i?.["data"]?.["actorInfo"]?.["uuid"]; + this.shareUuid = iiIiilii; + await this.task(); + } + async ["userTask"]() { + if (this.index >= l1l11I1l.leaderNum && l1l11I1l.viewShop !== 1) return this.stop(); + await this.isvObfuscator(); + if (this.activityUrl.includes("szxyun")) { + await this.getszxyunActid(); + this.debug("activityId:", this.activityId); + await this.szxyunLogin(); + this.debug(this.otherHeaders); + await this.active(); + return; + } + if (this.activityUrl.includes("jinggengjcq")) { + this.activityId = this.getQueryString(this.activityUrl, "actId"); + this.userId = "10299171"; + await this.load(); + if (l1l11I1l.viewShop === 1) this.needHelp = false; + il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + this.helpedCount = 0; + return; + } + if (this.domain.includes("lzdz-isv")) await this.taskGet("/wxCommonInfo/token"), this.venderId = this.activityUrl.match(/\/m\/(\d+)/)[1], this.activityId = this.activityUrl.match(/\/(\d+)$/)[1];else { + await this.wxCommonInfo(); + await this.getSimpleActInfoVo("dz/common/getSimpleActInfoVo"); + } + this.activityUrl.includes("joinCommon") ? await this.getMyPing() : await this.getMyPing("customer/getMyCidPing"); + await this.accessLog(); + let iill1I1i = await this.getActivityContent(); + if (!iill1I1i || !iill1I1i.result) return this.putMsg(iill1I1i?.["errorMessage"]), this.wxStop(iill1I1i?.["errorMessage"]), this.exit(); + let iI1Ili1 = iill1I1i?.["data"]?.["startTime"], + IiIl111 = iill1I1i?.["data"]?.["endTime"]; + if (iI1Ili1 && this.timestamp() < iI1Ili1) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (IiIl111 && this.timestamp() > IiIl111) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + let l1iilIlI = iill1I1i?.["data"]?.["actorUuid"] || iill1I1i?.["data"]?.["actorInfo"]?.["uuid"] || iill1I1i?.["data"]?.["userInfo"]?.["uid"]; + this.shareUuid = l1iilIlI; + this.helpedCount = 0; + il11iiIl.activity.maxHelpCount = l1l11I1l.inviteNum; + this.log("助力码: " + l1iilIlI); + this.activityContent = iill1I1i; + await this.task(); + } + } + l1IilII.activity = { + "activityUrl": activityUrl + }; + l1IilII.TaskClass = I1IiiIil; + l1IilII.run({ + "whitelist": ["1-2000"], + "main_thread": 50, + "thread": 10, + "inviteTask": true, + "noPush": true + }); \ No newline at end of file diff --git a/jd_wx_pointDraw.js b/jd_wx_pointDraw.js new file mode 100644 index 0000000..ea832ca --- /dev/null +++ b/jd_wx_pointDraw.js @@ -0,0 +1,450 @@ +/* +积分兑换beta v2.0.3 + +https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgBeans?venderId=1000015445&giftId=c8e4b16f96014fb3a53aa182627402c3&giftType=4&beansLevel=1 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10079&templateId=202209051007jfdh&activityId=1768977757201473538&nodeId=101001&prd=cjwx +https://jinggeng-rc.isvjcloud.com/ql/front/exchangeActDetail?actId=9e8080268dca1acb018df35a01c36241&userId=1000377707 +https://jingyun-rc.isvjcloud.com/h5/pages/exchangePoint/exchangePoint?id=2ee25610cda5d58daff79c7a98178904&userId=1000007503&actForm=single +https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30002/1001/?activityId=1806167396485083137&shopId=1000002836 + +export B_WX_POINT_DRAW_URL="" +export B_WX_NOT_POINT_DRAW_LIST="" # 拉黑的店铺 例子: xxxxx@xxxxxxxx +export B_WX_NOT_POINT_DRAW_GIFT_NAMES="" # 拉黑的奖品 例子: 雨x伞@雨x伞@雨x伞 + +cron: 7 7 7 7 7 * +const $ = new Env("积分兑换beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_POINT_DRAW_URL); + +if (mode) { + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgBeans?venderId=1000092950&giftId=83c141f7589348ada97081d92f79f511&giftType=4&beansLevel="; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgBeans?venderId=1000015445&giftId=c8e4b16f96014fb3a53aa182627402c3&giftType=4&beansLevel=1"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgShiWu?venderId=779565&giftId=a0ebbb463bf04473ae1da3ac017653be&giftType=3"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10079&templateId=202209051007jfdh&activityId=1768977757201473538&nodeId=101001&prd=cjwx"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/exchangeActDetail?actId=9e8080c68e328c5e018e3668d9f42709&userId=10726683"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/exchangeActDetail?actId=9e8080268dca1acb018df35a01c36241&userId=1000377707"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10079&templateId=202209051007jfdh&activityId=1770345652211335170&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgZheKou?venderId=13355577&giftId=fe450dd0d7a74d24919549b43472824d&giftType=5"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgShiWu?venderId=1000075343&giftId=48d9a075943c412390977c2e61d4f155&giftType=3"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/exchangePoint/exchangePoint?id=7b7db11b08b21348e9aeb2d4cc31ae7a&userId=1000080364&actForm=single"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10079&templateId=202209051007jfdh618&activityId=1785215208127311873&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgBeans?venderId=1000302822&giftId=7a3c49af66ff42bf8e2eb2c0c7b95cec&giftType=4"; + activityUrl = "https://cjhy-isv.isvjcloud.com/mc/wxPointShopView/pointExgBeans?venderId=1000302822&giftId=a573617872f541f9ac18436208e776c2&giftType=4"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/exchangeJDmarket/exchangeJDmarket?id=f0ec65ba8db5a7a913dddc892f9d5b9e&userId=1000307221&actForm=single"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/exchangePoint/exchangePoint?id=2ee25610cda5d58daff79c7a98178904&userId=1000007503&actForm=single"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v2/30002/1001/?activityId=1806167396485083137&shopId=1000002836"; + } + const { + RunMode: _0x517e36, + UserMode: _0x56fba7, + baseCommonEnv: _0x1c00c6, + baseCommonEnvKey: _0x10f3de + } = require("./bear"); + _0x1c00c6.notPointDrawList = process.env?.["B_WX_NOT_POINT_DRAW_LIST"]?.["split"](/[@,&|]/) || []; + _0x1c00c6.notPointDrawGiftNameList = process.env?.["B_WX_NOT_POINT_DRAW_GIFT_NAMES"]?.["split"](/[@,&|]/) || ["雨x伞", "加赠特权"]; + _0x10f3de.B_WX_NOT_POINT_DRAW_LIST = "__notPointDrawList__"; + _0x10f3de.B_WX_NOT_POINT_DRAW_GIFT_NAMES = "__notPointDrawGiftNameList__"; + _0x517e36.envInfo = { + "name": "积分兑换beta", + "runName": "jd_wx_pointDraw", + "version": "2.0.3" + }; + class _0x20828e extends _0x56fba7 { + constructor(_0xd1cd72, _0xc1c9da) { + super(_0xd1cd72, _0xc1c9da); + this.needPoint = null; + } + async ["receivePrize"](_0x29fd5c = {}) { + let _0x58fde4 = await this.v2Api("api/" + this.activityType + "/receivePrize", { + "prizeNum": 1, + "mobile": "", + ..._0x29fd5c + }); + if (_0x58fde4 && _0x58fde4.code === 200) { + this.putMsg(_0x58fde4.data?.["msg"] || _0x58fde4.data); + if (_0x58fde4.data?.["successNum"] > 0) { + let _0x332387 = this.formatDate(Date.now(), "yyyy-MM-dd HH:mm:ss") + "," + this.rightsName + "," + this.pin + "," + this.address?.["phone"] + "," + this.address?.["address"] + "," + _0x517e36.envInfo.name + "," + (this.shopId ?? this.venderId) + "," + this.activityUrl + "\n"; + this.appendFileSync("", "gifts.csv", _0x332387); + } + return; + } + let _0x48ad7f = _0x58fde4.data?.["msg"] || _0x58fde4.data; + this.putMsg(_0x48ad7f); + await this.wxStopSync(_0x48ad7f); + this.exit(); + } + async ["hdbExchange"](_0x5aacc8, _0x45bf9 = true) { + let _0x20a668 = await this.hdbApi("post" + this.activityType + "FrontAct", { + "awardId": _0x5aacc8 + }); + if (_0x20a668 && _0x20a668.succ) { + if (_0x20a668.result.succ) { + this.putMsg(_0x20a668.result?.["dmActivityLog"]?.["awardName"] || "空气"); + _0x20a668.result?.["msg"]?.["includes"]("填写信息") && (this.addressId = _0x20a668.result?.["dmActivityLog"]?.["id"], this.prizeName = _0x20a668.result?.["dmActivityLog"]?.["awardName"], await this.saveAddress()); + return; + } else this.putMsg(_0x20a668.result?.["errorMsg"] || _0x20a668.result?.["message"]), this.exit(); + } + let _0x1e6397 = _0x20a668?.["message"]; + if (_0x1e6397?.["includes"]("关注店铺") && _0x45bf9 && (await this.follow())) return await this.hdbExchange(_0x5aacc8, false); + return this.putMsg(_0x1e6397), await this.wxStopSync(_0x1e6397), this.exit(); + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (this.mode === "v2") { + await this.login(); + let _0x573518 = await this.v2Api("api/" + this.activityType + "/getActivityInfo"), + { + detail: _0x1f07a0, + rightsName: _0x2fd93a, + rightsType: _0x3e43f3 + } = _0x573518?.["data"]; + this.rightsName = _0x2fd93a; + if (/(券|权益已兑完)/.test(_0x2fd93a)) return this.putMsg("垃圾活动"), this.stop(); + if (_0x1f07a0) return this.putMsg(_0x1f07a0); + if (_0x3e43f3 === 3) { + this.getAddress(); + if (!this.address) { + this.putMsg("未配置地址或所有地址已达使用上限,退出填地址"); + return; + } + let _0x1eda4c = await this.v2Api("api/" + this.activityType + "/saveAddress", { + "name": this.address.receiver, + "tel": this.address.phone, + "province": this.address.province, + "city": this.address.city, + "county": this.address.county, + "addressDetail": this.address.address, + "isDefault": false + }); + this.putMsg(_0x1eda4c.data?.["msg"] || _0x1eda4c.data); + let _0xbbf6e2 = await this.v2Api("api/" + this.activityType + "/getAddressList"); + for (let _0x591e7d of _0xbbf6e2?.["data"] || []) { + _0x591e7d.tel?.["includes"](this.address.phone) && (await this.receivePrize({ + "addressId": _0x591e7d.id + })); + await this.v2Api("api/" + this.activityType + "/delAddress", { + "id": _0x591e7d.id + }); + } + } else await this.receivePrize(); + return; + } + if (this.mode === "hdb") { + await this.login(); + await this.reportPVUV(); + await this.loadFrontAct(); + await this.loadFrontAward(); + let _0x18a1c4 = await this.hdbApi("getMyPoint"), + _0x39e04a = _0x18a1c4?.["result"] ?? 0; + if (_0x39e04a <= 0) return this.putMsg("无积分"), this.exit(); + this.activityType = "PointExchange"; + this.activityUrl.includes("exchangeJDmarket") && (this.activityType = "PointLimitedTimeExchange"); + let _0x46a19a = await this.hdbApi("load" + this.activityType + "Awards", { + "timeIndex": 0 + }), + _0x48db9f = _0x46a19a?.["result"]?.["awards"] ?? []; + _0x48db9f = _0x48db9f.filter(_0xf42f8f => _0xf42f8f?.["awardSurplusQuantity"] > 0); + if (_0x48db9f.length === 0) return this.putMsg("垃圾或已领完"), this.stop(); + this.debug(_0x48db9f); + _0x48db9f = _0x48db9f.filter(_0x2aa90f => _0x2aa90f.awardSurplusQuantity > 0 && _0x39e04a >= _0x2aa90f.pointNum && _0x2aa90f.hasExchange === 0); + this.debug(_0x48db9f); + if (_0x48db9f.length === 0) return this.putMsg("无可兑换奖励"), this.exit(); + if (this.openCard === 0) await this.bindWithVender(); + for (let _0xa47e7a of _0x48db9f.reverse()) { + this.debug(_0xa47e7a); + await this.hdbExchange(_0xa47e7a.id); + } + return; + } + if (this.mode === "jinggeng") { + this.userId = this.userId || this.getQueryString(this.activityUrl, "userId"); + this.activityId = this.activityId || this.getQueryString(this.activityUrl, "actId"); + if (!this.userId || !this.activityId) return this.putMsg("参数错误"), this.stop(); + await this.setMixNick(); + let _0x46bc0d = await this.jinggengShopInfo(), + _0x4c313f = _0x46bc0d("#actType", "body").attr("value"); + if (["JD_GOODS", "JD_COUPON", "JD_POINTTOBUY"].includes(_0x4c313f)) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let _0x562c93 = parseInt(this.rule?.["match"](/(?<=每人可兑换)\d{1,2}/)[0] || "1"); + this.debug(_0x562c93); + for (let _0x33627c = 0; _0x33627c < _0x562c93; _0x33627c++) { + let _0x5130ee = await this.jinggengApi("postQlExchange"); + if (_0x5130ee && _0x5130ee.succ) { + let _0x3bad82 = _0x5130ee.msg ?? "{}", + _0x4b3730 = JSON.parse(_0x3bad82); + if (_0x4b3730?.["isSendSucc"]) { + let _0x12c62d = _0x4b3730?.["drawAwardDto"]?.["awardName"]; + this.putMsg(_0x4b3730?.["drawAwardDto"]?.["awardDenomination"] + " " + _0x12c62d); + _0x4b3730?.["drawAwardDto"]?.["awardType"] === "JD_GOODS" && (this.addressId = _0x4b3730?.["drawAwardDto"]?.["actLogId"], this.prizeName = _0x12c62d, await this.saveAddress()); + } + await this.sleep(2000, 3000); + continue; + } + this.putMsg(_0x5130ee?.["msg"] || "兑换失败"); + await this.wxStopSync(_0x5130ee?.["msg"]); + return; + } + return; + } + if (["10079"].includes(this.activityType)) { + await this.login(); + let _0x3f3457 = await this.taskGet("api/pointsExchange/activity"); + this.debug(_0x3f3457); + if (!_0x3f3457 || _0x3f3457.resp_code !== 0) return this.putMsg(_0x3f3457?.["resp_msg"] || "查询失败"), await this.wxStopSync(_0x3f3457?.["resp_msg"]); + let _0x15da66 = _0x3f3457.data.pointsExchangePrizeVos ?? []; + _0x15da66 = _0x15da66.filter(_0xf0643c => _0xf0643c.stock !== 0 && !_0x1c00c6.notPointDrawGiftNameList.some(_0x3cf8aa => _0xf0643c.prizeName.includes(_0x3cf8aa))); + if (_0x15da66.length === 0) return this.putMsg("垃圾或领完"), this.stop(); + _0x15da66 = _0x15da66.filter(_0x51fa03 => _0x51fa03.status === 1); + if (_0x15da66.length === 0) return this.putMsg("已兑换"), this.exit(); + let _0xab7f1b = _0x3f3457.data.myPoints; + if (_0xab7f1b === 0) return this.putMsg("无积分"); + _0x15da66 = _0x15da66.filter(_0x240cc5 => _0xab7f1b >= _0x240cc5.num); + if (_0x15da66.length === 0 || _0xab7f1b < _0x15da66[0].num) return this.putMsg("积分不足"); + if (["1005", "1006", "1002"].includes(this.joinCode)) { + await this.getShopOpenCardInfo(); + await this.bindWithVender(); + if (this.canNotOpenCard) return this.putMsg(this.joinDes); + await this.login(false); + } + for (let _0x432d2a of _0x15da66.reverse()) { + let _0x9c7b2 = await this.lzkjApi("api/pointsExchange/exchange", { + "prizeInfoId": _0x432d2a.prizeInfoId, + "status": 1 + }); + this.debug(_0x9c7b2); + if (_0x9c7b2 && _0x9c7b2.resp_code === 0) { + this.prizeName = _0x9c7b2.data?.["prizeName"]; + _0xab7f1b -= _0x432d2a.num; + _0x15da66 = _0x15da66.filter(_0x5183af => _0xab7f1b >= _0x5183af.num); + this.putMsg(this.prizeName); + this.addressId = _0x9c7b2.data?.["addressId"]; + _0x9c7b2.data?.["prizeType"] === 3 && (await this.saveAddress()); + return; + } + let _0x316c00 = _0x9c7b2?.["resp_msg"] || "兑换失败"; + this.putMsg(_0x316c00); + await this.wxStopSync(_0x316c00); + } + return; + } + if (!["pointExgBeans", "pointExgECard", "pointExgHb", "pointExgShiWu"].some(_0x346efb => this.activityUrl.includes(_0x346efb))) return this.putMsg("暂不支持该行活动,请联系作者"), this.stop(); + this.activityId = this.getQueryString(this.activityUrl, "giftId"); + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + if (this.index === 0) { + await this.getShopInfo(); + if (this.shopName && [26, 128, 129].includes(this.activityType) && _0x1c00c6.notPointDrawList.some(_0x2fcee9 => this.shopName.includes(_0x2fcee9))) { + this.putMsg("已屏蔽"); + this.stop(); + return; + } + } + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let _0x1913fd = await this.wxApi("mc/wxPointShop/getBuyerPoints", { + "venderId": this.venderId, + "buyerPin": this.secretPin + }); + this.debug(_0x1913fd); + let _0x266b2e = parseInt(_0x1913fd?.["data"]?.["grade"] ?? 1), + _0xc21407 = parseInt(_0x1913fd?.["data"]?.["buyerPoints"] ?? 0); + if (_0xc21407 <= 0) { + this.putMsg("无积分"); + return; + } + if (_0x266b2e === 1 && this.needPoint && this.needPoint > _0xc21407) return this.putMsg("积分不足"); + let _0x36d595, _0x1d46f5; + if (this.activityUrl.includes("pointExgECard")) _0x36d595 = "mc/equity/selectEquityForC", _0x1d46f5 = { + "giftId": this.activityId, + "venderId": this.venderId, + "buyerPin": this.secretPin + };else { + if (this.activityUrl.includes("pointExgHb")) { + _0x36d595 = "mc/hb/selectHbForC"; + _0x1d46f5 = { + "giftId": this.activityId, + "venderId": this.venderId, + "buyerPin": this.secretPin + }; + } else { + if (this.activityUrl.includes("pointExgShiWu")) { + for (let _0x316321 of _0x1c00c6.notPointDrawGiftNameList) { + _0x56fba7.activity.shopName.includes(_0x316321) && (this.putMsg("已屏蔽"), this.stop()); + } + _0x36d595 = "mc/shiWu/selectShiWu"; + _0x1d46f5 = { + "giftId": this.activityId, + "venderId": this.venderId + }; + } else { + if (this.activityUrl.includes("pointExgBeans")) { + if (_0x56fba7.activity.shopName.includes("同仁堂")) { + this.putMsg("已屏蔽"); + this.stop(); + return; + } + _0x36d595 = "mc/beans/selectBeansForC"; + _0x1d46f5 = { + "giftId": this.activityId, + "venderId": this.venderId, + "buyerPin": this.secretPin, + "beansLevel": _0x266b2e + }; + } else { + return this.putMsg("暂不支持该行活动,请联系作者"), this.stop(); + } + } + } + } + let _0x11c1cf = await this.wxApi(_0x36d595, _0x1d46f5); + this.debug(_0x11c1cf); + if (!_0x11c1cf || !_0x11c1cf.result) { + return this.putMsg(_0x11c1cf?.["errorMessage"] || "查询失败"), await this.wxStopSync(_0x11c1cf?.["errorMessage"]); + } + let _0x15ad11, _0x2cd6a8, _0x2c380a, _0x5f192e, _0x54ce75, _0x3f3e0e, _0x3c3fce, _0x2dcb42; + if (this.activityUrl.includes("pointExgShiWu")) { + _0x15ad11 = _0x11c1cf.data?.["mcGiftBaseInfo"]?.["actrule"]; + _0x2cd6a8 = _0x11c1cf.data?.["mcGiftBaseInfo"]?.["upTime"]; + _0x2c380a = _0x11c1cf.data?.["mcGiftBaseInfo"]?.["downTime"]; + _0x5f192e = _0x11c1cf.data?.["mcGiftBaseInfo"]?.["giftName"]; + _0x54ce75 = _0x11c1cf.data?.["mcShiWu"]; + _0x3f3e0e = _0x11c1cf.data?.["mcGiftBaseInfo"]?.["num"] === _0x11c1cf.data?.["mcGiftBaseInfo"]?.["usedNum"]; + this.needPoint = _0x11c1cf.data?.["mcGiftBaseInfo"]["point" + _0x266b2e]; + } else { + _0x15ad11 = _0x11c1cf.data?.["actrule"]; + _0x2cd6a8 = _0x11c1cf.data?.["upTime"]; + _0x2c380a = _0x11c1cf.data?.["downTime"]; + _0x5f192e = _0x11c1cf.data?.["giftName"]; + _0x3c3fce = _0x11c1cf.data?.["exgStyle"] ?? 0; + let { + oneLevel = 0, + twoLevel = 0, + threeLevel = 0 + } = _0x11c1cf.data; + _0x2dcb42 = [oneLevel, threeLevel, twoLevel].filter(_0x234363 => _0x234363 !== 0 && _0x234363); + this.needPoint = _0x11c1cf.data["point" + _0x266b2e]; + _0x3f3e0e = _0x11c1cf.data?.["num"] === _0x11c1cf.data?.["usedNum"]; + _0x11c1cf.data?.["beansLevelCount"] > 0 && (this.needPoint = _0x11c1cf.data["point" + _0x266b2e] * _0x11c1cf.data?.["beansLevelCount"]); + } + _0x56fba7.activity.startTime = _0x2cd6a8; + _0x56fba7.activity.endTime = _0x2c380a; + if (_0x2cd6a8 && _0x2cd6a8 > this.timestamp()) { + return this.putMsg("未开始"), this.stop(); + } + if (_0x2c380a && _0x2c380a < this.timestamp()) { + return this.putMsg("已结束"), await this.writeLongCacheByStop(), this.stop(); + } + if (!this.needPoint) return this.putMsg("等级不符"), this.exit(); + this.debug("needPoint", this.needPoint); + if (_0x3f3e0e) return this.putMsg("已抢光,明日再来"), this.stop(); + if (this.needPoint > _0xc21407) return this.putMsg("积分:" + _0xc21407 + ",需要:" + this.needPoint); + for (let _0x290702 of _0x1c00c6.notPointDrawGiftNameList) { + if (_0x5f192e.includes(_0x290702)) { + this.putMsg("已屏蔽"); + this.stop(); + return; + } + } + if (this.activityUrl.includes("pointExgHb")) { + let _0x2999c5 = await this.wxApi("mc/wxPointShop/exgHB", { + "giftId": this.activityId, + "venderId": this.venderId, + "buyerPin": this.secretPin + }); + return this.putMsg(_0x2999c5?.["errorMessage"] || "兑换成功"); + } else { + if (this.activityUrl.includes("pointExgECard")) { + let _0x3bdedb = await this.wxApi("mc/wxPointShop/exgECard", { + "giftId": this.activityId, + "venderId": this.venderId, + "buyerPin": this.secretPin, + "buyerNick": this.nickname + }); + return this.putMsg(_0x3bdedb?.["errorMessage"] || "兑换成功"); + } else { + if (this.activityUrl.includes("pointExgShiWu")) { + let _0x5520d9 = await this.wxApi("mc/wxPointShop/selectAddressList", { + "venderId": this.venderId, + "buyerPin": this.secretPin + }); + if (_0x5520d9 && _0x5520d9.ok && _0x5520d9.count > 0) { + for (let _0x5b1d87 of _0x5520d9.data) {} + } + this.getAddress(); + if (!this.address) { + this.putMsg("未配置地址或所有地址已达使用上限,退出填地址"); + return; + } + this.log("使用地址", this.address); + let _0x4b0cff = await this.wxApi("mc/wxPointShop/saveAddress", { + "venderId": this.venderId, + "buyerPin": this.secretPin, + "address": this.address.address, + "city": this.address.city, + "county": this.address.county, + "province": this.address.province, + "receiver": this.address.receiver, + "receiverPhone": this.address.phone + }); + if (!_0x4b0cff || !_0x4b0cff.result) return this.putMsg(_0x4b0cff?.["errorMessage"] || "保存地址失败"); + let _0xf1ab5d = _0x4b0cff.data.addressId; + this.putMsg("已填地址"); + let _0x50c6f3 = await this.wxApi("mc/wxPointShop/exgShiWu", { + "buyerPin": this.secretPin, + "buyerNick": this.nickname, + "giftId": this.activityId, + "venderId": this.venderId, + "addressId": _0xf1ab5d + }); + if (_0x50c6f3 && _0x50c6f3.result) { + let _0x1c4569 = this.formatDate(Date.now(), "yyyy-MM-dd HH:mm:ss") + "," + _0x5f192e + "," + this.pin + "," + this.address?.["phone"] + "," + this.address?.["address"] + "," + _0x517e36.envInfo.name + "," + (this.shopId ?? this.venderId) + "," + this.activityUrl + "\n"; + return this.appendFileSync("", "gifts.csv", _0x1c4569), this.putMsg("兑换成功"); + } + let _0x3f798f = _0x50c6f3?.["errorMessage"] || "兑换失败"; + this.putMsg(_0x3f798f); + await this.wxStopSync(_0x3f798f); + return; + } + } + } + let _0x29e1ee = parseInt(_0xc21407 / _0x11c1cf.data["point" + _0x266b2e]); + if (_0x11c1cf.data?.["canExgByPeopDay"] && _0x29e1ee > _0x11c1cf.data?.["canExgByPeopDay"]) _0x29e1ee = _0x11c1cf.data?.["canExgByPeopDay"]; + let _0xec79bb = _0x11c1cf.data?.["beansLevelCount"]; + if (_0x29e1ee < _0xec79bb) { + return this.putMsg("积分不足"); + } + _0x29e1ee = _0xec79bb === 0 ? _0x29e1ee : _0xec79bb; + if (_0x3c3fce === 1) { + _0x29e1ee = _0x2dcb42?.["filter"](_0x2149ab => _0xc21407 >= _0x2149ab * _0x11c1cf.data["point" + _0x266b2e])?.["sort"]((_0x200736, _0x58b29b) => _0x58b29b - _0x200736)?.[0] ?? 0; + } + this.debug(_0x29e1ee); + if (_0x29e1ee <= 0) return this.putMsg("积分不足"); + let _0x5d9b6a = await this.wxApi("mc/wxPointShop/exgBeans", { + "buyerPin": this.secretPin, + "buyerNick": this.nickname, + "giftId": this.activityId, + "venderId": this.venderId, + "beansLevel": _0x266b2e, + "exgBeanNum": _0x29e1ee + }); + if (_0x5d9b6a && _0x5d9b6a.result) return this.putMsg(_0x29e1ee + "京豆"); + let _0x52ce6d = _0x5d9b6a?.["errorMessage"] || "兑换失败"; + this.putMsg(_0x52ce6d); + await this.wxStopSync(_0x52ce6d); + } + } + _0x517e36.activity = { + "activityUrl": activityUrl + }; + _0x517e36.TaskClass = _0x20828e; + _0x517e36.run({ + "whitelist": ["1-20000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_secondDraw.js b/jd_wx_secondDraw.js new file mode 100644 index 0000000..aa350ea --- /dev/null +++ b/jd_wx_secondDraw.js @@ -0,0 +1,196 @@ +/* +读秒手速beta v1.0.0 + +https://lzkj-isv.isvjcloud.com/wxSecond/activity/c8943bae199447c6911d488be4b453c4?activityId=c8943bae199447c6911d488be4b453c4 + +export B_WX_SECOND_DRAW_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("读秒手速beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_SECOND_DRAW_URL); + +mode && (activityUrl = "https://lzkj-isv.isvjcloud.com/wxSecond/activity/c8943bae199447c6911d488be4b453c4?activityId=c8943bae199447c6911d488be4b453c4"); +const { + RunMode: lIIlIIl, + UserMode: IIlI1ill +} = require("./bear"); +lIIlIIl.envInfo = { + "name": "读秒手速beta", + "runName": "jd_wx_secondDraw", + "version": "1.0.0" +}; +class IIlIiiii extends IIlI1ill { + constructor(Il111i1, ii1i1lll) { + super(Il111i1, ii1i1lll); + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.index === 0 && (await this.getShopInfo()); + let lIl1lili = await this.wxApi("wxSecond/getData", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(lIl1lili); + if (!lIl1lili || !lIl1lili.result) { + let ilIlIli = lIl1lili?.["errorMessage"] || "获取数据失败"; + this.putMsg(ilIlIli); + this.wxStop(ilIlIli); + return; + } + let { + score: llil1l, + secondActive: lllIIiI1, + brushBane: liiiI11, + bid: l11lilI, + uuid: lIlI1iIi, + prizeList: lIIli + } = this.activityInfo, + IIlI111l = lllIIiI1?.["startTime"] || 0, + l1llll1I = lllIIiI1?.["endTime"] || 0, + ilIil1l1 = lllIIiI1?.["targetTime"] || 0; + IIlI1ill.activity.startTime = IIlI111l; + IIlI1ill.activity.endTime = l1llll1I; + if (IIlI111l && IIlI111l > this.timestamp()) { + this.log("活动未开始"); + this.wxStop(); + return; + } + if (l1llll1I && l1llll1I < this.timestamp()) { + this.log("活动已结束"); + this.wxStop(); + return; + } + lIIli = lIIli?.["filter"](I11I1l1 => [6, 7, 9, 13, 14, 15, 16].includes(I11I1l1.type)) ?? []; + if (lIIli.length === 0) { + this.log("垃圾或领完"); + this.wxStop(); + return; + } + let iIlIlI1l = await this.wxApi("wxSecond/getTaskDay", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": lIlI1iIi + }); + if (iIlIlI1l && iIlIlI1l.result) { + let lI1iii1I = iIlIlI1l.data || []; + for (let I1IliIIi of lI1iii1I) { + let ii1i1IIi = I1IliIIi.taskType; + for (let l1lil111 = 0; l1lil111 < I1IliIIi.dayMaxNumber && I1IliIIi.finishNumber === 0; l1lil111++) { + if ([2, 5].includes(ii1i1IIi)) { + let iii1liIl = I1IliIIi.activityTaskGoods.slice(l1lil111 * I1IliIIi.commodity, l1lil111 * I1IliIIi.commodity + I1IliIIi.commodity).filter(IiiiiIII => IiiiiIII.complete === 0); + for (let iiIliIi1 of iii1liIl) { + let l11l1ll1 = await this.wxApi("wxSecond/finishTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": lIlI1iIi, + "taskType": ii1i1IIi, + "skuId": iiIliIi1.skuId + }); + this.debug(l11l1ll1); + getTaskGoods && getTaskGoods.result && (llil1l += l11l1ll1.data?.["score"] ?? 0); + await this.sleep(500); + } + await this.sleep(500); + } + } + await this.sleep(500); + } + } + let ilIill1I = await this.wxApi("wxSecond/getTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": lIlI1iIi + }); + if (ilIill1I && ilIill1I.result) { + let iIllIll = ilIill1I.data || []; + for (let IlI11Il of iIllIll) { + let Iill1lI1 = IlI11Il.taskType; + if ([3].includes(Iill1lI1)) for (let iII111li = 0; iII111li < IlI11Il.dayMaxNumber && IlI11Il.finishNumber === 0; iII111li++) { + let iIiIiiI1 = await this.wxApi("wxSecond/finishTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": lIlI1iIi, + "taskType": Iill1lI1, + "skuId": good.skuId + }); + this.debug(iIiIiiI1); + iIiIiiI1 && iIiIiiI1.result && (llil1l += iIiIiiI1.data?.["score"] ?? 0); + await this.sleep(500); + } + if ([12].includes(Iill1lI1)) { + for (let i1lilli1 = 0; i1lilli1 < IlI11Il.dayMaxNumber && IlI11Il.finishNumber === 0; i1lilli1++) { + let IlIi1l1 = await this.wxApi("wxSecond/finishTask", { + "activityId": this.activityId, + "pin": this.secretPin, + "uuid": lIlI1iIi, + "taskType": Iill1lI1, + "skuId": "" + }); + this.debug(IlIi1l1); + IlIi1l1 && IlIi1l1.result && (llil1l += IlIi1l1.data?.["score"] ?? 0); + await this.sleep(500); + } + } + await this.sleep(500); + } + } + if (llil1l === 0) { + this.log("无次数"); + return; + } + llil1l = Math.min(llil1l, 7); + while (llil1l-- > 0) { + let i1llIII1 = await this.wxApi("wxSecond/checkAuth", { + "activityId": this.activityId, + "pin": this.secretPin, + "brushBane": liiiI11, + "bid": l11lilI + }); + this.debug(i1llIII1); + if (!i1llIII1 || !i1llIII1.result) { + let iliI11i1 = i1llIII1?.["errorMessage"] || "获取数据失败"; + this.putMsg(iliI11i1); + this.wxStop(iliI11i1); + return; + } + let lli1I11I = i1llIII1.data?.["brushResult"], + ii11IlI1 = await this.wxApi("wxSecond/start", { + "activityId": this.activityId, + "pin": this.secretPin, + "brushBane": liiiI11, + "bid": l11lilI, + "uuid": lIlI1iIi, + "seconds": ilIil1l1, + "brushResult": lli1I11I + }); + this.debug(ii11IlI1); + if (ii11IlI1 && ii11IlI1.result) { + this.putMsg(ii11IlI1.data?.["draw"]?.["name"] || "空气"); + if ((ii11IlI1.data?.["type"] === 7 || ii11IlI1.data?.["drawInfoType"] === 7) && ii11IlI1.data.needWriteAddress === "y") { + this.addressId = ii11IlI1.data.addressId; + this.prizeName = ii11IlI1.data?.["draw"]?.["name"]; + await this.addAddress(); + } + continue; + } + let Iiil1lIi = ii11IlI1?.["errorMessage"] || "游戏失败"; + this.putMsg(Iiil1lIi); + this.wxStop(Iiil1lIi); + } + } +} +lIIlIIl.activity = { + "activityUrl": activityUrl +}; +lIIlIIl.TaskClass = IIlIiiii; +lIIlIIl.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/jd_wx_shopGift.js b/jd_wx_shopGift.js new file mode 100644 index 0000000..aa70f54 --- /dev/null +++ b/jd_wx_shopGift.js @@ -0,0 +1,169 @@ +/* +无线关注beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/wxShopGift/activity?activityId=8c0c442d784745908c61ffd1561e80a7 +https://lzkj-isv.isvjd.com/wxShopGift/activity?activityId=48c48940394147bc9aecfc313970952d +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10058&templateId=7498bc9d-0be3-480d-ae9d-59b8a074566a&activityId=1735146557846773761&nodeId=101001&giftType=1&isGiftTrue=true&prd=cjwx +https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/newShopGiftBag.html?activityType=JRCX_183&activityId=1000337645 +https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/shopGiftBag.html?activityType=JRCX_44&activityId=1000118676 +https://txzj-isv.isvjcloud.com/shop_gift?code=OWt0dHBFaENNdGN3dWc0bmFB + +export B_WX_SHOP_GIFT_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("无线关注beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_SHOP_GIFT_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjd.com/wxShopGift/activity?activityId=48c48940394147bc9aecfc313970952d"; + activityUrl = "https://lzkj-isv.isvjd.com/wxShopGift/activity?activityId=6d1a4409036b462e915e3a29c5c97c01"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10058&templateId=7498bc9d-0be3-480d-ae9d-59b8a074566a&activityId=1735146557846773761&nodeId=101001&giftType=1&isGiftTrue=true&prd=cjwx"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/newShopGiftBag.html?activityType=JRCX_183&activityId=1000337645"; + activityUrl = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/shopGiftBag.html?activityType=JRCX_44&activityId=1000118676"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10058&templateId=7498bc9d-0be3-480d-ae9d-59b8a074566a&activityId=1791015101848346625&nodeId=101001&giftType=1&isGiftTrue=true&prd=cjwx"; + activityUrl = "https://txzj-isv.isvjcloud.com/shop_gift?code=b0U0MjlrRkhNNEV3dWc4aWJn"; + activityUrl = "https://txzj-isv.isvjcloud.com/shop_gift?code=OWt0dHBFaENNdGN3dWc0bmFB"; + } + const { + RunMode: iII1Iil1, + UserMode: IIIlIi11 + } = require("./bear"); + iII1Iil1.envInfo = { + "name": "无线关注beta", + "runName": "jd_wx_shopGift", + "version": "2.0.0" + }; + class Ii1iliII extends IIIlIi11 { + constructor(Ii1illII, llli111i) { + super(Ii1illII, llli111i); + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "txzj") { + if (!this.activityId) return this.putMsg("活动链接错误"), this.stop(); + let IliIi1i = await this.taskPost("front/jd_store_user_info", { + "token": this.isvToken + }); + if (!IliIi1i || IliIi1i.code !== "success") { + let II11Il1 = IliIi1i.msg || "获取用户信息失败"; + return this.putMsg(II11Il1), this.wxStop(II11Il1); + } + let i111lIl = await this.taskGet(this.activityUrl), + I1ill11l = this.textToHtml(i111lIl), + l1III11l = I1ill11l(".animated").attr("data-code"); + if (!l1III11l) return this.putMsg("活动已结束"), this.stop(); + let ll11liiI = await this.taskPost("shop_gift/send_prize", { + "code": l1III11l + }); + this.debug(ll11liiI); + if (ll11liiI && ll11liiI.code === "success") { + this.putMsg("领取成功"); + return; + } + let IlllI1l = ll11liiI?.["msg"] || "领取失败"; + this.putMsg(IlllI1l); + this.wxStop(IlllI1l); + return; + } + await this.getDefenseUrls(); + if (this.mode === "gzsl") { + let l1iiIlIl = await this.gzslApi("getShopGiftActivity", { + "venderId": this.activityId + }); + if (l1iiIlIl?.["status"] != "1") { + let i1l11Il = l1iiIlIl?.["msg"] || "获取礼包信息失败"; + this.putMsg(i1l11Il); + this.wxStop(i1l11Il); + return; + } + let iilIiiii = l1iiIlIl?.["activity"] || {}; + this.shopId = iilIiiii.shopId; + this.venderId = iilIiiii.venderId; + this.rule = iilIiiii.rule; + this.shopName = iilIiiii.detail; + let ll1iI1iI = iilIiiii.prizes || [], + { + startTime: liliii1I, + endTime: iIiIIiiI + } = iilIiiii; + IIIlIi11.activity.shopId = this.shopId; + IIIlIi11.activity.venderId = this.shopId; + IIIlIi11.activity.shopName = this.shopName; + IIIlIi11.activity.startTime = liliii1I; + IIIlIi11.activity.endTime = iIiIIiiI; + if (liliii1I && liliii1I > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + if (iIiIIiiI && iIiIIiiI < this.timestamp()) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + ll1iI1iI = ll1iI1iI.filter(i1i1iI1I => !["2"].includes(i1i1iI1I.source)); + if (ll1iI1iI.length === 0) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + let II11il11 = await this.gzslApi("getShopGiftPrize", {}, true); + II11il11?.["status"] === "1" ? this.putMsg("领取成功") : (this.putMsg(II11il11?.["msg"] || "领取失败"), this.wxStop(II11il11?.["msg"])); + return; + } + if (["10058"].includes(this.activityType)) { + await this.login(); + let III11l1I = await this.lzkjApi("api/shopGift/drawShopGift", { + "flag": true, + "memberUser": 0, + "name": "", + "visitor": "", + "position": "" + }); + this.debug(III11l1I); + if (III11l1I && III11l1I.resp_code === 0) { + this.putMsg("领取成功"); + return; + } + let ll1i1I1i = III11l1I?.["resp_msg"] || "领取失败"; + this.putMsg(ll1i1I1i); + this.wxStop(ll1i1I1i); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let i111ilIl = await this.activityContent({ + "buyerPin": this.secretPin + }); + if (!i111ilIl?.["result"] || !i111ilIl?.["data"]) { + this.putMsg(i111ilIl?.["errorMessage"]); + return; + } + let li1ll1Il = await this.wxApi("wxShopGift/draw", { + "activityId": this.activityId, + "buyerPin": this.secretPin, + "hasFollow": true + }); + this.debug(li1ll1Il); + if (li1ll1Il && li1ll1Il.result) this.putMsg("领取成功");else { + let Ii1iIlli = li1ll1Il?.["errorMessage"]; + this.putMsg(Ii1iIlli); + this.wxStop(Ii1iIlli); + return; + } + } + } + iII1Iil1.activity = { + "activityUrl": activityUrl + }; + iII1Iil1.TaskClass = Ii1iliII; + iII1Iil1.run({ + "whitelist": ["1-2000"], + "main_thread": 3 + }); \ No newline at end of file diff --git a/jd_wx_sign.js b/jd_wx_sign.js new file mode 100644 index 0000000..5b0d201 --- /dev/null +++ b/jd_wx_sign.js @@ -0,0 +1,248 @@ +/* +签到有礼beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac +https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?activityId=1752260456689242113&shopId=1000001706 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10002&activityId=1764492473030377474&templateId=20201228083300lxqdsl011&nodeId=101001003&prd=cjwx +https://jinggeng-rc.isvjcloud.com/ql/front/showSign?id=9e80802c8dc9f04d018df48f286509c1&user_id=10028198 +https://txzj-isv.isvjcloud.com/sign_in/home?a=UHpDWkVHNFhlTzhGZ2MrYUV3 + +export B_WX_SIGN_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("签到有礼beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.B_WX_SIGN_URL); + +if (mode) { + activityUrl = "https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?activityId=1763116670225666049&shopId=10034889"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac"; + activityUrl = "https://jinggeng-rc.isvjcloud.com/ql/front/showSign?id=9e80802c8dc9f04d018df48f286509c1&user_id=10028198"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10002&activityId=1764492473030377474&templateId=20201228083300lxqdsl011&nodeId=101001003&prd=cjwx"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10023&activityId=1752867173633544194&templateId=2023110802rlqd&nodeId=101001&prd=cjwx"; + activityUrl = "https://txzj-isv.isvjcloud.com/sign_in/home?a=UHpDWkVHNFhlTzhGZ2MrYUV3"; + activityUrl = "https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId=f6bfaa803f59453b897876ccccd08cef&venderId=1000084244&adsource=tg_storePage"; + activityUrl = "https://txzj-isv.isvjcloud.com/sign_in/home?a=TUdPWlJXOFFlK29GZ2MrZUV3"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10040&activityId=1772829299506323457&templateId=20210518190900qrqd011&nodeId=101001&prd=cjwx"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/SignIn/SignIn?id=2085faf335324522080865dbc20ba790&userId=1000007503"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10023&templateId=20210518190900rlqd011&activityId=1791052003950125057"; + activityUrl = "https://jingyun-rc.isvjcloud.com/sign_h5/pages/BudweiserSignIn/SignIn?id=0c9992da962de13b2f205b1000dac90d&userId=1000002552"; + activityUrl = "https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=b3a4db52e1dc43598b71c946bdcae9bd"; +} +const { + RunMode: I, + UserMode: J +} = require("./bear"); +I.envInfo = { + "name": "签到有礼beta", + "runName": "jd_wx_sign", + "version": "2.0.0" +}; +let K = process.env.B_WX_SHOP_SIGN_BEAN_GOODS ? process.env.B_WX_SHOP_SIGN_BEAN_GOODS : false, + M = ["10001", "10002", "10003", "10004", "10023", "10040"]; +process.env.B_WX_SIGN_ACTIVITY_TYPES ? process.env.B_WX_SIGN_ACTIVITY_TYPES.split(/[@,&|]/).forEach(e => M.push(e)) : ""; +class N extends J { + constructor(e, f) { + super(e, f); + } + async ["v2Sign"](e = true) { + let g = await this.v2Api("api/" + this.activityType + "/sign"); + this.debug(g); + if (g && g.code === 200) this.putMsg(g.data?.["prizeName"] || "签到成功");else { + if (g?.["message"]["includes"]("不是店铺会员") && e) { + await this.bindWithVender(); + await this.sign(false); + } + } + } + async ["signPost"](e = true) { + let g = await this.hdbApi(this.hdbPrefix ? this.hdbPrefix + "front/cusActivity/cusSignPost" : "signPost"); + if (g && g.succ) { + g?.["result"]?.["awardRes"]?.["needSend"] && this.putMsg(g.result?.["awardRes"]?.["dmActivityLog"]?.["awardName"] || "空气"); + let j = g.result?.["signLog"]?.["continueCount"]; + this.putMsg("已连续签到" + j + "天"); + return; + } + let h = g?.["message"]; + if (e && h?.["includes"]("关注店铺") && (await this.follow())) { + return await this.signPost(false); + } + this.putMsg(h); + this.wxStop(h); + return; + } + async ["userTask"]() { + await this.isvObfuscator(); + if (this.mode === "txzj") { + if (!this.activityId) return this.putMsg("活动链接错误"), this.stop(); + let h = await this.taskPost("front/jd_store_user_info", { + "token": this.isvToken + }); + if (!h || h.code !== "success") { + let k = h.msg || "获取用户信息失败"; + return this.putMsg(k), this.wxStop(k); + } + let i = await this.taskPost("sign_in/receive_prize", { + "pid": this.activityId + }); + this.debug(i); + if (i && i.code === "success") { + this.putMsg("签到成功"); + if (i?.["data"]?.["prize_title"]) switch (i?.["data"]?.["prize_title"]["type"]) { + case "coupon": + this.putMsg("优惠券"); + break; + case "bean": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "京豆"); + break; + case "integral": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "积分"); + break; + case "goods": + this.putMsg("" + i.data.prize_title.prize_name); + break; + default: + this.putMsg(JSON.stringify(i?.["data"]?.["prize_title"])); + } + return; + } + let j = i?.["msg"] || "签到失败"; + this.putMsg(j); + this.wxStop(j); + return; + } + if (this.mode === "v2") { + await this.login(); + await this.v2Sign(); + let m = await this.v2Api("api/" + this.activityType + "/calendar"); + this.debug(m); + if (m && m.code === 200) { + let n = m.data.continuousSignDays; + this.putMsg("已连续签到" + n + "天"); + } + return; + } + if (this.mode === "jinggeng") { + this.userId = this.userId || this.getQueryString(this.activityUrl, "userId"); + this.activityId = this.activityId || this.getQueryString(this.activityUrl, "actId"); + await this.setMixNick(); + await this.jinggengShopInfo(); + await this.taskPost("front/followShop", { + "userId": this.userId + }); + let p = await this.jinggengApi("saveSignIn"); + this.debug(p); + if (p && p.succ) { + if (p?.["msg"]?.["includes"]("签到成功但不需要发奖")) this.putMsg("签到成功");else { + let s = JSON.parse(p.msg); + s?.["isSendSucc"] ? this.putMsg(s?.["actLogDto"]?.["remark"]) : this.putMsg("空气"); + } + return; + } + let q = p?.["msg"] || "签到失败"; + this.putMsg(q); + this.wxStop(q); + return; + } + if (this.mode === "hdb") { + return this.hdbPrefix = "", this.activityUrl?.["includes"]("BudweiserSignIn") && (this.hdbEncript = true, this.hdbLoginPath = "sign_java/front/fans/login", this.hdbPrefix = "sign_java/"), await this.login(), await this.reportPVUV(this.hdbPrefix + "front/activity/reportPVUV"), await this.loadFrontAct(this.hdbPrefix + "front/activity/loadFrontAct"), await this.signPost(); + } + await this.getDefenseUrls(); + if (M.includes(this.activityType)) { + await this.login(); + let v = ["10001", "10002", "10003", "10004"].includes(this.activityType) ? "api/task/sign/add" : "api/task/daySign/getSignClick", + w = await this.lzkjApi(v); + this.debug(w); + if (w && w.resp_code === 0) { + this.putMsg("签到成功"); + let y = w?.["data"]?.["prizeName"]; + this.putMsg(y); + w.data && w.data?.["prizeName"] && w.data?.["prizeType"] === 3 && w.data?.["addressId"] && w.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = w.data.addressId, this.prizeName = w.data?.["prizeName"], await this.saveAddress()); + return; + } + let x = w?.["resp_msg"] || "签到失败"; + this.putMsg(x); + this.wxStop(x); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + this.isSevenDay = this.activityUrl?.["includes"]("sevenDay"); + this.isCj = this.activityUrl?.["includes"]("//cjhy"); + if (this.index === 0) { + let z = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/getActivity" : "sign/wx/getActivity", { + "actId": this.activityId, + "venderId": this.venderId + }); + this.debug(z); + if (!z || !z.isOk) { + let A = z?.["msg"] || "活动已结束"; + this.putMsg(A); + this.wxStop(A); + } else { + let B = z?.["act"]?.["startTime"], + C = z?.["act"]?.["endTime"]; + J.activity.startTime = B; + J.activity.endTime = C; + if (B && B > this.timestamp()) { + return this.putMsg("活动未开始"), this.stop(); + } + if (C && C < this.timestamp()) return this.putMsg("活动已结束"), this.stop(); + let D = []; + if (this.isSevenDay) { + for (let Q of z?.["act"]?.["giftBean"]?.["giftConditions"] || []) { + Q.gift && (Q.gift.dayNum = Q.dayNum, D.push(Q.gift)); + } + } else { + z?.["act"]?.["wxSignActivityGiftBean"]?.["hasGiftEveryDay"] === "y" && D.push(z?.["act"]?.["wxSignActivityGiftBean"]?.["gift"]); + if (z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"]?.["length"] > 0) { + for (let R of z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"] || []) { + R.gift && (R.gift.dayNum = R.dayNum, D.push(R.gift)); + } + } + } + D = D.filter(T => ["6", "7", "9", "13", "14", "15", "16"].includes(T.giftType) && !T.insufficient); + if (D.length === 0) return this.putMsg("垃圾或领完"), this.stop(); + if (K && D.filter(T => ["6", "7", "13", "14", "15", "16"].includes(T.giftType)).length === 0) return this.putMsg("垃圾或领完"), this.stop(); + } + } + this.debug(this.isSevenDay ? "sign/sevenDay/wx/signUp" : "sign/wx/signUp"); + let f = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/signUp" : "sign/wx/signUp", { + "actId": this.activityId, + "pin": this.secretPin + }); + this.debug(f); + if (f && f.isOk) { + this.putMsg("签到成功"); + let U = this.isSevenDay ? f.signResult?.["gift"] : f.gift, + V = ""; + if (U) { + let W = this.isSevenDay ? f.signResult?.["gift"]?.["giftName"] : f?.["gift"]?.["giftName"], + X = this.isCj ? f?.["signResult"]?.["send"] ? "" : "(已发完)" : f?.["isSend"] ? "" : "(已发完)"; + V = "" + W + X; + this.addressId = f?.["addressId"]; + f?.["needWriteAddress"] === "y" && this.addressId && (this.prizeName = W, await this.saveAddress()); + } + this.putMsg(V); + return; + } + let g = f?.["msg"] || f?.["errMsg"] || "签到失败"; + this.putMsg(g); + this.wxStop(g); + } +} +I.activity = { + "activityUrl": activityUrl +}; +I.TaskClass = N; +I.run({ + "whitelist": ["1-100000"], + "main_thread": 5, + "wxProxyCheck": 2 +}); \ No newline at end of file diff --git a/jd_wx_team.js b/jd_wx_team.js new file mode 100644 index 0000000..d3497d5 --- /dev/null +++ b/jd_wx_team.js @@ -0,0 +1,541 @@ +/* +组队瓜分beta v2.0.1 + +https://cjhy-isv.isvjcloud.com/wxTeam/activity?activityId=6d08fc8fad484372a99351bcf60e87ac +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&templateId=2021062190900zdgf081&activityId=1717808855827406850&nodeId=101001&prd=cjwx +https://hdb-isv.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=5f1c0796be4f651574e9e0f5a7e8f8af&userId=182482 +https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=ef8d69fd0410fe9da216f1c964c54c3f&userId=13082769 +https://jinggeng-isv.isvjcloud.com/ql/front/showPartition?id=9e80802f8a49b510018a4a5422db2b78&user_id=172541 + +export B_WX_TEAM_URL="" +export B_TEAM_LEADER_NUM="10" //车头数量 默认10 + +cron: 7 7 7 7 7 * +const $ = new Env("组队瓜分beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_TEAM_URL); + +if (mode) { + activityUrl = "https://cjhy-isv.isvjcloud.com/wxTeam/activity?activityId=6d08fc8fad484372a99351bcf60e87ac"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&templateId=2021062190900zdgf081&activityId=1717808855827406850&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=54e4903a3bfc4e10a6ecdeaa58abaed1"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=ef8d69fd0410fe9da216f1c964c54c3f&userId=13082769"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=b44c5677f7363015af66dea0a932dd4f&userId=1000451545"; + activityUrl = "https://hdb-isv.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=5f1c0796be4f651574e9e0f5a7e8f8af&userId=182482"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/showPartition?id=9e80802f8a49b510018a4a5422db2b78&user_id=172541"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/?activityType=10033&templateId=2021062190900zdgf081&activityId=1730058154674954241&nodeId=101001&prd=cjwx&shareuserid4minipg=BbrGRKytrjDMjC1fQeEoy2pCfN5ZmfvMwbWBLt73u98ENlAanVdw4/1A%207yG9wzk&shopid=1000102709&shopid=1000102709&shopid=1000102709&shopid=1000102709&shopid=1000102709&shopid=1000102709&shopid=1000102709&=&=&=&=&=&&shareUserId=1730262436920238081&shopid=1000102709"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=4641a455f3611a88d3538d86f403e317&userId=13082769"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=31a27ba5e17344e2a35f9d1eb9a8a826"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=8827e30a920a41119f5d07f55a7e1060"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&templateId=2021062190900zdgf081&activityId=1744920180164960258&prd=cjwx"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=34ccb6e412f39d0e620012efef471549&userId=61627"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=db8e1dee18da0e3a784873fa62f579a8&userId=13082769&teamId=db8e1dee18da0e3a784873fa62f579a886"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=6fb5fd5ab88e4c87be19ae8571052957"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=982597cea4ec4ea1997f7c69e5f7143e"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v1/index?activityType=10033&activityId=1776856935890481154&templateId=2021062190900zdgf08&nodeId=101001&prd=crm"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=d9e4888b159f560683efa86734d8a0b3&userId=1000007503&actForm=single&teamId=d9e4888b159f560683efa86734d8a0b31218"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&templateId=2021062190900zdgf081&activityId=1782628595081019394&nodeId=101001&prd=cjwx"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=f47d2818bc8140d181844044f2aeb1d5"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=644a01191a234c729066967c9cfb9877"; + activityUrl = "https://cjhydz-isv.isvjcloud.com/wxTeam/activity?activityId=434e32054d3d4744a9caee80ffa70cce"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&activityId=1796452463138701313&templateId=2021062190900zdgf081&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&templateId=10202401041003302zdgfjp&activityId=1798545988361469954&nodeId=101001&prd=cjwx"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10033&activityId=1789853943779532801&templateId=2021062190900zdgf081&nodeId=101001&prd=cjwx"; + activityUrl = "https://jinggeng-isv.isvjcloud.com/ql/front/showPartition?id=9e808086900394930190064ac05e41f7&user_id=1000003065"; + activityUrl = "https://jingyun-rc.isvjcloud.com/h5/pages/partitionTeam/partitionTeam?id=ce4e9365871c0fd4ac075f00f1a01f69&userId=1000007503&actForm=single&teamId=ce4e9365871c0fd4ac075f00f1a01f691789"; + activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/?activityType=10033&templateId=10202401031003302zdgfjp&activityId=1805130307891695618&nodeId=101001&prd=cjwx"; + } + const { + RunMode: aa, + UserMode: ab, + baseCommonEnv: ac, + baseCommonEnvKey: ad + } = require("./bear"); + aa.envInfo = { + "name": "组队瓜分beta", + "runName": "jd_wx_team", + "version": "2.0.1" + }; + ac.leaderNum = parseInt(process.env.B_TEAM_LEADER_NUM || 17); + ad.B_TEAM_LEADER_NUM = "leaderNum"; + class ae extends ab { + async ["saveCaptain"](e = true) { + let g = await this.wxApi(this.type + "/saveCaptain", { + "activityId": this.activityId, + "pin": this.secretPin, + "venderId": this.venderId, + "pinImg": "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg" + }); + this.debug(g); + if (g && g.result) { + this.signUuid = g.data?.["signUuid"]; + this.log("助力码[" + this.signUuid + "]"); + this.putMsg("建队"); + return; + } + let h = g?.["errorMessage"] ?? ""; + if (h.includes("店铺会员") && ab.activity.openCard && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.saveCaptain(false); + } else h.includes("活动未开始") && (ab.activity.noStart = true, this.stop()); + this.log(h); + await this.wxStopSync(h); + this.needHelp = false; + } + async ["saveMember"](e = true) { + let g = await this.wxApi(this.type + "/saveMember", { + "activityId": this.activityId, + "pin": this.secretPin, + "venderId": this.venderId, + "pinImg": "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg", + "signUuid": this.toHelpUser.signUuid + }); + this.debug(g); + if (g && g.result) { + this.log("加入[" + this.toHelpUser.pin + "]成功"); + this.toHelpUser.helpedCount += 1; + if (this.toHelpUser.helpedCount >= ab.activity.maxHelpCount) { + this.toHelpUser.needHelp = false; + this.toHelpUser.putMsg("已组满"); + await this.toHelpUser.writeLongCache(); + } + await this.writeLongCache(this.activityId + "_invite"); + return; + } + let h = g?.["errorMessage"] ?? ""; + if (h.includes("满员")) { + this.toHelpUser.needHelp = false; + await this.toHelpUser.writeLongCache(); + this.reseInviteStatus(); + return; + } else { + if (h.includes("已经加入")) this.canHelp = false, await this.writeLongCache(this.activityId + "_invite");else { + if (h.includes("店铺会员") && ab.activity.openCard && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.saveMember(false); + } + } + } + this.canHelp = false; + this.log(h); + await this.wxStopSync(h); + } + async ["getActContent"]() { + let f = await this.activityContent(); + if (!f?.["result"] || !f?.["data"]) { + this.putMsg(f?.["errorMessage"]); + return; + } + this.signUuid = f.data?.["signUuid"]; + let g = f.data?.["active"] ?? {}, + h = g?.["maxGroup"] ?? 5, + { + prizeType: i, + startTime: j, + endTime: k + } = g; + ab.activity.startTime = j; + ab.activity.endTime = k; + i == 6 && (ab.activity.openCard = true); + ab.activity.maxHelpCount = h * 4; + let l = f.data?.["successRetList"] ?? [], + m = f.data?.["list"] ?? [], + n = f.data?.["joinMap"]?.["memberList"] ?? []; + if (n.length > 0) { + this.canHelp = false; + await this.writeLongCache(this.activityId + "_invite"); + } + this.helpedCount = Math.abs(Math.max(l?.["length"] * 4 + (m?.["length"] > 0 ? m.length - 1 : 0), 0)); + this.debug(this.helpedCount); + const o = this.formatDate(j, "yyyy-MM-dd HH:mm:ss") + "至" + this.formatDate(k, "yyyy-MM-dd HH:mm:ss"); + ab.activity.timeStr = o; + if (j && j > Date.now()) { + let s = j - Date.now(); + s < 60 * 1000 * 4 ? (this.log("活动即将开始,等待" + s / 1000 + "s"), await this.sleep(s)) : (this.putMsg("活动未开始"), i == 6 && (ab.activity.noStart = true), this.stop()); + } + k && k < Date.now() && (this.putMsg("活动已结束"), await this.writeLongCacheByStop(), this.stop()); + if (this.helpedCount >= ab.activity.maxHelpCount) { + this.needHelp = false; + this.putMsg("已组满"); + await this.writeLongCache(); + return; + } + this.signUuid ? this.log("助力码[" + this.signUuid + "]") : await this.saveCaptain(); + } + async ["activityInfo"]() { + let f = await this.lzkjApi("api/task/" + this.type + "/activity", { + "shareUserId": this.shareUserId || "" + }); + if (f && f.resp_code === 0) { + let i = f.data?.["groupNumber"] ?? 5; + ab.activity.maxHelpCount = i * 4; + this.helpedCount = 0; + let j = f.data?.["captainList"] ?? []; + this.createTeamNum = i - j.length; + let k = f.data?.["prizeType"] ?? 0; + k == 1 && (ab.activity.openCard = true); + ab.activity.customThread = 1; + if (j.length > 0) { + this.teamId = j[j.length - 1].id; + let m = j[j.length - 1]?.["teamList"] ?? []; + this.helpedCount = m.length > 0 ? m.length - 1 : 0; + } + let l = f.data?.["captain"]; + l && (await this.writeLongCache(this.activityId + "_invite"), this.canHelp = false); + if (this.createTeamNum === 0 && this.helpedCount === 4) { + this.putMsg("已组满"); + this.needHelp = false; + await this.writeLongCache(); + this.exit(); + } + return; + } + let g = f?.["resp_msg"]; + this.log(g); + } + async ["saveCaptain100"](e = true) { + let g = await this.lzkjApi("api/task/" + this.type + "/saveCaptain"); + this.debug(g); + if (g && g.resp_code === 0) { + this.putMsg("建队"); + this.createTeamNum -= 1; + this.helpedCount = 0; + return; + } + let h = g?.["resp_msg"]; + if (h?.["includes"]("会员") && ab.activity.openCard && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.login(false), await this.saveCaptain100(false); + } + this.log(h); + await this.wxStopSync(h); + } + async ["saveMember100"](e = true, f = 0) { + let h = await this.lzkjApi("api/task/" + this.type + "/saveMember", { + "shareUserId": this.toHelpUser.shareUserId, + "teamId": this.toHelpUser.teamId + }); + this.debug(h); + if (h && h.resp_code === 0) { + let j = h.data?.["canSend"]; + switch (j) { + case undefined: + break; + case 4: + return this.putMsg("今日奖品已发完"), this.stop(); + case 5: + case 6: + return this.putMsg("活动奖品已发完"), this.stop(); + case 8: + case 9: + f++, this.log("活动人气爆棚", "retry:" + f); + if (f > 10) return this.putMsg("活动人气爆棚"), this.exit(); + return await this.saveMember100(e, f); + default: + this.putMsg("canSend:" + j); + break; + } + if (h.data == true) { + this.toHelpUser.putMsg("已组满"); + this.toHelpUser.needHelp = false; + await this.toHelpUser.writeLongCache(); + this.reseInviteStatus(); + return; + } else { + if (h.data?.["memberList"]) { + this.log("加入[" + this.toHelpUser.pin + "]成功"); + await this.writeLongCache(this.activityId + "_invite"); + this.toHelpUser.helpedCount += 1; + if (this.toHelpUser.helpedCount >= ab.activity.maxHelpCount) { + if (this.toHelpUser.createTeamNum > 0) { + return; + } + this.toHelpUser.needHelp = false; + this.toHelpUser.putMsg("已组满"); + await this.toHelpUser.writeLongCache(); + } + return; + } else { + if (JSON.stringify(h.data) == "{}") { + this.canHelp = false; + this.log("已加入或不能参加"); + await this.writeLongCache(this.activityId + "_invite"); + } + } + } + return; + } + let i = h?.["resp_msg"]; + if (i?.["includes"]("会员") && ab.activity.openCard && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.login(false), await this.saveMember100(false); + } + if (i?.["includes"]("已加入其他队伍")) { + await this.writeLongCache(this.activityId + "_invite"); + } + this.canHelp = false; + this.log(i); + await this.wxStopSync(i); + } + async ["getTeamInfo"]() { + await this.getUserId(); + if (!this.teamId) { + await this.activityInfo(); + } + } + async ["loadPartitionTeamSetting"]() { + let f = await this.hdbApi("loadPartitionTeamSetting"); + this.debug(f); + if (f && f?.["succ"]) { + let { + surPlusTeamNum: h, + hasInviteTeam: i, + hasJoinTeam: j, + partitionTeamSetting = {}, + myTeamLog = {} + } = f.result; + if (j > 0) { + this.canHelp = false; + } + let { + inviterTimes: k, + teamCondition: l + } = partitionTeamSetting, + { + teamMemberNum = 0, + teamId = "" + } = myTeamLog ?? {}; + ab.activity.maxHelpCount = l - 1; + this.helpedCount = Math.abs(Math.max(teamMemberNum - 1, 0)); + this.createTeamNum = h; + this.log(this.helpedCount, ab.activity.maxHelpCount); + if (h <= 0) { + this.putMsg("已组满"); + await this.writeLongCache(); + this.needHelp = false; + return; + } + if (!teamId) return await this.startPartitionTeam(); + if (teamMemberNum >= l) { + await this.startPartitionTeam(); + return; + } else this.teamId = teamId; + this.debug("helpedCount", this.helpedCount, this.createTeamNum, this.teamId, ab.activity.maxHelpCount); + return; + } + let g = f?.["message"]; + this.log(g); + this.needHelp = false; + } + async ["startPartitionTeam"](e = true) { + let g = await this.hdbApi("startPartitionTeam"); + this.debug(g); + if (g && g?.["succ"]) { + this.teamId = g.result.teamId; + this.putMsg("建队"); + this.createTeamNum -= 1; + this.helpedCount = 0; + return; + } + let h = g?.["message"]; + if (h?.["includes"]("关注店铺") && (await this.follow())) return await this.sleep(1000), await this.startPartitionTeam(); + if (h?.["includes"]("会员") && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.sleep(1000), await this.startPartitionTeam(false); + } + this.needHelp = false; + this.log(h); + } + async ["joinPartitionTeam"](e = true) { + let g = await this.hdbApi("joinPartitionTeam", { + "teamId": this.toHelpUser.teamId, + "tidaType": "joinPartitionTeam" + }); + this.debug(g); + if (g && g?.["succ"]) { + this.log("加入[" + this.toHelpUser.pin + "]成功"); + this.toHelpUser.helpedCount += 1; + if (this.toHelpUser.helpedCount >= ab.activity.maxHelpCount) { + if (this.toHelpUser.createTeamNum > 0) return await this.toHelpUser.startPartitionTeam(); + this.toHelpUser.needHelp = false; + this.toHelpUser.putMsg("已组满"); + await this.toHelpUser.writeLongCache(); + } + await this.writeLongCache(this.activityId + "_invite"); + return; + } + let h = g?.["message"]; + if (h?.["includes"]("关注店铺") && (await this.follow())) return await this.sleep(1000), await this.joinPartitionTeam(); + if (h?.["includes"]("会员") && e) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + return await this.sleep(1000), await this.joinPartitionTeam(false); + } + if (h?.["includes"]("已满员")) { + await this.toHelpUser.writeLongCache(); + this.reseInviteStatus(); + return; + } + this.canHelp = false; + this.log(h); + await this.wxStopSync(h); + } + async ["postPartition"](e = true) { + let g = await this.jinggengApi("postPartition"); + this.debug(g); + if (g && (g?.["succ"] || g?.["msg"]?.["includes"]("请先完成现有组队") || g?.["msg"]?.["includes"]("机会用完了"))) { + let i = g.data?.["partitionSetting"]?.["creatTeamNum"] ?? 0, + j = g.data?.["partitionSetting"]?.["teamNum"] ?? 0, + k = g.data?.["partitionTeamLogParams"] ?? []; + this.teamId = k[0].jdCombatTeamLogs[0].teamId; + this.createTeamNum = i - k.length; + ab.activity.maxHelpCount = j - 1; + this.helpedCount = Math.abs(Math.max(k[0].jdCombatTeamLogs.length - 1, 0)); + this.debug("helpedCount", this.helpedCount, this.createTeamNum, this.teamId, ab.activity.maxHelpCount); + if (this.createTeamNum <= 0 && this.helpedCount >= ab.activity.maxHelpCount) { + this.needHelp = false; + this.putMsg("已组满"); + await this.writeLongCache(); + return; + } + this.putMsg("建队"); + return; + } + let h = g?.["msg"] || "建队失败"; + if (h?.["includes"]("关注店铺") && e) return await this.taskPost("front/followShop", { + "userId": this.userId + }), await this.sleep(1000), await this.postPartition(false); + this.putMsg(h); + await this.wxStopSync(h); + this.needHelp = false; + return; + } + async ["postPartitionJoin"](e = true) { + let g = await this.jinggengApi("postPartition", { + "teamId": this.toHelpUser.teamId + }); + if (g && g?.["succ"]) { + this.log("加入[" + this.toHelpUser.pin + "]成功"); + this.toHelpUser.helpedCount += 1; + if (this.toHelpUser.helpedCount >= ab.activity.maxHelpCount) { + if (this.toHelpUser.createTeamNum > 0) return await this.toHelpUser.postPartition(); + this.toHelpUser.needHelp = false; + this.toHelpUser.putMsg("已组满"); + await this.toHelpUser.writeLongCache(); + } + await this.writeLongCache(this.activityId + "_invite"); + return; + } + let h = g?.["msg"] || "入队失败"; + if (h?.["includes"]("满员")) { + this.toHelpUser.needHelp = false; + await this.toHelpUser.writeLongCache(); + this.reseInviteStatus(); + return; + } + if (h?.["includes"]("关注店铺") && e) return await this.taskPost("front/followShop", { + "userId": this.userId + }), await this.postPartitionJoin(false); + h?.["includes"]("组队机会已用完") && (await this.writeLongCache(this.activityId + "_invite")); + this.canHelp = false; + this.log(h); + await this.wxStopSync(h); + } + async ["inviteTask"](e) { + await this.hitCache(this.activityId + "_invite", this.pin, "已加入队伍", true); + this.retryCount = 2; + this.proxyRetryCount = 5; + this.toHelpUser = e; + if (!this.toHelpUser.needHelp) return; + await this.isvObfuscator(); + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.postPartitionJoin(); + return; + } + if (this.mode == "hdb") { + const h = await this.login(); + if (!(h && h.code)) return; + await this.loadFrontAct(); + await this.reportPVUV(); + await this.joinPartitionTeam(); + return; + } + await this.getDefenseUrls(); + if (["10033"].includes(this.activityType)) { + await this.login(); + if (["1005", "1006", "1002"].includes(this.joinCode)) { + if (!ab.activity.openCard) return this.log(this.joinDes), this.reseCookieStatus(); + await this.bindWithVender(); + if (this.canNotOpenCard) return this.log(this.joinDes), this.reseCookieStatus(); + await this.login(false); + } + await this.toHelpUser.activityInfo(); + await this.saveMember100(); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + await this.saveMember(); + } + async ["userTask"]() { + await this.hitCache(); + this.inviteMode = 2; + if (this.index >= ac.leaderNum) return this.stop(); + await this.isvObfuscator(); + if (this.mode === "jinggeng") { + await this.setMixNick(); + await this.postPartition(); + return; + } + if (this.mode == "hdb") { + const g = await this.login(); + if (!(g && g.code)) return; + await this.loadFrontAct(); + await this.reportPVUV(); + await this.loadPartitionTeamSetting(); + return; + } + await this.getDefenseUrls(); + if (["10033"].includes(this.activityType)) { + await this.login(); + await this.activityInfo(); + if (["1005", "1006", "1002"].includes(this.joinCode)) { + if (!ab.activity.openCard) return this.log(this.joinDes), this.reseCookieStatus(); + await this.bindWithVender(); + if (this.canNotOpenCard) return this.log(this.joinDes), this.reseCookieStatus(); + await this.login(false); + } + this.debug(this.createTeamNum, this.helpedCount); + !this.teamId && (await this.saveCaptain100()); + await this.getTeamInfo(); + !this.teamId && (this.needHelp = false); + return; + } + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + await this.getActContent(); + } + } + aa.activity = { + "activityUrl": activityUrl + }; + aa.TaskClass = ae; + aa.run({ + "whitelist": ["1-20000"], + "thread": 50, + "main_thread": 20, + "inviteTask": true + }); \ No newline at end of file diff --git a/jd_wx_voteDraw.js b/jd_wx_voteDraw.js new file mode 100644 index 0000000..d56efc8 --- /dev/null +++ b/jd_wx_voteDraw.js @@ -0,0 +1,76 @@ +/* +投票抽奖beta v1.0.0 + +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10044&templateId=20210714190900tpyl011&activityId=1732698027993563138&nodeId=101001&prd=cjwx + +export B_WX_VOTE_DRAW_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("投票抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_VOTE_DRAW_URL); + +mode && (activityUrl = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10044&templateId=20210714190900tpyl011&activityId=1732698027993563138&nodeId=101001&prd=cjwx"); +const { + RunMode: iIll1II, + UserMode: l1II11iI +} = require("./bear"); +iIll1II.envInfo = { + "name": "投票抽奖beta", + "runName": "jd_wx_voteDraw", + "version": "1.0.0" +}; +class iililIii extends l1II11iI { + constructor(lii1Ii1I, Iilii) { + super(lii1Ii1I, Iilii); + } + async ["userTask"]() { + await this.isvObfuscator(); + await this.getDefenseUrls(); + if (["10044"].includes(this.activityType)) { + await this.login(); + let i1I1IlI1 = await this.lzkjApi("api/task/votePolitely/activity"); + this.debug(i1I1IlI1); + if (!i1I1IlI1 || i1I1IlI1.resp_code !== 0) { + this.putMsg(i1I1IlI1?.["resp_msg"]); + this.wxStop(i1I1IlI1?.["resp_msg"]); + return; + } + let lii1i1iI = i1I1IlI1?.["data"]?.["voteSelectList"] ?? [], + I1I1i1iI = i1I1IlI1?.["data"]?.["canDraw"]; + this.debug(lii1i1iI); + if (lii1i1iI?.["length"] === 0) { + let Iiiil111 = [i1I1IlI1.data.rule[0].text]; + i1I1IlI1.data.votingForm === 2 && Iiiil111.push(i1I1IlI1.data.rule[1].text); + let iliIi11I = await this.lzkjApi("api/task/votePolitely/savePkResult", { + "selectVote": Iiiil111 + }); + this.debug(iliIi11I); + if (iliIi11I && iliIi11I.resp_code === 0) { + I1I1i1iI = true; + } else this.putMsg(iliIi11I?.["resp_msg"]), this.wxStop(iliIi11I?.["resp_msg"]); + } + if (!I1I1i1iI) return; + let il1ii1iI = await this.lzkjApi("api/prize/draw"); + this.debug(il1ii1iI); + if (!il1ii1iI || il1ii1iI.resp_code !== 0) { + this.putMsg(il1ii1iI?.["resp_msg"]); + this.stop(il1ii1iI?.["resp_msg"]); + return; + } + this.putMsg(il1ii1iI.data?.["prizeName"] || "空气"); + il1ii1iI.data && il1ii1iI.data?.["prizeName"] && il1ii1iI.data?.["prizeType"] === 3 && il1ii1iI.data?.["addressId"] && il1ii1iI.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = il1ii1iI.data.addressId, this.prizeName = il1ii1iI.data?.["prizeName"], await this.saveAddress()); + } + } +} +iIll1II.activity = { + "activityUrl": activityUrl +}; +iIll1II.TaskClass = iililIii; +iIll1II.run({ + "whitelist": ["1-2000"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/m_jd_wx_addCart.js b/m_jd_wx_addCart.js new file mode 100644 index 0000000..cceddad --- /dev/null +++ b/m_jd_wx_addCart.js @@ -0,0 +1,486 @@ +let IIll1I11 = __dirname.includes("bear"), + iIlIlI = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_ADD_CART_URL); + +if (IIll1I11) { + iIlIlI = "https://cjhy-isv.isvjcloud.com/wxCollectionActivity/activity?activityId=8d0f86f522d34fd6828e3c75fe4091f0"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2/0d5b8e8cb94a46bbbe4aff25dc1e9c0d?activityId=0d5b8e8cb94a46bbbe4aff25dc1e9c0d"; + iIlIlI = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10024&templateId=7f4116e9-34b2-4f6d-9684-d7ca7c4b3d69&activityId=1711295984027947010&nodeId=101001&prd=cjwx"; + iIlIlI = "https://lzkj-isv.isvjcloud.com/prod/cc/interaction/v1/index?activityType=10024&templateId=20210518190900jgyl01&activityId=1714916689487958018&nodeId=101001&prd=crm"; + iIlIlI = "https://jingyun-rc.isvjcloud.com/h5/pages/plusGift/plusGift5?id=8e2fcea1fb4f64a11795ffbae977ba58&userId=1000350703"; + iIlIlI = "https://hdb-isv.isvjcloud.com/h5/pages/plusGift/plusGift1?id=dffb05f66b3f1361ddec86a315c052e4&userId=1000461510"; + iIlIlI = "https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/extraGift.html?activityType=JG_1&activityId=644508"; + iIlIlI = "https://jinggeng-isv.isvjcloud.com/ql/front/showCart?id=9e8080b38b49247b018b4ab08b970281&user_id=1000453449"; + iIlIlI = "https://jinggeng-isv.isvjcloud.com/ql/front/showCart?id=9e8080348b68fabe018b7e9eb6a306d9&user_id=1000361845"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2?activityId=00175a1d132542c1a8d6321501cf3d3d"; + iIlIlI = "https://hdb-isv.isvjcloud.com/h5/pages/plusGift/plusGift3?id=755f118f0066f6ffe910fc7c849e3ff5&userId=1000111946"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2/d4f29769aea4402fbe787652f7210d1a?activityId=d4f29769aea4402fbe787652f7210d1a"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2/6bfcc3e5963e42f4a5a49a434668dd83?activityId=6bfcc3e5963e42f4a5a49a434668dd83"; + iIlIlI = "https://cjhy-isv.isvjcloud.com/wxCollectionActivity/activity?activityId=a13e2f5048f644e8abbfbc990f8034fb"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2/0a65517110924fb893dbcd469bc44ad2?activityId=0a65517110924fb893dbcd469bc44ad2"; + iIlIlI = "https://lzkj-isv.isvjd.com/wxCollectionActivity/activity2/fdc4d1c08a594a8d8769072c0452bf7e?activityId=fdc4d1c08a594a8d8769072c0452bf7e"; + iIlIlI = "https://cjhy-isv.isvjcloud.com/wxCollectionActivity/activity?activityId=891b965fba8a4c599a04ea6b00dbff1c"; + iIlIlI = "https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10024&templateId=20210518190900jgyl011&activityId=1740268731560538114&nodeId=101001&prd=cjwx"; + iIlIlI = "https://cjhy-isv.isvjcloud.com/wxCollectionActivity/activity?activityId=8e61f7b04b184767836879c5d0030ddf"; +} + +const II1Ill11 = parseInt(process.env.M_WX_ADD_CART_BEAN_NUM || 2), + { + RunMode: i11Iiii, + UserMode: ilII1l1 +} = require("./bear"); + +i11Iiii.envInfo = { + "name": "加购有礼beta", + "runName": "jd_wx_addCart", + "version": "1.0.0" +}; + +class iiilI111 extends ilII1l1 { + constructor(il1iiii, lI1IiIl) { + super(il1iiii, lI1IiIl); + } + + async ["userTask"]() { + await this.isvObfuscator(); + + if (this.mode === "gzsl") { + let illliiii = await this.gzslApi("getGoodsGiftActivity", { + "venderId": this.activityId + }); + this.debug(illliiii); + + if (illliiii && illliiii.status === "1") { + let iIlII1I = illliiii.activity?.["startTime"], + i1llllll = illliiii.activity?.["endTime"]; + this.shopId = illliiii.activity?.["shopId"]; + this.venderId = illliiii.activity?.["venderId"]; + this.shopName = illliiii.activity?.["detail"]; + ilII1l1.activity.shopId = this.shopId; + ilII1l1.activity.venderId = this.venderId; + ilII1l1.activity.shopName = this.shopName; + ilII1l1.activity.startTime = iIlII1I; + ilII1l1.activity.endTime = i1llllll; + + if (iIlII1I && iIlII1I > this.timestamp()) { + this.putMsg("活动未开始"); + this.stop(); + return; + } + + if (i1llllll && i1llllll < this.timestamp()) { + this.putMsg("活动已结束"); + this.stop(); + return; + } + + let Ii1iI111 = await this.gzslApi("getGoodsGiftPrizeAndWare", {}, true); + this.debug(Ii1iI111); + + if (Ii1iI111 && Ii1iI111.status === "1") { + this.putMsg(Ii1iI111.data || "空气"); + return; + } + + let ilIli1ii = Ii1iI111?.["msg"] || "领取失败"; + this.putMsg(ilIli1ii); + this.wxStop(ilIli1ii); + return; + } + + return; + } + + if (this.mode === "jinggeng") { + await this.setMixNick(); + let lliiIiI = await this.jinggengShopInfo(), + iiIi11Il = parseInt(lliiIiI(".lastnum").text()), + I1IIIII1 = parseInt(lliiIiI("#addnum").text()); + + if (isNaN(iiIi11Il) || isNaN(I1IIIII1)) { + let ii1iil1l = lliiIiI("#description").text(); + this.debug("重匹规则", ii1iil1l); + const lIliilIi = ii1iil1l.match(/加购(\d+)个宝贝/); + + if (!lIliilIi) { + this.putMsg("未匹配到加购数量"); + return; + } + + iiIi11Il = parseInt(lIliilIi[1]); + I1IIIII1 = lliiIiI(".btnState2").length; + } + + this.debug("needCollectionSize:" + iiIi11Il, "hasCollectionSize:" + I1IIIII1); + + if (I1IIIII1 >= iiIi11Il) { + this.putMsg("已领取过"); + return; + } + + const iiIIi1ll = lliiIiI(".btnState1").map((iiiiili, I1lI1l11) => lliiIiI(I1lI1l11).attr("id") || lliiIiI(I1lI1l11).attr("onclick")?.["match"](/\(([^)]+)\)/)?.[1]).get(); + this.debug(iiIIi1ll); + + while (I1IIIII1 < iiIi11Il && iiIIi1ll.length > 0) { + await this.sleep(2000); + let IIiIIii1 = await this.jinggengApi("postAddCart", { + "itemId": iiIIi1ll.shift() + }); + this.debug(IIiIIii1); + + if (IIiIIii1 && IIiIIii1.succ) { + I1IIIII1++; + let I1Il1lII = IIiIIii1.msg, + Iii1Ii1I = this.parseJSON(I1Il1lII); + + if (Iii1Ii1I) { + if (Iii1Ii1I?.["actLogDto"]?.["remark"]) { + this.putMsg(Iii1Ii1I?.["actLogDto"]?.["remark"]); + return; + } + } + } else { + this.putMsg(IIiIIii1?.["msg"] || "加购失败"); + return; + } + } + + return; + } + + if (this.mode == "hdb") { + await this.login(); + await this.reportPVUV(); + await this.loadFrontAct(); + await this.loadFrontAward(); + let II1II1I = await this.hdbApi("loadAddCartSetting"); + !(II1II1I && II1II1I.succ) && this.putMsg(II1II1I?.["message"]); + + if (II1II1I?.["result"]?.["hasReceiveAward"]) { + this.putMsg("已领取"); + return; + } + + let llIiiI11 = II1II1I.result?.["addCartSetting"]?.["itemAmount"] ?? 5; + + if (this.openCard === 0 && this.prizeList && this.prizeList.filter(ili1iiIl => ["JD_MARKET"].includes(ili1iiIl.awardType)).length > 0) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + } + + let iii1iIIi = await this.hdbApi("loadFrontItems"); + !(iii1iIIi && iii1iIIi.succ) && this.putMsg(iii1iIIi?.["message"]); + let I11llIlI = iii1iIIi?.["result"] ?? [], + l111ill1 = I11llIlI.filter(IiI1I1I1 => IiI1I1I1.isFinish == 1).length, + l1il11li = I11llIlI.filter(ilIIliI1 => ilIIliI1.isFinish == 0); + + while (l111ill1 < llIiiI11 && l1il11li.length > 0) { + let l1Il1lli = l1il11li.shift().skuId; + this.debug("加购skuId:" + l1Il1lli); + let iililIll = 4; + + while (iililIll-- > 0) { + let iIIIi1l1 = await this.hdbApi("reportActionLog", { + "skuId": l1Il1lli, + "actionType": "addCart" + }); + + if (iIIIi1l1 && iIIIi1l1.succ) { + l111ill1++; + await this.sleep(1000); + break; + } + + let Ii1li1Il = iIIIi1l1?.["message"]; + + if (Ii1li1Il?.["includes"]("关注店铺") && (await this.follow())) { + await this.sleep(1000); + continue; + } + + if (Ii1li1Il?.["includes"]("会员") && retry) { + await this.bindWithVender(); + if (this.canNotOpenCard) return this.reseCookieStatus(); + await this.sleep(1000); + continue; + } + + this.wxStop(Ii1li1Il); + this.putMsg(Ii1li1Il); + return; + } + } + + if (l111ill1 < llIiiI11) { + this.log("加购数量不足,不领取"); + return; + } + + this.debug("加购完成 " + l111ill1 + " - " + llIiiI11); + let iiilIii = 2; + + while (iiilIii-- > 0) { + let lIIli11l = await this.hdbApi("postAddCartFrontAct"); + this.debug(lIIli11l); + + if (lIIli11l && lIIli11l.succ) { + if (lIIli11l.result.succ) { + this.putMsg(lIIli11l.result?.["dmActivityLog"]?.["awardName"] || "空气"); + return; + } else this.putMsg(lIIli11l.result?.["errorMsg"] || lIIli11l.result?.["message"]); + } + + let IilIIli1 = lIIli11l?.["message"]; + + if (IilIIli1?.["includes"]("关注店铺") && (await this.follow())) { + await this.sleep(1000); + continue; + } + + this.putMsg(IilIIli1); + this.wxStop(IilIIli1); + return; + } + + return; + } + + await this.getDefenseUrls(); + + if (["10024"].includes(this.activityType)) { + await this.login(); + let iIIlIIil = await this.lzkjApi("api/prize/drawPrize"); + + if (iIIlIIil && iIIlIIil.resp_code === 0) { + if (iIIlIIil.data?.["drawNumber"] > 0) { + this.putMsg("已领取"); + return; + } + + let ilIIliIl = iIIlIIil.data?.["prizeInfo"] || []; + ilIIliIl = ilIIliIl.filter(il1liI1i => il1liI1i.prizeType == 1); + this.openCard = ilIIliIl.some(IillilIl => IillilIl.beanNum >= II1Ill11); + } + + let liIli1ii = await this.lzkjApi("api/task/" + this.type + "/activity"); + + if (liIli1ii && liIli1ii.resp_code === 0) { + let ili1lIIl = liIli1ii.data?.["addWares"] || {}, + Il1llli = ili1lIIl?.["skuInfoVO"] || [], + lllilliI = ili1lIIl?.["completeCount"] || 0, + iil11i1l = ili1lIIl?.["finishNum"] || 0, + I1l11Ill = ili1lIIl?.["oneClickPurchase"] || 0, + Iiilllil = ili1lIIl?.["taskId"], + iiiII11i = liIli1ii.data?.["prizeResultNum"] || 10; + Il1llli = Il1llli.filter(iil11lI1 => iil11lI1.status === 0); + + if (iiiII11i <= 0) { + this.putMsg("已领完"); + this.stop(); + return; + } + + if (iil11i1l - lllilliI > Il1llli.length) { + this.putMsg("加购商品数量错误"); + this.stop(); + return; + } + + if (["1005", "1006", "1002"].includes(this.joinCode)) { + if (!this.openCard) return this.putMsg(this.joinDes); + await this.getShopOpenCardInfo(); + await this.bindWithVender(); + if (this.canNotOpenCard) return this.putMsg(this.joinDes); + await this.login(false); + } + + if (I1l11Ill === 0) { + this.debug("一键加购"); + let iIllill1 = await this.lzkjApi("api/task/" + this.type + "/toDo", { + "taskId": Iiilllil, + "skuId": "" + }); + + if (iIllill1 && iIllill1.resp_code === 0) { + this.putMsg(iIllill1.data?.["prizeName"]); + return; + } + + let iI1lIIl = iIllill1?.["resp_msg"]; + this.putMsg(iI1lIIl); + this.wxStop(iI1lIIl); + return; + } + + let ll11ili = 0; + + for (let ii11I1II = 0; ii11I1II < Il1llli.length; ii11I1II++) { + let iilI1I1I = await this.lzkjApi("api/task/" + this.type + "/toDo", { + "taskId": Iiilllil, + "skuId": Il1llli[ii11I1II].skuId + }); + + if (iilI1I1I && iilI1I1I.resp_code === 0) { + if (iilI1I1I.data) { + this.putMsg(iilI1I1I.data?.["prizeName"]); + return; + } + + continue; + } + + let illi11II = iilI1I1I?.["resp_msg"]; + this.putMsg(illi11II); + if (illi11II && illi11II.includes("会员等级不足")) return; + ll11ili++; + if (ll11ili > 3) return; + this.wxStop(illi11II); + } + } else this.putMsg(liIli1ii?.["resp_msg"] || "获取任务错误"), this.wxStop(liIli1ii?.["resp_msg"]); + + return; + } + + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.index === 0 && (await this.getShopInfo()); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + let II1IiIli = await this.activityContent(); + + if (!II1IiIli?.["result"] || !II1IiIli?.["data"]) { + this.putMsg(II1IiIli?.["errorMessage"]); + return; + } + + let l1II1111 = II1IiIli.data?.["cpvos"] ?? [], + ll111lII = II1IiIli.data?.["drawInfo"] ?? {}, + liIllllI = II1IiIli.data?.["drawInfo"]?.["drawInfo"]?.["beanNum"], + liiiIll = II1IiIli.data?.["needCollectionSize"], + IlliIlIi = II1IiIli.data?.["hasCollectionSize"] ?? 0, + i11I1iII = II1IiIli.data?.["oneKeyAddCart"] ?? 0, + Ili11i1I = l1II1111.filter(l1Il111i => !l1Il111i.collection); + + if (![6, 7, 9, 13, 14, 15, 16].includes(ll111lII.drawInfoType)) { + this.putMsg("垃圾或领完"); + this.stop(); + return; + } + + if (liiiIll - IlliIlIi > Ili11i1I.length) { + this.putMsg("加购商品数量错误"); + this.stop(); + return; + } + + let l1111l1I = this.activityType === 6 ? "addCart" : "collection", + ilI1I11I = this.domain.includes("cjhy") ? false : true; + + if (i11I1iII === 1) { + let lil1I1iI = 5; + + while (lil1I1iI-- > 0) { + let l1i1I11 = await this.wxApi("wxCollectionActivity/oneKeyAddCart", { + "activityId": this.activityId, + "pin": this.secretPin, + "productIds": JSON.stringify(Ili11i1I.map(iiiiIII => iiiiIII.skuId)) + }); + this.debug(l1i1I11); + + if (l1i1I11 && l1i1I11.result) { + IlliIlIi = liiiIll; + break; + } + + let i1lIII11 = l1i1I11?.["errorMessage"]; + if (!i1lIII11) break; + if (i1lIII11.includes("购物车已经满了")) continue; + + if (i1lIII11.includes("会员") && liIllllI && liIllllI >= II1Ill11) { + await this.getShopOpenCardInfo(); + let I1iiIli1 = await this.bindWithVender(); + if (I1iiIli1 && I1iiIli1.success && ["0", "9003"].includes(I1iiIli1.busiCode)) continue; + } + + this.putMsg(i1lIII11); + this.wxStop(i1lIII11); + return; + } + } else { + if (Ili11i1I.length === 0 && ilI1I11I) { + Ili11i1I.push(l1II1111[0]); + } + + while ((ilI1I11I || IlliIlIi < liiiIll) && Ili11i1I.length > 0) { + ilI1I11I = false; + let ii1li1ii = Ili11i1I.shift().productId; + this.debug("加购productId:" + ii1li1ii); + let llI11I1I = 5; + + while (llI11I1I-- > 0) { + let liIlil11 = await this.wxApi("wxCollectionActivity/" + l1111l1I, { + "activityId": this.activityId, + "pin": this.secretPin, + "productId": ii1li1ii + }); + this.debug(liIlil11); + + if (liIlil11 && liIlil11.result) { + IlliIlIi = liIlil11.data?.["hasAddCartSize"] ?? IlliIlIi + 1; + break; + } + + let IIll1ii = liIlil11?.["errorMessage"]; + if (!IIll1ii) break; + if (IIll1ii.includes("购物车已经满了")) continue; + + if (IIll1ii.includes("会员") && liIllllI && liIllllI >= II1Ill11) { + await this.getShopOpenCardInfo(); + let l1IlIi1 = await this.bindWithVender(); + + if (l1IlIi1 && l1IlIi1.success && ["0", "9003"].includes(l1IlIi1.busiCode)) { + continue; + } + } + + this.putMsg(IIll1ii); + this.wxStop(IIll1ii); + return; + } + } + } + + if (IlliIlIi < liiiIll) { + this.log("加购数量不足,不领取"); + return; + } + + this.debug("加购完成 " + IlliIlIi + " - " + liiiIll); + let i1liIlII = await this.wxApi("wxCollectionActivity/getPrize", { + "activityId": this.activityId, + "pin": this.secretPin + }); + this.debug(i1liIlII); + + if (i1liIlII && i1liIlII.result && i1liIlII.data?.["drawOk"]) { + this.putMsg(i1liIlII.data.name); + return; + } + + let l1l1li11 = i1liIlII?.["errorMessage"] || i1liIlII?.["data"]?.["errorMessage"]; + if (!l1l1li11) return; + this.putMsg(l1l1li11); + this.wxStop(l1l1li11); + + if (l1l1li11.includes("日奖品全部被领取")) {} + } + +} + +i11Iiii.activity = { + "activityUrl": iIlIlI +}; +i11Iiii.TaskClass = iiilI111; +i11Iiii.run({ + "whitelist": ["1-300"], + "main_thread": 3 +}); \ No newline at end of file diff --git a/m_jd_wx_luckDraw.js b/m_jd_wx_luckDraw.js new file mode 100644 index 0000000..daa0a22 --- /dev/null +++ b/m_jd_wx_luckDraw.js @@ -0,0 +1,27 @@ +/* +幸运抽奖beta v2.0.1 + +https://cjhy-isv.isvjcloud.com/wxDrawActivity/activity?activityId=56f3d081b3394dd0bf78c3b2ad8ada99 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10046&templateId=20210714190900lhj011&activityId=1706582977057599489&nodeId=101001&prd=cjwx +https://jinggeng-isv.isvjcloud.com/ql/front/loadBlindBox?id=9e8080f28b7c3eeb018b7f17e0e01f0a&user_id=1000003788 +https://hdb-isv.isvjcloud.com/h5/pages/pointDraw/pointDraw?id=aa5737bac99a9b9f5a4defad272ba8df&userId=131385 +https://jingyun-rc.isvjcloud.com/h5/pages/turntable/turntable11?id=715459808c66e8fe5cac9bad3e1aab46&userId=11744671 +https://gzsl-isv.isvjcloud.com/wuxian/mobileForApp/dist/views/pages/gameDZPWw_1.html?activityId=bdcbe31ba346449a93e95d749a1c493b +https://hzbz-isv.isvjcloud.com/bigdraw/draw.h4?id=d571bc02uzix +https://hdds-isv.isvjcloud.com/bigdraw/draw.h4?id=f0c6c831megx + +export B_WX_LUCK_DRAW_URL="" +export B_WX_NOT_LUCK_DRAW_LIST="" # 积分不跑 @分割 例子: a2海外@马可波罗@合田家@风向标@罗技二手外设 +export B_WX_BLACK_LUCK_DRAW_RULE="" # 拉黑的店铺 例子: FITURE|FITURE +export B_WX_LUCK_OPEN_MODE="0" # 强制开卡 0:不开卡 1:开卡 默认值0 +export B_WX_NOT_LUCK_LIMIT="100" # 前N没有次数跳出 默认值100 + +cron: 7 7 7 7 7 * +const $ = new Env("幸运抽奖beta"); +*/ + +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_LUCK_DRAW_URL); + +var iil='jsjiami.com.v7';const li1liI1i=IIllIlIl;(function(I1liIi1i,I1iI1I11,lIIIIll,lll1I111,lIi1lI1,Ii1IIi11,iII11iii){return I1liIi1i=I1liIi1i>>0x3,Ii1IIi11='hs',iII11iii='hs',function(liiiliIl,iiiII11I,I1liI,ilIII1,l1iili1I){const lIlli1l=IIllIlIl;ilIII1='tfi',Ii1IIi11=ilIII1+Ii1IIi11,l1iili1I='up',iII11iii+=l1iili1I,Ii1IIi11=I1liI(Ii1IIi11),iII11iii=I1liI(iII11iii),I1liI=0x0;const II1i1iIi=liiiliIl();while(!![]&&--lll1I111+iiiII11I){try{ilIII1=parseInt(lIlli1l(0x59d,'6Ibe'))/0x1*(-parseInt(lIlli1l(0x369,'!vl)'))/0x2)+-parseInt(lIlli1l(0x23a,'Vw))'))/0x3+parseInt(lIlli1l(0x2d7,'$46G'))/0x4+parseInt(lIlli1l(0x520,'gtH7'))/0x5+parseInt(lIlli1l(0x468,'D*%o'))/0x6*(parseInt(lIlli1l(0x23e,'G#gE'))/0x7)+parseInt(lIlli1l(0x2af,'q!&9'))/0x8*(parseInt(lIlli1l(0x449,'4rDR'))/0x9)+-parseInt(lIlli1l(0x585,'Vw))'))/0xa;}catch(lillIill){ilIII1=I1liI;}finally{l1iili1I=II1i1iIi[Ii1IIi11]();if(I1liIi1i<=lll1I111)I1liI?lIi1lI1?ilIII1=l1iili1I:lIi1lI1=l1iili1I:I1liI=l1iili1I;else{if(I1liI==lIi1lI1['replace'](/[ELkMJRuwnTFQGIdXNKprDC=]/g,'')){if(ilIII1===iiiII11I){II1i1iIi['un'+Ii1IIi11](l1iili1I);break;}II1i1iIi[iII11iii](l1iili1I);}}}}}(lIIIIll,I1iI1I11,function(lIii11l1,iIll11Il,lil1iili,ii1liliI,IlIIi11,i1lilI1,iilIlll){return iIll11Il='\x73\x70\x6c\x69\x74',lIii11l1=arguments[0x0],lIii11l1=lIii11l1[iIll11Il](''),lil1iili=`\x72\x65\x76\x65\x72\x73\x65`,lIii11l1=lIii11l1[lil1iili]('\x76'),ii1liliI=`\x6a\x6f\x69\x6e`,(0x168a29,lIii11l1[ii1liliI](''));});}(0x5e8,0x31f24,Il11l1iI,0xbf),Il11l1iI)&&(iil=0xbf);const IlIIlII=(function(){const iiIIilIl=IIllIlIl,ill1i1i={'xYgrj':function(Ili1Iili,li1ilIi){return Ili1Iili===li1ilIi;},'WaNpw':iiIIilIl(0x4e6,'*$%k'),'DWlbj':function(llI1iIll,Ii1I1IIi){return llI1iIll!==Ii1I1IIi;},'ZISKa':iiIIilIl(0x467,'JGjT'),'FajOg':iiIIilIl(0x47d,'NJ9H')};let ii11lIiI=!![];return function(i1Iili1,lil1llil){const llIl1iii=iiIIilIl;if(ill1i1i[llIl1iii(0x489,'D*%o')](ill1i1i[llIl1iii(0x1da,'^b2O')],ill1i1i[llIl1iii(0x3e7,'rBOq')])){const l1lilI1=ii11lIiI?function(){const Ii1IlII=llIl1iii;if(ill1i1i[Ii1IlII(0x341,'!vl)')](ill1i1i[Ii1IlII(0x4c6,'2i6q')],ill1i1i[Ii1IlII(0x541,'7xR*')])){if(lil1llil){const lIIIiIll=lil1llil[Ii1IlII(0x305,'$A7*')](i1Iili1,arguments);return lil1llil=null,lIIIiIll;}}else lIl1IiiI=iliIllII?.[Ii1IlII(0x1e0,'2wvH')]?.[Ii1IlII(0x4b0,'7v6M')]??0x1;}:function(){};return ii11lIiI=![],l1lilI1;}else liIIiI1i=0x3;};}()),i11iIIIl=IlIIlII(this,function(){const i11l1iIi=IIllIlIl,liiII11l={'bHUII':i11l1iIi(0x2c8,'6Ibe')};return i11iIIIl[i11l1iIi(0x451,'Hu&o')]()[i11l1iIi(0x329,'Vw))')](liiII11l[i11l1iIi(0x3ed,'D*%o')])[i11l1iIi(0x2ef,'&Mwz')]()[i11l1iIi(0x455,'Hu&o')](i11iIIIl)[i11l1iIi(0x1d9,'WE]U')](liiII11l[i11l1iIi(0x240,'7v6M')]);});function Il11l1iI(){const I1iili1=(function(){return[...[iil,'LFQjdKsjMuiXuaImwuiw.JNpcCroLm.TGvRE7Dkn==','pMrYWO1WW7C','lSkTWOFdHXe','W7ThpNNcRSkgfSohbG','WRKcsCodW5arbevlub3cGCo+W7FcGSo+W7tcGmoAWPGqW49ZWOu8WQBcMcWaxJauDf0zW5tcNZOUWOv6pCkjWPpcTcaKW4hcMmk2W6ldMaBdQGeKW7/dUSkShCoIWQNdP8o3oCkIWQOZWPVdHSkJW7ynWOejjJfjrmkjmmkQW4ipyYvBicFdVCk0WONcGmowWPSJgCkRW5xdHmoQW6hcRqKPW64JW4T/W6PGWP3dQJrDW6/dHCkvWRhdI8ooDchdUrGIA8oRBaaKWPjIWPdcGuddKMiYW7hdOSotbmkvWO3cVHj1W7JdSSocur3dJ1GxWQTgW4lcNqJcLmkl','sCk5F1e','WPldKSoVACo5','WOudDmk4W74','oSkOeMGF','W6/dPGtdICoH','q8kKhmk2bq','hNpdMCo6gY9vuSouFJNdSHlcJq','k05yWRTv','sSoZFtupW5TPrfhcNG','WQldSa52W64PjSkakW','xSoUW4ddLCop','AGbZWRRdSq','sCk9AuvX','tSk3B1u','WQVdOWXYW5K','WPZcTIfvWP8','WQBdN2Pdia','vmoSWOb9WQ7dSSo9W7K','W4mFwbdcKNZdHCkhWR49W7qpWO82xmoldhCEW6JcG2FcQXLnW4LiWPVcNSkEWRSWwSkOWR/cGbDpWPTnouBdICoyW4nUWPJdJ8ktWQ9+k3DhjHD0W4FcIbLIW4OMarddUuqPWO0/dCo8W6FcOuq0W47cGZ7cNSkPohy5WQLrW6jhW6aBzWqnC8kdgZSBbmkFW7VcJwpcQCoAWQpcGCkJzmoM','WR8QW6WVkW','E1zex8oxW7GGnhK','khP6WObM','WRfHWPFcPe0','W7axtfit','rmo0W5JdOCoxWPe','utRcS3e','tGLeWPtcHmoK','WQVdTmklW7jQ','WR7dKSotWP1FWOaGWRXWCWtcMq','dmk1mMe1','sSoVWOHEWPm','W4ldRfag','tSoMWOK','BhxdVJSs','gwddLSodoI53qmouyG','ceeNW5JdMW','WPFdKCodBmoV','WPzLWONcUxJdGa','Dmktgsu2itaVoW','WPRcTYjiWQSxFaaKWQ8','tajYWPlcV8o1iCo6','p8kwig8N','WOmvtSk0W5tdRSkMuq','WRJdPCoow8oy','n3T7WO9CW6hcVWHIjWJcJW','Cd93fCojnbldMSkmWPqgW7hcPSodWOm','W6NdVY3dK8oLW7Pvomou','E0TEuCo0W4qUn2JdQSorW7X1WRKBd8kv','WRDWebje','WQRdRmkkW7vgWPfcl8kCCJhcKa','5zY/5zYe5OUY6Aon5A6X','WQLRWP3cUw0','WR8pASoXW60','5OIM5AA75AAF6lwV','mb7cJWtdIa','zuTzACohW5uQfxxdK8ozW7S','iSkUWRFdHLHanKVcOWu','vSoYW47dHSoE','WPZdHCkzW7i+','wbjJWQZcHmoZg8o1','W7NcHSkhsCod','WOtcI8kRWONdMG','xs/cS2a9l3GhW61tWORcJI7cLbBcT1VcRhVcHxnHe11kWOXzl8kzsXD3rY7dLYxcImoQWO/cPMRcNv0mWPldN8kkzSo6W7T/W6e3ddGNfIhcO28sW6C2hhhcPCkYWOWVWQxcHSoNW7DVb3VcQs4fWReBWRjOWOdcMcBcTw5XW6TTmhFcVcjjW6BcLZhcGbXWBHdcVCkVWQdcGIhcHSkjmKZdGeVcVwNcJx17WOZdG8kCWP3dUtCCtr17W4WRamoZrreuW6tcHd/cGv4EWPpdTmolW7pdOSoDqCkOFXHsySoGhNX7WPtcPCknta','WOtdJmoYBCoNdW','nwjW','W50p5REP5AATWP/PQ6dLJQtMS5ZNVB865zoa55wz5A+UeUMJJUwtGEAGJvVNVjZMI6ZKUPlMIPdLP6tORiC','WQy+W58EW5NcLWKcWOtcUG13cwZdRZOjnbnZB8kKEmo4WO5iW4D9swZcRCknWQpdO8kPomkJW68Ak2/dRf87xKRdMCktx8k+yZRcR8oJW5lcNCkvWQb0WO7dO8k2xSo2W7VcPmofE8kTWRxcJConlmocWO9mWPr7y8ktWRC+wun5BqmdW7G7W711c8onWRpcH8o1WQZdJSoQc8oOW48','W4mFwbdcKNZdHCkhWROJW71iW4SSwCkts20BW7tcIMJcQanCWOmfWPFcNmoCW7X1b8k3WRRdIbfFWPTqiKddGSoEW4nVWOddMCoDWRP4DNbDiXbGWP3dLHnYWP5JdqBdOYjPWP5UuCo9W6/dSXy7W5NdJMNcL8oPmxeRWQGTWRbdWRmFBarCiSkuwNLhrSoVWQ/cGd7dS8kdWQpcG8kNC8kZW5pcKsNdMXdcINBcOWzfWOzGWOtcQSkRW7BcKCkzWRVcQgBdMfuwvZlcUXtcMSk6dCkwjmo5o8kpCw50W4pcT8k2bmogWQ5BcSkFDSkEnSo1','WQnohq5gbMLiWPS','WQ8UW48CW4/dNLvKWOW','W6VcN8ohmfNdNCkCqsq','gNLsWQjw','WQeevmojW4zLsGDc','WR3cOmk7W6xdKq','AMldKSk6pW','WRWVW5GBW4BdMq','WOddGCocEG','WOddGCkXW68C','WPWErmk1W4K','vmoHpmk0cejCWQdcG0Phq8oeWPBcQb/cJa','W4pcIgVdNLRdIfuQW7q','n8kYfeeGp8oepxuiW70xWQzkW7SoqgrjjColWQ3cKMRdUmobvK5sW6ZcL2f4BdhdTCoxW7BcPM8aW4xdNCk+W74EWQRdIGbtiSkPW4WvCSkdWONcPI5wWORcUIXMC8kXhf7dPmocWRddSLDAWRaGhmoNWPJdNmowsNRdJCkBBSkze1FcMrZdL8ovWQ8VWPxdSgyHW4ldMWiEWQDeymoYWORdTCkwnmkhW5XHWOldRfjKdSozFeddJmoOWOiektTZWOj0qmkLfSoVy8k3cg/dT0ddNaBcNZLvhSoTjCkLWOfNENVcO2JdSvbry8o7WRyeB8kpz8o3mCofW7hcQmo0W5eDfwNcO18','WPOmzmohW48','F8oZW7JdGmoq','WRbTWRBcVv0','WPD0WPxcVa','WQmttSogW49F','WOmOW6COW7O','qGldTSoDWQa','WOxdPSk0Aga','WP0evmkGW4lcPSoagSk6W5ZdQCoTbSkqW6dcRZpdKaNcT3H5WQhdMXxcPCkqkZdcOLe7W64oWO3cJupdNbz3W5ldKa9AyuG9W6C8WQSkW5fPWRlcGH8YWPVdI8oYd8kwnSkNW6xdH8oyWPaOW644mYFdNb4rqbldQtZcOmoVv8kDW4hdOtGNWPdcGmkBrmkBEKtdHJCPWPnaW4WvW5fmWRyilmkhW4NdSmkC','W4JdTXZdKCohWQq7WQ8Inuq','WRWvW4Cw','5REb5yIn5P2u5BY+5AE2','wxNdV8k8l8oHkCkLbwfa','WO3dTKXBiG','dmkMWOX8WQRdSG','tsZdTSoEWQS','W57dPeCzW7FdV08','WOldKmoiCmo+','WPSXCmoRW7a','WQRdUGLOW74+mmk6','W77dTsBdImog','WQJcUmo1W4ixz8kJWORdO8olW4BdLmkFWRddSCkSv8o7W44kW5mEWQXqsmolumkXFXeyiMfgW6zhW70VWR3dSCkTuGmtlbvOWRlcGedcV2hcHSoUW7fpWR7cOmoiW5VcOWldSSkbjCoIWRddGCk4uaRcUbdcUvjBACo6sblcSX5ajCkKBGBdLLVcVCoqhajyxwPIW4ldSMhdLCoJbhtcLWtdLCkk','uCoLWOT8WRS','xs/cS2a9l3GhW6ztWPlcIc7cLbBcT1VcRhVcHxnHe11kWOXzl8kzsXDWqdNdMMVcHCkMW43cOgBcGfqBWRxdK8kmvmoRW6OJWQO3esHTghFcP3SvWQeWfglcUCkvW5O4WQhdLSkZWOmfzrlcVNHiWQ0gWQLTW4VcGaZcPtO2WRuREW/dRcLkW6VcLJNcGHiNoKZcV8kOWQlcKdtdLSoCiXNcKWVcUKxdMcv+WOVdHCopWPtcRMix','WOFdPhvNeG','WONcHcX9WOi','qJ7dQSoIWRaQtSkUmLqAWOxdQCkuWOjIWPvJoCoyfulcGtpcL8kbzmk0kSoBW5bZWPlcMYazW59CWPXHWRK8W4H3zaZdQmo5WP3cNmkPleH9W7hcSNldSvpcVGSIW6lcLmkYWRKiWOZdUvDkdJZcVCoKWQTKthZdQCoBwr3cVaTsWPS9W6ddJhbWW7RcGCoAWRRdU8kdW6e2ESkOWRe','usNcPMC','r8o9WOD0WQ4','WRfreWXRla','ugddQCkVgmo4na','WR0VW4OCW4NdHq','b1r/WOjRW6NcUWvBmtJcK8oWAs8AW44','WQFdTrnjW6OI','W7NdPLecW7q','ec/cNJddGW','r8kXzvDXWO93WR3dON/cIW5+W51hyW','WOvJWO7cPwldNsXeaZHx','WPqtvmk5W4FdTCkBta','W4FdSq3dNmo3WQiJWROyma','WQ4cW5WphSkewCkEWRXkDCoDWP/dGMu','W7nqcw7cPCkrnSo7aCkb','W4XsW63dJ8kBW74Qsq','WPqtvmk5W4FdTCkBtmkgW4hdU8kL','W5mGEbBcOW','WR3cPmkTW7e','W53cNb5X','WRhdGCortmoA','ACkmCLDI','WOFdNComFmo7c3mfW5i','urhcRIfHDG','56Ec5yUE5lIg6lAd','WRxcRCkZW4JdGa','uqvJWPdcMmkUFCk+W5LnDmkpWOxcGSkjnx/dPmogfCkQyCkCaCkZWOmRWPlcRCkrW6ZcHGuecZxdRmkditxdQmkfW6rummk7zNnHvK9XWOOzWQ0pWRhcV8ocCbFcUmk6C8ovfCk0WRpdNZtdISkIibNcOSowlmocphWsW58mr8oTF8othSkuDGLyW4pcKmoyW5b+W4jRmxuioSkRW7FdN1xcHmkcdCkCideTW6f/wCkpWP7dHmo8emoqW7OaWOSevSkqW5aNlGW1WQi8WP44W58','rxbUFmoX','pmkTWR3dKZr9eG','A8kQz0fg','WObYWPVcU1FdMY1tiGroW74qgZJdMG','WPFdJmk8W6O1WQ3cHda','kbhcIqZdTG','zSkchJq','W75rWPHrwW','W6dcJLNdIw/dLHyLW7qjta','qCkXdZOr','W43dSqRdJCow','Bb5uWQNdKa','CCkwcty','WPpdT8ksvKBcOq','uCoKpmkXl2LmWQdcMgLBqmoJWO7cObC','Efbcvq','DgRdTsOS','u1xdUCkhpW','erlcJ19i','W4JcHX1TW6FdPq','W5RdMtddMCoX','EH9YWRWyW7VcIIS','FCkdcsCGAgXjm1bNW6uQzSovWQpdISkvmSoAWOHkumkgb2VcKmoEW5WqWQVdM8kpWO5sz8oGWPz7W7FcLSoEg8kthbRcJSoEySopoZbtW6HcgCkeW6WRw8oess3dVZ5FW54UoSooWP9tr8kjWRlcK8koAIFdISkPW5jVWP8AW4hdNaGvC1BcLYmzt8oMW6LPWQxcR2DwpXf8hu/dJSo/WQ7cR8oTzKWyW5tdHqmtWQ9PfvrIh8kbwCk2fSo3nKGLW6pdSKddJSkMWOVdSg5RdMShWO3dMvhcNaJcG0xdOCoSW43dMs/dPNRdM8oujG','tXr5WOtcJSoMg8o1','5P+o552b5REO5yIY57ca5z2h','WRfreWXSkwva','WRFdHCotWOrAW5n7W6PmBHBdKxpdNSk+jColkSofW7r1DulcNHBcTmo/W5ldNZZdJSkBc2NcUCoik8oawmoLaCk4sYRdT8oFWOxcVeWJy0VdJrKiW7JdHCktW6/cGHnlW67cHmk0WOOQq2tcJYZcHalcJCk4WRr2yCohfCkxjmkGxCkEW5umce5OWRxdLbCDWPhdOSoAW7e8WRddPuHMpIqmc8khW444','vqxcQqDEEmkbaq','Fr5M','WRFcTmosW4yllq','p8k2WRRdNG','W5dcH8kJuCoK','s3ldPmkLemoS','W4WUyJNcMW','ub59WRWiW7ZcMX8ZD8ohnx/dPIZdOCopv8o4WOrGDSkP','W4pdKq/dLCoZ','WQVdScDeCq','W65me1lcNq','WOFdI8k9W74sWRJcGdRdVa','ybLgWO8','WPRcQajCWPelzWS1WQrCBuG','WO7dULD8ida','DWnWWQCSW6JcJIO4xmoxkq','W4ZdSZ8oW5yEifm9W64JFH7cJSoddGTdW7dcVdhdHSkWFmoVW4OQW6ZcTJNcPCkIW6/dTcRcP1DlugFcUtJcUCkWwhldLh8GW4DAW6fRWRaonmoqW5i6emkmmfxcQw7cJmoAWOFcTNFdJh/cJ8kcDfD0FcWqa8kLW6eLW7ldJCoGk8kzWQ4HftldLGpdQSoRhCkzW4xdNCo1W5HabcLhdZ0','oqZcRIpdKmosWQaAW7FdShi8','W59BWOOpt8kYWONcO8ofW6BcRmoM','WO3dP0XbhtzScG','W49sW7pdNG','mSk1dL8P','W7xcGSoAbKNdQSkoFsJcPSkHCG','W74fsCosW5fF','W4NcR8oxmK0','WR4LW5GAW6ZdN0LdWPZcGW54r27dMd5gkI9Rya','aSkLgxWx','CCkshYi0','gSkvi3uA','WQRdLCkBEWtcVCoqxHJcKSkIvCkp','W6ddRZ3dKCoZWRmjxSoCW4TGW53dNSkhg8oLkmowBSo3WPLNWOC3d3BcLIxdSN4fWOldTq8KW6JcLwZdHL9EW7dcS8ksWOfyWOeOdSohW40AxLuFnrTtW6ZdNwJdQmkfWQtdTmoYWOJdRmkDWOhdLZ4GWOJdKSo2ymkmhHRdULBdRwJcGmo8Fg0Gb8o2W5CQWOldUmk8WQH6amogsCo6n8kFW5Xxbw3dU0RcO8owWPpdGrddQaddOMpdM3jxW6VdUSoRW6RdLSkqBCoEW5HKnrCADmkLWPFdRa','WQVdUmo3WQba','6z295l2m5zgb','W4hdObZdImocW7DGW7KBpumxWRbyW5ddRcddG2vwjmkAW5zkD8oIW6VdHejfuH8bW5VdMSkPWR/dHxRcMmkTWP1gDW8sWQ9cW6NdUmkcEmoDm2LfmSoKW4FdVuddU8kDwCkaWPHwa8oPW6jzWO7dG8kMW41AzN87lNldJ8kWeKxdU3a+wg3dJmknWQmMftZcJ0LMrW5HfW4RW5hcKrjsWPelW7XMsmk7FGG9ug7cQxlcUmkUlCkHbMldTWdcRSkZBSohCCopWQ0rA8oyW5KLzmk76yAX5RQN6Ak65y6ofZ9YhNpcJCk7','W7ddRqFdPCo6','iCkvbeSz','W7pcL8ommh3dUCkm','wsldSCoIWO1XdmoK','sqrJWQ3cMmoZ','qCk3Ba','qCoUkq','WRzCbaH2j0brWPpcTq','WPVdGmovACo7rt1hW4HUkWNdJmo9oh98tSorWP9KkWDGWQufWPjpsSoovHZdImkCWOZcLCoTW4qQD8kOWQZdICoTbapdVCohw2/dRHFcKmkYfu8OkN/cOCozW7GbWRFcGmo9DWykimoLWRHHhmo5WRNcH8kwvSklWO9tWR5oWONcONuNiCkbW4ddPvbaDWilvNecWRjfW4igh8oaWPhdT0/cTJHPdSoSl8otWP92n8kwW7ddVXJdQ21zWOxdLW','gSkLkh8OW4z7zfW','WRzxesTn','WRldSSkjW5f1','ESkhgdKqmZeceKvOW6O','nCk4WRRdSWbUecRcRGZdQ8kq','WRpcRmk3W7FdKrZdI8oL','WP8xW70boW','ucj2aG','WQy+W58EW5NcLWKcWOtcUG13cwZdRZOjnbnZB8kJoSo0WPrbW4zPxKxdSmkCWQBdJCkUy8kPW7PCnNJcT1SQs0ddM8ktrmkPyY3dVSk4WORdM8omW6y9WP7cS8oLgSkUWQldSSoqyCkqWRJdHSkqpCkiW7CCW419n8ofW6m5veaTAWmdWQ84W7TXamoiWRxcJ8oMWR3cL8oNh8ohW4HoW5bgWRdcT8opWQSQdmowW6S','qSoUdSkYa3y','WOFcVCkoWRq','W5ldV1ec','WOhcQmkxWQhdH8ovpSowWQ4xW4BcUYqfaSo3WRGyxGlcMmo7WPtcGSojW4fYW6LStCkGgSkTW5dcOwD+eGlcGSkOdIRcHmoahmozWRxdO3WKW7ZdVgRcOIukoCouwLRcVG','W4XBWPy4wa','rtRdU8o8WObXe8oLcLCbWORcTW','W5GFtrlcLrlcG8ofWRm','nSkOa10MyCkoyq','WQddMmkLrKq','WOpdUmoTF8or','B3VdHCkLlG','WOPVWO7cGghdLZnXpYDsW6C','W7NdLhaGW48','W73dTrVdK8oYWQeUWQue','pgPNWRv2W63cQa','W57cTfJdTw0','y8kseZm2iaOc','WPPXjIzt','pSk5WRZdPJK','5yg75ysx5RcY5lQx5yQZ','WONdJrfoDfO','WRZdNSodWPe','r8oPW4pdNmoTWPi','W4hcJ3NdR2FdJf0','EXbIWPycW7pcGZCRtmokk07dUG','W5JdRmotW6FcHG','5BMx6zc25l6B5zoQ','W4lcSCkczW','vHZcMXX7','WP0evmkGW4lcPSoagSk6W5ZdQCoTbSkqW6dcRZpdKaNcT3H5WQhdMXxcPCkqkZdcOLe7W64oWO3cJupdNbzRW4JdMGPxyKG1W7q8WRCqW5TSWR/cGr86WOJdHCkKaSopASo+W6FcK8knWPf/W6S/pIJcJKjhtHhdPgtcRmk7bCkFWPFcSZLZWPBdKCkBt8kzkqBcLte/WOr7W6fmW51oWRCljCke','WQ4cW5WphSkewCkEWRHbBmoc','kCkYWR3dIHL5','WP0evmkGW4lcPSoagSk+W4ldOmkQqSkkW6xdT3tdIGZcQ3f2WQldGqtdR8oDjZldObz+WRmrWOJdHuxdJbzYW4NdHWfrr1KGW7bYWQymWP1RWQxcOqGJW4dcM8kUeSkBFCo2WQBdNCoQW59TW69HnIhdN0KuurBcSNhdSCkPcCknWO/cNM95WPxcHmolq8oeEHddL3bSW4elWRjcW5HnWRapkCkxWOJcOCodW6igi8keWRtcQhlcUSkYCdDRW5DhomkXAIhcQCoOzSo1F8kyW4nCW4XkwNr/ymk6hCk9WPKmeCkDdCkoWR7dLqiihabKuqJcTZDyWRNcUSoMAYTPW4ilErSiWR/cKSoj','WRJdI8ouWPG','WPhdP8kvBLNcSG','WRJdJSo4BCoK','k8k/efq','sZRdT8k9WRnIcmo7oWevWP3cPCkkWQfMW5jWlW','W5RdVaFdImo4WQK','u0RdKbWUW57dO0PCW5a2kW','WRFdNtjrEG','W7ncWPaQFW','wvrNt8o9','sHr2WPlcImo8','uSoUW57dGCofWOlcKCkGW6ZcSG','wepdNtGv','WRRcICkWW5/dSq','W5HBWPaQ','vmoMnmoP','sGTIWPhcKW','WRyxz8ktW7G','ytLpWPRcGG','WR80F8kxW77dK8kRzG','W4hdObZdImocW7DGW7KBpumxWRbyW5ddRcddG2vwjmkDWPrgBCoRW6RdL19hguaqW5FcKCoVWRldKJdcG8kIWOPxBaeFW7rhWRRcTSoaz8keBZ4pE8oRWPBcRXVcRCkywmkBWPflhSkKWRzuWO/dG8kMW49FCc9TFhRdMSkTd0RdM2b6id7dG8koWQuLfZJcI0zPqaXKfauQW5pcNGavW4baW79Ismk9FGG9ug3cRNFcVmkVlCkKcMldTGtcP8k3BCkzimkvW7CuFmkhWPyOymoIxCoRemoYeJPZghlcISkPWP3dRmkbWQ7cVZ/cQCoP','WP8utCkKW7a','uqvJWPdcMmkUFCk+W51nFCkFWOxcGSkjnx/dPmogfCkQyCkCaCkZWOmRWPlcRCkrW6ZcLb4mc2JdRSkxitJdTmkqW7yioCoSlwLKcG08WODgW7HFW73cT8oAk1tcQq','wt7dSCoI','WRKYW7GAW4xdNq','WQzycb0','WQy+W58EW5NcLWKcWOlcQqH6xxddSMfvpK5SDSk2pmo4WO1kWP1Uh0VcSmkbW7VdISo/y8k6W7GuoMxdReOTwe3dM8kBsCkRkxtcUmoIW4NcHCkiWRvVW53dP8oKg8kGW6tcQCkmnCovW6tcHmomCmojWO5aWPn6nSkvW6LTbuj/pvidW7XQWQ1XxCojW6xdLSkIW7RdICkUgSo9W4KbWQGsWR3cTSooWQWQcmowW6JcGa','W4xcJxhdTM/dMq','WONdT3bfpcC','W4mFwbdcKNZdHCkhWRWWW7HfWOeGrmkcshylWQZcIxJcSGzkWOTeWOhcL8kFWRbQgmo3WQ/cI11AW4zwiKdcImoFW4PJWOpdRSooWRP8fNDwEbX8WP/cJHu+W4CTvexcQK5ZW5DQwSkUWRNdSri8W4FdMw3dI8kQzcvSW7HqW6DjWRroEeaFCmoxmseAs8oGWQVcG2BcQW','WO3dISk3W78d','ESkTyent','WRjmdXq','W6JcJmoyl33dRCkbqYtcUmk7','u8o5mCkQa3fQWQBcG1C','zCkccrOGnq','WQVdOb50W7HGESoMkmkuW5pdQ8kuzh/dMJDtq0HNdSouhJe9vN8QFJnGhZRcRvWyWQFcUmkxW6RdOsG8s8oMpSoajvRdQ8kDWPtcGSkqoKmLW7DWW5xdSXJdLZ8hW4ZdRfZcJSkJW6apWQVdVJ5Icmo5f2NdPtyPW7zmWQvRtmoAgfmvENu0uN/cTdy7mSk6W7rqWRvhD8oKW7VdTmkGf8okW4JdQCoNW6NcKdNdI8kFW7NdL3JdNCoyWRy','W6hcVSoGa1C','srdcRHXHk8oDwMhdOYZdQWG0DmkLo8kdW4vPdSk7hSkLWPFcTmoPWRG6AmoluSozWPTHt8oeW6/cMmoxkSkap2xcUIe4W4quW57cMmo0xqT/hKNcVZtdMSoMWR5Ve8kjW53cHSoqWRLRWR/cT8kPW4lcMJ1JjXL9tCkNqNVcPmk3CmonWOTEW4DZC8ogy8oKAqpdUWZdNCk3WOjRydZcJgOgWRlcT8krlsdcVG','W7JdTdRdLCoqW6zph8oeW7v5W5BcHa','WQddOZvOza','WPldQmoRWOjT','W43dTrZdMq','WQZdJbTjELfEwvhcNHulWPexl0JcTSoTW6JcPW','gxpdG8ov','W43cUbmizgiXaSklaq/dJfm','lMJdKSoLjq','ySkRyxXS','WOmcW6iKW5a','W6Prm3hcRSk7bmoJbW','emk1cN0P','WOX0WO7cVgFcJNCsoIvjW7y3gZpdMCo5W4tcPtxcVNmyWQtdTmkxA8obCZddKCk5gmkduKldNCkZxComW73dNSkHWR/cSSotDW/cS2NcOx/dVhWRW7mOt3lcIJ1qmsVcG2SXWPb/WQ07WRHXbfRdS8kkW5yOW44TWQ7dPHnNW4NcKbS3W7/dKZZcQsKZxmo5nSkNytHWE3ldNvfSEmkCyCkHwSo6omkNWP7cNSkvagtdGtBdRCojiCk9fHSunSkmW4qCW5FcUSoKW4uTW4mjBuhcTmokW4BdMmkOWQGfW5ObEdNcSx9NDSodw8k2kCk3ahJcRuu','vCo8WPzWWQRdRSkBW6JcVL4lAcZcN8onWOZcPaixWPOO','rSo+mSkXogDkWQxcQfvpwG','W7RcJSoAi0RdOmkrsa','WP/dM8oaFCoodx0gW5zgjHO','DNddJG4B','W4ZdUH7dSCoFWQSG','BdJdSSoJWPm','repdIWO','omogsq','FwVdN8kVhW','WONcVrblWOOs','oSk0WRRdQWX9hG','W4FdUXZdTmoeWQ4KWPOEkKej','BIZcTGHx','WO/cTCkpWQxdKCkD','rCkSF0bLW5a2W7xdNw3cJXqAW5PsESkOefvpWQVdJcigpmkPWP7cLa1bxJyjWQlcKsRcO8kMWP/dHIVcK8oNW6VcOZigxCkNksfOxfhdOuynkvHfaqHVWPVcKmkxpgmttLtcKCkTWO/dTmkHW6FcMmoUWOpcG0PpW7RcPvJdN8kEfSkvt8kNe8k2c8oMW64WWRhcNWCOdSosW4axg1mgvmofAJ9+WRVcQSoNWQddSCk9W5HlamkxacpdNmkqWRtdPHi4sghcQmkceCk2W7RdGcTFAtSGW7JdOmoolSo1D8k0EHJdMI4zW4XRdCkQWQa9aSkpueOTgGfknvhcQSk3W54PW4mmWRVcVqBdNSkB','WODVWP7cQq','W7nWgdLMof8','W4tcSSoajuJdHCkquIRcJ8k6z8klxmoRW6XXWONdTG','WQxcQ8kvWQVdMq','WRddK8oMwSob','sKpdRmkmaW','sw/dN8kmaW','DXrZWQuk','W7tdGxi7W6NdJwRdOIendmoxWP0VWORcP8kEW7ddLSo0WRrvCSkFWPy','lHZcRIRdKCou','WOZdKmkNW6OiW7BdHNRdUbqfmt47WOJdQ0BcHYjDW58zW6iZWPhcO8kxd8k1ctm0xXWGW73cUCo1lSoVrSofkG8FW7/cGwCWwwyaWPvMDSkRW5/cMcNdLCknW4NdR2NdPCo2uIJdPwakg8kgWOVdMCk4oK8PdetcNJmUdMvlkCoUgCkBqXZdO2tdK8oBiG89WQVcISk3dq','WQ3dRCkDW5vgWPzmea','WPDOWPxcVf3dKa','fwBdG8oeb2e1dCoDAHhdUu3cGmoyW68UWPNcL1hdOua1WROGdSoGWQ/dPqVcLmkGvSkBWRBcQG0aFKJdUv7dRmknW4pdMSo9DvZdG8oHAbZdNhWUW5L7jZVcLCo3jCkaW6xcTaafW7athCk9W6iLW6FdQW4DWOldI1rXW5ZdLMihWPj5jCkwySkWWO1mhSotp8oqWRm+terMWP/dMG/dHCkammkcb8kiWQJdTH9XWO0ie8oOWPWnW5tcRCofDshdO8kXlLpcRWVdGsRcOx/dKLBdGIZcRqldKKJdLXBcLCkfExeAWRpdKmkOwbxdMflcUmkhpua+WOBcMmkuyt5UbSoSyflcKwNdN8k9xeNdR8oOW4nGeW','WP/dM8ogCmoM','vLRdRaaU','sHL4WPFcR8oMm8oMW7PzEG','WP3cUCkBWQu','WPBdU1Dbig0UqmkLat3dSbe4WRBcMCo6mmk5WQvtW6jCWRqBnqZcGaj5fSo2W4uiWRbQWR0yW7/cGg7dVSk8W5tdKSotWQGZymowemoiWRBdH8kXq8oTWRddQgXLWRXFW4dcHgRdH8oZW6VcKCouWQ3cNvz5i8oBebOHeSo8DuT+n8ovhKtdM8oxW7n6W6JdRCk+WRWJ','5Ok95P+D5lMq5Asb','EHvcWRJcHW','WQiLW4WhW4q','WRWFuW','euv2WOrP','WQZdGColWP1D','5BMv6lYi5OQ25AwMDmkpBCk7','fSkjaxCe','W4z/W43dSCks','WPddNCkJW78','W5lcHmkWq8o6','rJFcONu+','xCoIkCk2hZWwW6hcHenkxSkiWOVcSGBdJbyfE8kWW5ZdPZ/cLbddIsOtW7rAW63cG8opW7q/W6hdQbbhWONdPd3dTSkDW4NdVeKLW7VcGmoDWRSAbw5ZqW8Xh18','ruZdMZ8tW5ldTq','WPBcGHrqWOa','W7RcPfS2WR9ObSkof8kEW4ldNW','vX5JWQZcNSo3oCoDW5XADSkr','WQRdOSktW5W','WPmPASoRW7XNFILSDtFcQmkhW5FcP8obWO7cSmo2WROJW7XAWRK'],...(function(){return[...['WP7cPmkWWQxdM8kF','W5hcJCk8w8oW','W7hcO8oCm3u','WQRcQCk8W7xdHG','WPxdTCkvW7fj','WRtcNmkFW5ZdSG','BSo0uqKrA8kkE3ay','W5fsW7RdNG','WRhcSCkTW6ddHupcISkTWOVcPSkTW4/cTmkowbFdIIniWQ7cGmoUiYddPGVdISkVnX5FW4WCbLlcQG0hWP9VWQGJW6jlW5SLW63cSYhcVHihWQ/dUmkAW7ldQmkQtSo3dJeaW7fdECorWPBcPM3cOCo/W4KIWPKcW6ldRCoPx8o8W7CBW4lcS3VcGJD8WOxdICkmqY3dMJFdQ8k4jCouWO7dMGBcISkUWOBdUmkWAmkOqW','WOWvW7W2W7xdOxnUWQpcNYDECeZdIGvZbd9rxmkqe8oi','WQzFWQ3cLeVdUHDPcqzUW5aDkb3dR8oBW7lcLWNcLKKR','omkUigeOW5z8FLdcM0NcNHhdImoiW47cQmkoWOtcM8odW4q','bfhdLCoCnG','rK3dKWCvW4G','WPRcPdDE','W6PwlKBcUmks','thxdMmkHk8oHm8k7','WONdL8k0','WQC9vSk6W7u','WQ7dVqq','WQRcSCk4W6tdGWO','W4NcJqvfW63dTmkuW4hcTaKHhwHH','WOX0WO7cVgFcJNCsnsbtW6P7hIRdI8k0W4ZcUZpcTxKtWQxcRmkbjSkmDs7cImkKa8kRt1BdJSoCxCoxW7NcH8kHWQxcV8kzza3cPhtdUh/dPMfXW6P0wNJcId1sirBcNGj9W5z8WQnUWRH5bWNdPSoyWOXOW4m/W7FdSaWzWPxdJHLIW73cHg7cQxXKbmoWpW','nHpcUb0','r1BdQYaB','WONdGCkGW6KAWQVcJa','DaPBWPtdRCoWWPz5Aq','WQZdMCoiWOrNWOG5WQa','tWxcTWK','DrXAWPVdPa','WRVdGmkUAvS','ySkHE2H5','kh5QWQXSW6C','WPZcKsPEWOe','WQPDhJ1siq','WRuxsCos','WRpdOr5jW7G9','W77cO8krCmo+','WO/cVsT7WPa','yav+WQa','WQSaW5Wh','W4/cNXbZW6ZdHSkiW5/cOG','FCkwdHe8pI8jkhLNW7PoA8ovWPNcJCkpnq','BaXgWP7dU8keW5G7ymodW5hdPmoxf3P7fSodl8kGWPlcN1azW6tdK8krW43dK8kUlmknWQJdRCosqajCt3m5WP3dR1BcHSkOW4BcHXddHCkpotldMG/dRCkLW7SUWO7dQYJdTaLYW4W+rmkFfCobW4KCWR0SlI7cPCkaAJBdS1HAe8olzCoubSk2bmkObe3dPZxcLhpcP8o2cu3dRX3dLtVdTtePW4HgW5e9lfSkW4ZdV1hdPSk2W63dSSouemoHWRJdVdqNW6ldImkgWOvotmkWmmkaiI3cO8kLWRhPH5BMUQZPOjlLJieqW6BcHvddOSk3W6i','tIVdQSoZ','rSo7WO9UWOxdTCozW7/cQeK','WO1UWPNcOghdKd1o','kmkYWQ3dJrb5kW/cQq','mmk7fxKH','W6ldN0CIW6m','WOddSCkvsLZcVmkwq8o6ycz3','W4BcVCkgt8o5yW','e8k1oh0+WO8NaLlcNvFcRqFdUCouWOlcRCodW4dcGCoFW5ZdMgPhrmkFW6O4a1NdKSkrW5fGhCo9WQzIWOxcS8k7mSoeW6FdU8kWW6JdISo6WQzFW7hdUhhdMwvRrmkMW7FcTSolb03dPa/cTsSpzW3cR14yDrVcGCkNkSonWOaCW7/dMmkis0DmqmodeSkVbHzRaCo2Es0pWPHXkNavbmkWWOtcJgVdPfRcQ34LdCksW6PkWRy9WQddQ8kQbrVdRW','pSkLffGLBmkFAW','WP3dRSoWWQX2WQubWOzVvtVcRf/dO8kxrSoThCo2','WRtdLqvgW6W','WRn5WOVcMeC','xrbJWOe','cYddTSoehq','WPFdVfv+mtf0hmkLcIhdPK4','WOZdKmkNW6OiW7BdHNRdSrCdl3q3WPxdUKxcNdifW5WjW7G2WOFcQ8owgCk+sN8SsNCJW7ddOCosp8o0qCohBaGoWR/cL0a2uwCMWO96DSkJW5JdKxNdHSoCWO3cRHdcTSo7xYRcVwClt8otW53dKmoOmKL8wedcL2CUwtuCFCoTsmozbWVcTYldQCkhiG','W6hdNGldKCoP','WOHVWP0','WOxdLmk6WRupWQ3cMJ7cVq','FIhcNMqI','WOxdS8kyBKVcRCkMsmopBG','wt/dVCoX','uHdcTrW','W5SEwc3cKIe','waTiWQqb','WPhdOmkiwu/cMCklsCoA','WQfkWOVcMva','WPNcOdDYWPWYEaWM','WQJcUmo1W4ixz8kJWORdO8olW4dcISoBWQRdTmo0emoHW4SwW5OrWQ9kwCkbhCk9FvnFDsDrW6nsW7KRWR3dPCkWwHPjafm2WQZdIW3cTJJcI8kSW5yfW6ZdPSkAW5FcOeC','WPVdGmovACo7rt1hW459lGtcMmoHjsqGrmkmWOb9pGfSWRWoW4Lic8oafGhcLCkBW53cLCo+W4zIE8k1W7FdI8o+fGJdQmoevwdcSL/cMmkVguSGENddVCoeW7vkW6FcKCk0eKOEFCoTWRa0h8o+WR/cL8oadmooW5asW6vEW4BdMhn8CCkeW4pcVvDcDHDpeIDjW4SyW4Ghf8oiWPddOqRdPMmVvSkRoSovWQjuzCowWQ3dSfRcSJypW5hcG8o3WOldR8oRp8kCr8kfWO3dTMddSgFcUdnBg8ktlMVcOf5demkovw/cQCoqvhdcNa3cKqpdQmoTWQFcSSopW5tdKbzpW6HOWQiEWQ1WaSoXWQhcTcq3kW','bSkpfNCM','rSoZpmk0d24','yZHeWQVcIG','WQZdT8kkW4LaW4GgtmkzztpcJSo+WQhcK8kOxGyomsHgoY9IpsDGW4aikXC9W57dGxeIuNNcImoex8ksW53cGCoyW78nBK4DWRDFW793dSoEv2ddLmoNfSkKW75/WQNcMCk2WP9rW6RdQmokaubkWOFdMhPUBmo3BSoVW6RdKSkWpNCUWQrgWPCpWOT7AHZcKhisWPaOtCk/W4xdQ8ogkqq','WPGrvmkZW5K','WQ8AW70+W5W','zSkEgJKmnJehka','uCo3kCkN','WOhdKCosBmoKcW','W6VcN8ohmfNdH8kexcq','u1FdNaG','udP8f8oC','WPddM8omACoKgMynW6nKmqFdG8oHiITAtmkmWP0','WOiiC8kKW57dRa','uGZcTrXBDq','WObYWPVcU1RdGtvFmZG','W4TfW43dJ8kWW7W','EIFdMCoxWRi','W5FcGmkIuCoc','W55uW7ddN8kiW6u/vN4FWQynpsa','wa7cNvqz','WP7dHaPF','hq7cNstdQW','WONdPSkvu1NdR8onfCocyZ14dYtdRHJdLSoaW41MWQKrf8k0E3zax8kAz8kxELZcMa1hzGzjECkqvmkeWOtcP8oCW50CBWDRzmojW4RdKWOlmmoaAHdcNmk4W7HyWQGlzmojW4eXW6ZdQqRcSCo+W6RcNCkpbNVdHSk9fmomW60xovNdICo1W6JdJIDtWOldUX1dqCkDAMVdRwRcIbNdLLurW5hdNSo6W6j6W57dO8kDBx3dTCkCWO7dVw5ai8kkDKCwmrZcOmkSW6nyzmoJemo7W49PvmoCmKDFBmkecGtdTbFcGa5SjmoQxCkJc8ktWRVdMmoMjam7ySo2W5xdQa','WPBdQ0fWiZ4','yCkodti','eghdKa','WPSFvmkCW4tdV8keECk7W5xdOSk0','WRNdKCkPwMC','WPNcSsD+WQq','WRBdPSknW5XWWP1gcmkCEGVcKmkYWRZcLCkT','W57cVmkgCSo5pSkXWR97W4TZagHBn2KZWP8gFmkwASoiW7bhf8kzh8oyWPhdJxpdUudcPmkjxIzAW65XCSoaW4RcVrCbW7fHWQSwWR4ezWWLkhVdSCoBrCoOW4iThCk4W54xWQRcKqRcT8o9WRFdPKHddLtcM1VdLmkaWR5RW5JdPSoGW4W/WQy4jmkftmo7lmk0cmkQWQtdRmovrmkEAJLCc8oq','BCkwnZ8w','W7DgkxJcQSksaa','WQxdS8kxWPzdWObagCkqmdZcLSkYWR8','WQtdV8ktvvS','W7zmo2/cJCkhcSoGfSkJg8oKWPRcVG','oSk0WRRdLGnKdX/cKXJdSSkb','ySoXhmkFoG','W5NdOrZdTCocWQO','sYjTaSoFANtcM8kgWOfdW7hdUmofWP58n1RcKCkZrKOsW7BcUrtdIYtcIv1On2BcQSkZeCkUdbNcHuhcLmomq8oUw8ogW406WPGQW61HWPZdQN9OW7BdHSobWRSKW54RBSkQWOakWONcSKddMCkPW7tcHCkEAuv+pCons2ddNSkpnIZdI1ldPKhdQuafWOSUnIf5W6pcMSo1WONdPqaKW559khxcTSkWW6NcOhdcTH/dPeG/W7GXW48ZWROWW5rIfSoTiM9kmLFcVCo6WQ3cSWO6ttLDW6alhYyKW5GlWPpdS8oBW7b+W4frBYbyWPK','qdL3fSofjdldM8ke','WP7dTX9vvW','fmkIWQ3dNsm','WOJdRJnWW6C','wHZdSCoFWQi','W7lcPfO3WRO','WRxdK8oeWRDy','W6VdRJRdLCoVW6rda8o5W5u','WPpdOeDu','WRddOaTWW74P','wSkplJi5','EWvLWQaEWQxdGhC/CSolpWBdObVdPCkasCkLWPH5ESkRv8ozW73cSadcIuVdMSk2ECkfW4ldNJ3dM8o0W6vcuGODdLVdKrTPhJjgWPVcUCkvW5RdVmoIW6GijmoayMFdVXDSW6G/ySoRwCoBW4tcQeRdJdRcOSkiW4/cImonW6iUW6BcTv7cPmk/imk8W58svGibza','WOVdK8kqExG','u1BdKbS','tJL9fW','vhxdQSkXg8oKnmkYnffdvG','CmoqbmkwlW','WRdcQ8k6W7ZdGX3dGmoX','WRnnorbs','WQZdP8kCW7HdWPS','zXH8WRuEW6VcJJuS','d8k4pgG','D1VdJJ8P','WPnrW7hdJ8kRW6K5r2WiWQKE','W7eJsbdcJG','W7ScxIZcLW','WO7dUSkNW49J','xSk0BLvM','WPBcStDpWPzypK0IWRD4EWldKSomsHXwWRddSIFcLSoTB8kPWPH4WR7dQsJcUCkPWQxcIctdTbr2acFcRh3dP8k4e27dIs1MW5iEWRPJW7XnzmkkW5PIgSosob/dKNBcGmozW43dQdJcMdpcHCkeALD3osPbg8kJW79YW7lcICkWlCkhWQu8rxBcHf7dT8oJha','WO/dICkwW6H/','W6NcU8oGgey','wNBdQSk2mSoekmk/o1DEt8kTW5iWw0u','lmkYcvW2','wttcOa','Ab5eWQxdPa','WOFcS8kxWP3dGCkmESk1WQ8aW43cTq','W7H6pLNcJW','W4VdSctdRSoe','WOhcQmkxWQhdH8ovpSowWQWeW4RcPNazh8kSW6qsaX3cGCoUWPlcJSoqW4OPW64Tq8oGfCoRW5/dSdPVbeRcG8kPqcNdN8oArSksWR3dPs1WWRhdRc7dOx5kB8opdGJdT8kIFuSMumomW4NdI8oIoWCEiaifFCoJgtJdQ2ztW4yuW5ahW4O5wJVdU8kqW5/cUmkqaIXIdCkDw8kVw0xcMCo2W5/dQmo1W6dcL8odxW','W5fza3/cPW','D1RdId0+','tYtdQa','WPWEsCkKW6hdTCkbyCk9W5pdRSkU','vhxdRa','W5ZcNGzjW4i','WOOmW5Oqgq','WORdSbRdMCogWPiMWRGrka','BXLcWPtcRa','WQ/dJsH5EW','k8kdmMSR','xmo1W5JdNmoxW4ZdUSoUW7tcRCkYWRicW4fwchlcRqzVWOlcQ8khWQxcI8o6WRTgWO0pW5zyWOjGWPr9W5S2tmkKq8k6vs3dLSkxWRCeW7rNW5NcIMXMW73dH8orW6m1vmoun8oDFtddLgGiurldNSoDfG0TWQqeF8optfFcR0DlyCkGW7RdQ8kLW6xcKmoKW77dTsXPW6LgkSkntSo5WRhdJSoBa1/cLfBcTmovzmkWxmoUz8k8W5tdHSkFBmoKDSo8ySorW6X5b8ogWQpdKcJdHmoVmhpcQMddJ09GxCkWWOK7W4qrWRxdL8kjEeyCrmopW7tcRLiYEXNcMvGuWQWDWQnGwCoUWPWMWO1lqtaKhrhcPSkiW67dRq','hhhdG8oDaJjUw8o4Da','wIVcON4nDcvmW4XgWOxcGq','WQiWW4aeW6xdNundWQVcOrr5','W4mFwbdcKNZdHCkhWROJW71iW4SSwCkts20BW7tcIMJcQanCWOmfWPFcNmoCW7X1b8k3WRRdIbfFWPTqiKddGSoEW4nVWOddG8otWRuKlYSCDeuOWPlcHf83W4CLv13cPrDZWPPIgSkLWQVcUMTPW4lcIZVdJ8kOzcrMW7LrW6bnWReBBWnzlCkDv24nhSk5W6/dUtBcPSoyWQpcGSkMzCoJWOxdLxlcMW','WRdcUCo1W78xoG','WPddHCkGW7e8WQNcNq','W4FcVXidz2vskmkEgZFdKq','W4JdTXZdKCohWQq7WQ8+iW','hmoOoWqN','eXlcJ1Tj','puWlW5FdO8onWQ5ZFmoP','WQStAJNdVq','W4BcQuJdSKC','W5hdU1eWW5/dOLBdJWChmmoVWOecWQFcL8kmW40','tvhdKqua','oHqDe8kb','WOXmWPpcGfK','WQCfW4ONgmke','W4dcHWvnW73dSCkAW6pcRGeDgW','tcz8hmoVmsNdKmkNWPrmW74','f8kuWOddHXy','xenSFmoK','qmo4W6hdHSou','sdddNmoQWRm','W5lcQCkgyW','dHpcUXtdTq','nH3cRHFdKCkjW7HHW7tdThKOW5uGp8kVW4urDbZdMx5WA3OtW65OWRxdNSkes2VcQCkSW4lcTmookSoCqd/cKLzXW6JcSNRcQSkVW7r/rmkjW4FdPZfEWPBdMSkQq8kFW4tcNaJcO1DViCkHW4VcOKyYW6ddVmo8aLFdRdvJrwtdNmoWWONdU23dPJe3W53dUmksWRhdLx3dHYldSJT+W6BdQbpdNSk3EtKLWPtcPa','W7ldNq5bW48QaG','WQtcQCoJW4Cd','rCo3l8k1cq','WO3cRsXpWQWg','5BEr5Bcz6jsK','W7iZwa3cPG','mNxdRCoFnq','W5tcK3tdGwVdR1KIW6i','vfRdIW','tmoMWPPvWR7dO8oFW5hcPfyqmW','rCoJkCklh2e','W5FdVuygW4xdVgRdJau','WRuexmoeW61ErGHcwa','W57dQLetW4xcTqNcJaGVpCo8WQ8jWQ/cN8o3W4VdPmovW4vUvmkLWRLIq00Ltb0sw2HNWQddGSo0WQpcQaNdPCokWQK6W4OfBvmRBCoDW5jDtuLMpuJdM8kvx8oqW6JdUmkcWOD4xY/cG8kmAatdPmoJnCoUW6FdMMxcQtFcJsSDW43dTmkFBthcP8o7sSkcqvFcGCoPdZS8yCoPtmo+WO3dICkeW7q','WRSeW4GGW6q','DmkXWQhdKXLIda','rWVcTGb9zG','W77cQvpdUey','5Agb5yEt5l2/5Oo9','cCkAWRJdLte','WRddTrXHW4O+mCk7kSkDW5m','WOBcOCodW6Oj','W5FdVve3W4/dV0m','W5WtBqpcLs/cHCogWPu2W7TpWOKRbCklahmUW63cJgFcQXT6WO9eWOq','W5RdPatdKCof','WRrqWOlcGx4','mh9QWPfSWRRdOKndmGFcGmkTzs8ZWR/cKvCehSo3WQv1W7VcHmo/ASogW71qxCk5dqD1zHtdN8ozk8ovWQa6phDLW5VcPCovW5ZcUmkoWRdcHrC1W5/dRLTWdsJcSqjVW6ZcGHRdNd/dVHFcKKtdH8kDsSklW7TPnSo6W7GTlv7dVchcT8khW4KbcmoLWOaow8oNWPhcIwG8AvNdJJ5RWP0dW4ldH8obd8knWRZdSbJdRmk/qhb9WPpdQCk3WQiDW43dGx/cPgtcQ8k3ASoqjSk0W6ael8oHWRldLIysFq3cSmkVW5O9W75wzHJdQmkqWRJdHSo1DgtdSCkXiCkxAW','W7ZcQmoGe0y','W5ZcGfFdK0S','WRyZC8oQW5K','rrXCfSoT','WOtcR8ke','h8kKlNGQ','W4JdSaZdISouWR48WP8t','WRz0nG5q','WOhdISkL','WQKoW4qkb8kAF8kcWO9xBSodWQZdHa','g33dHCoXftHY','D0xdVJiS','WQddVsTcW5W','pSk2ef0Q','WQhdTSoyyCo5','BGHMWRtcUa','W77dVIFdHCoLW7TVfq','W47dKsBdOCol','WPRdRLDq','gSkIofK0W4vT','yaPtWPNdHSolWPP2ACol','CaJcHfqh','WObYWPVcU0BdGtry','W7hcOmkrwSob','W5/dTLyVW48','AbxdICokWPXElSovawiKWQZcJ8kIWR1DW7zdhG','qSoIW77dRSon','W57cRSkurCos','W6ddUJRdP8oVW6vkhSoh','WQStW4KrkCkAtmkvWOH8Amoi','WPrKWQ/cMhG','ggddHCoBbHz/uCocCr3dTG','W4hcK2/dLhZdRf08W7qhrCoI','WPDOWPxcVfRdLtvy','W4m+xcFcGG','ug7dV8kLkSkYCSoZohDixCo3W6K2qq5mWQekWOfbDJzPn2BcIhJcJLGplmkrWQBdUeq8W7/cKCkvW6TGpxThWQ3cPCkqhhBcGSodWPlcONZdHSkNk1BcRCo0','WPFdNeG4W6pdOCkOW4JcTZW','W44zxG/cKWVcJ8oBWQu4W7fh','WOhcQmkxWQhdH8ovpSowWQexW5FcRsqfaSo3WRGyxGlcMmo7WPtcGSojW4fYW6LStCkGd8kXW4/cRhrXsKdcICk4bJhdJ8oUr8kuWP3dTZe6W7RdSsJdPZ9iz8oifr7dQCoJi0uNhSouWP/cN8k7A3P8qg0rfmoKuMJdUw4kWPOuW5bkW4eUv3ZdP8oOW5RdPmkquNKMhCoDd8k/CXlcKmoXW5RdQ8o4WRxcMmohc3ytsCotW4HdBqtdV8oscColpW','WQC5W74DW4/dVuLeWOBcTa','W4dcSSk3tSoa','WQPXfdnb','W7n2igZcOq','fHb0WPtcGSoIo8oLW4W','WOddNmooACobgW','wCoUW4JdIq','W5ZcJCkvB8oi','xgJdQSkIemoMo8kZbgPCsW','bCkXWPZcNSkv','nSkKWQddKq8','W4ZdQZNdHCoq','lqhcTrFdQ8ox','W4hdObZdImocW7DGW7KDlKyAW6reW43cT3ZdItHjpCkiWPjkDmoGWRhdKb5jwv1nW5ddGmoVWQhdKhJcJ8k/W5fgAXisW7rvWRNcU8owz8kzDcGeD8k1WPxcOaRdTCoFdSkgWOWIuCoJW6zzWOFdHCkLWP9yBYTTmsFcLmo3gGBcO2uIjMRcKmkiWQqHrgNcIKDGue4Hr09uWOtcLbbzWP0AWRC/','qYtdUSo3WRS','WPpdPK0','f8k7j2CzW5r7rG','vSkLfdy4','W7RdPJRdOmoD','zaLqWQae','WRhcSCkTW6ddHupcISkTWOVcPSkTW4/cTmkowbFdIIniWQ7cGmoUiYddPGVdISkVnX5FW4WCbLlcQG0hWP9ZWRiPW6DgW5GLW6xcOchcOGGnWQRdTCkzW7ldOmk5qmkHa2HCWQHblCkeWPFdSwJcPSoYW4zWW4vuW6ZdRSoKb8oWWQnjW4ddPsNcG2n6W5tdICkhqx7cMgtdRCkUmSoVWQpcGWRcImkVWOxdSCkZ','WPr1WO7cGwFdKW','mSkLjuaC','W4XpWPagtSk0','xIVdRCo5WPn/eSo1hfC7WPZcQ8kt','AshdU8o3WPO','WRSoW7SsgSkeq8ka','oSk0WRRdLGnKdX/cJGu','tuVdKq','WR0PW7qjW4xdGKjE','fCkctgL5WQnJ','WRhcK8kpWPpdGW','WPBdU1Dbig0UqmkSaJVdRLS0WQVcImo5mmk5WQuxW6HdWQ0emK7cJbHWf8oIW5iHW616WQz2W7RcHMJdPSkHWO/dMmkuWQyNumonb8owWO3dKmoRhCoNWQdcVcnPW7awWRhdKdtdJ8kTWR/cLmkbWQJdJGr6iSoDh00Nf8oYEXD9z8ougepdL8ouWRq7WQZdQ8o/W5v5imkXmJdcV1yJWQpdSCkeF8of','W49yW73dICk6W7GBv0y','rmoMWOj1WQtdTW','WR8zsCo/W5ziqczorX/cNW','WOddSCkvsLZcVmkwqW','WPdcPCoVW6SY','W7RcQ8o4gLK','WO7dS8kfW5Kk','B1NdQLxcKG','umo4kW','WQBdHCoXWQnB','zJRdKSoXWQy','W4NcJqvgW6hdPmkuW6ZcQaiacMPM','WP/cLrvVWPm','thpdPSkWkSo8pmkXia','W4ZdPHRdL8odWOa8WRe','WO7cQmkhWPddTq','qSoOW4NdM8oNWPNcOmkVW6W','WPtdUfLwga','lmkYaumNuCkcF3W','oaJcRaJdL8obWR46W7VdJN8GW5W','phL/WPzEW7FcRb5ldbJcHq','lmkUd0eAyq','W6OrvfijysmmW5xdSmkHW7K','WPhcSJz0WRW','WRpdVqTwEa','WOXMWPZcI0W','W6hdTsRdJCo1W61daG','w8oZomkIjwHjWRVcMg5as8ok','k8kIWRRdSGzQ','vCklyNzb','yCk3ALrdWPL8WQJdTxBcKb8zW5Lsy8oO','W49oWOS7','WPpdVeq','W4ldV1yiW7RdPLxdLW','WRZdLXjpBq','x8k9Eev6WP4','CCkfhcaDjY4eoLG','pHiAeSkeWOiuffNdRSoiW6u','W7/dOWJdKCoP','W6JdPmkPWPXpDmkNWOZcOmkgWO/dNq','c8k0oea+W5i','WQRdNuf+iq','s8k5Fv9JWPHWWQ7dLetcJbfh','BKPB','q03dKr8FW5hdPa','WOddGZXvva','m8kdWR3dHqW','WQhdSCkmW5zbWR9Aba','WQWwrCkvW7S','WQPncaXrCICkWPNcO8o5WRefmCoSW4zPWPddOSoccSoir8o/jCorW4BdR8k/WQdcT8konmk9hCoHW58KW7b7wSk9WPCZWQeFWOLUW5PcWQhcOmkdWQVdId3dKJ5NqmovW6fBimoAW7VdOCoSywybWRFcI8kJDcntWRVcJSoWuNTYW7nztCk/WPXAaSkIyYuKWOxcP8oHW4vBs8kpmxxdSGldKSkrtXJcItmgWPZcQCknW41iW7GfW5VcP3L/ymk6D2pdNG','WO7dVuPlnHLGaSkJ','WOC2W6qfda','rsNcRMORwZzfW6q','WQOpW54','sN/dUmkGnCo8','WPBdGCkGW6OKWQhcMJi','yWrLWP0EW7G','WPFdLCovEa','WOufvmkDW4ldUW','B1dcPLxcK8opW6r7W6lcRc8ZWP9HlCkWWO4oAuxdLJLMoYCaWQK5W6FcJSozwNBdTSoLW5JcUmkEFSofb2ZdGe8WWQRcMItcTCo9W604uSkrWPddVwiFWOBcNmkLvSonWOxcNq/cVaSIC8kIWOBdSXaQW6VdU8k3bLxdTJqZx2xdN8oPWORcVJNcS309W5pdOmktWQ/dNd/cLYZcIwC/W6BdQv/dNmk1','vCoXWR1TWQtdSa','qttcLgq8FdLp','WO5ZWOpcQ2W','nSkKWQK','WRhcOSkBW5NdPG','z8k9yuH7','5RAh5yQv5BwS57MO5P6a'],...(function(){return['yvhdRWy0','W5KoxXdcVIxcHComWRm','seD4Cmo0','W5PvWOGNuSkK','vdJcS3K4FcnrW4jgWO/cKgBcKXe','w3xdPCkXmmo8nmkZpKDvxSk/','ttddLCoWWRe','WRtdTSkkW7raWPu','W49EW4hdImk3W6m7','zq51WQldVq','WQ9kgW','uCo7hmkLgg9pWQFcMf5IqSoc','W7pcJmoDdvNdVCkIwdFcRSkCB8krDCoX','WO/dUCkNW41F','WRJcPSkTW7NdGbddKCo7WRpcSmkMWPJcUmk0sG','WQnAcbvuixXC','W51kWPqNra','WOdcR8kLWRJdMSkgySkr','WQFdUsTNW78Zi8kGo8kxW6ZdQmoE','WQpcGmoOW70J','WOZdQLbepYm','6l+M5yI75PE+5OMC5Awj5Q6H5PA95lMM6zM/','WOpdGCovvmo7ga','cYNcVCoMBSk6BSkKkgv/Fmkw','WOVdVCkfDLa','rdnTiCoepYVdVCkeWP1h','W5FcQ8kgA8o8BCoQW6LhW4nXecb7ia','ECkseZaNoG','WOSmW4mpba','WQPncaXrCICkWPtcSmoKWRPrlCoXWP01WPRcV8oDe8oDqCoZpmoAWP3dQmo+WQ7dT8kuBSkTqCkVW4fQW7PXs8o7WPKZWPqeWQ9gW4LzW6VcSmofWRZdMwNcNd1IuCkDW7SqBCkjWQJdP8o7F2jtW6VcJCkcsKS8WRNcJmoOxd99W7Lwgmk5W5GkeCkOj2vvWOxcQmkIWOGBgmkBthFcRLlcHSkzgXZdMJ0kW43cQa','W6VcJmoCovK','WQ43W58Xda','ufddLHeFW7BdTa','WPpcOdbmWOqfDa','BYzveCoj','WRhdNSotWRHCWOO/WOLnzX3cIa','WRhdOqzH','W57cVmkgCSo5pSkXWR97W4TZagHBn2KZWP8gFmkwASoiW7bhf8kzh8oyWPhdJxpdUudcPmkjxIzAW65XCSoaW4RcVrCbW6TVWQrkW6DFjLTWyhtcO8kxamkXWOr3rSo+W7KgWRxcHh7dOSoWWR/dPubqwGBdIvpdGCkDWQnKW7JdTSkKWRrSWQ46i8katSo6kSk2aCkPWQ7dRCoqqCkABJ1msSkcWRpdKmkciK9uWRqaWODlufLXg8oZWOhcUHO2hSorW6bqW4VdL8o7W5frW6ZcImo0W4lcLM56qqfJWPhcOCkJW4i9FaToc8kKWO/dK8kFWQfFcMq4odldMa','W6VcMmoAb0/dRG','oMD/WOj0W4ZcUa9edb7cI8o3xIKPW7q','DmkNlJug','WOZdNJ9hW7i','EmoDWQzFWP8','W5GFqXa','W5ZcJqj0W6tdPG','WOVdVWL2W78','WQ9weWvM','u3FdSCkehq','zJ9OWQldVq','W4yyqG7cMW','yLDBCCoDW50KnW','fCkUoee4W5zJyvhcMvdcVG','WO3dQKjdmd8','vmoGWOTUWOJdR8obW7pcUq','iSkbWQFdJIe','W4xcRCkgt8oJFmoqW7L0W5O','WPpdIXPBrq','WPpdHmkVCva','FhddMSkNmW','W4pcSSk7ESoU','AH7cGXH+','WPjLWPtcQhhdHHfz','ug7dV8kLkSkYCSoZpgLhrmo3W6K2qq5mWQekWOfbDJzPn2BcIhJcJLGDn8kzWQBcPuyOW7/cNmkjW75YyxiqW6BcPCkBtZ/dHmksWOVdSNtdHCkMDrZdU8k8WQhcGxBdQmolW6VcQMbCuLTlDf5OtetcI8kLAs7cTCouAu3cPrBdVs5GiMNdSCkAvmoNyh3cNZVdGSovo27dQCoyW7/cUW','EY5aWRJcTmowhSoqW7z8qmkPW73cQmkXhbxdN8o0nmkFumkLiSkd','WRavsCoAW5vcxXnZuWBcJG','te3dMaiu','repdHIyBW4C','EY5aWRJcTmoAhCofW6P7sSkMW6pcTmk+erddMSoQl8kjuCkK','E1fzAmobW5e','W5FdJ2OaW74','WQCvW5Wwg8oxaSoiWOzrCSoaWOpdVM/cPxXsW5RcL8ouWQVcUqn5xaqahCkpW6XtW5i+W5jjW4VdOrzictWxW7vbW4zoW4S/qKpcTc7dTCk4WOCJWO5oACouuLCsDSokDmo3uSoqeZJdOX7dG0TCiM5MEN99pmkIWQhcVZPPg2PVWOWgi8ooW6GYh2G9dbPsWRiKW61br8kQW4BcTK5pfW','W5ZdT0SeW5hdQKJdHcm2oG','p8kYWQJdMHT+hJpcTq3dSq','qJvTg8oAos/dJq','W6RdNbpdRCo1','W7P0W4RdRSknW4K3EgeUWP07hq','WRC4W48uaG','sJH6hSoznd7dHW','q8oQWPPWWR3dQCoaW6tcHf8','rSo3k8kJlwjDWRZcIvrD','W6Hgkx7cP8kb','WOZcSSkv','rSoImSk2','WRpdNCkIW44O','xCoIkCk2hZWwW6hcGf1fr8kiWOVcSGBdJbyfE8kWW5ZdPZ/cLbddIsOtW7rAW7/cMmohW7rIW6pdVbbkWPxdSs/cQSkuWP7cT0KUWQJdJSkBW6XubZ8GrGqSsrFcUvm1W7itBCopWRjxW5vCWR0tW60XWPBcNSoGW4ddHSkpWPxcU8kRW5WGW7eCWQRdOSkRELJcKmkDW5uNWQrVW50cWPdcN8k7W5yjW5RdSa','xWpdSSo8WQu','AqTv','kM5TWPfaW6pcOGHk','WRBcQHD6WQW','zSoxW5/dTmou','CaL3WOpdOa','WO3dKbjWAq','pSk2cr4','vdJcS3K4Fcnr','W4xdUdFdN8oEWQiRWQu','xZNdU8oGWOP0','kCkYWR3dJYPUfalcOG','W4XiWO0XwmkDWP/cMSoj','W4xcOmkDCSoezCoZW7u','WQ7cSmk1W57dOG','W4NcKNpdLxq','BajqWPtdICooWP4','WQNcOSoLW5CC','s1BdPqmR','uqvJWPdcMmkUFCk+W5LnDmkpWOxcGSkjnx/dPmogfCkQyCkCaCkZWOmRWPlcRCkrW6ZcHGuecZxdRmkditxdQmkfW6rummk7zNnHvK9XWOOzWQ0pWRhcV8ocCbFcUmk6C8ovfCk0WRpdNZtdISkIibNcRmoulmocphWsW58mr8oTF8othSkuDGLyW4pcN8oBW5b+W4jRmxujj8kMW7/dN1xcHmkcdCkCideTW6f/wCkpWP7dHmo8emosW7KdWO8gvSkqW5CMkGW3WQe9WP0+W5/dT8oHW5LeW6a2WQZcMq0','WPNdPLvubZ5ScSk1','WPBcStDpWPzypK0TWQD7AaldKSomsHXwWRddSIFcLSoTB8kPWPH4WR7dQsJcUCkUWQ/cOZlcUGbutdRcQ3/dQ8k+cYldNcD9W5vhWQuLWQPdnCozWPW7q8kkFfBcQJ3cGSknWPJdUMlcIMRdIComqqb5msKqtCkHWQKJW7tcHSoHj8ouWQrVeNBdLqVcRSo8vSknWPJcNCoaWO4bbYGldJNcUHWVWRtcQq','kCkHWRNdTZ8','W7RdNwSBW5u','WQNdSmkqW5Dj','WQyWW74nW4q','WRjmcdfrlW','W49vW7hdI8kwW6G','WQHdWRtcThC','FCkdcsCGAgXjm1bNW6uQzSovWQpdISkvmSoAWOHkumkgb2VcKmoEW5WqWQVdM8kpWO5sz8oGWPz7W7FcLSoEg8kthbRcJSoEySopoZafW6DfcmkvWQuJtmojDcldPI8BWRTNESkzWPnefSoAW7ldImoEyJddH8kjW4a7W5PuWRVcIauqFvFcKseytCoTW6rQWQ3cOMLsifWGqaRcHmoQWR/cP8ouBHbEW5ddQazpW7K/f0G2gCkgdSkQg8oYpeS4W6BcRu7dISk6W5ZdPtiYwJyOW53cGalcMfRcLrVcV8kUW5JdOI/dPIJcGCksBSouW6tcLSkTtSoCwH8evMG','mCkJbvueD8kczNWZW7izW7LgW7Sl','W7PwWPLxwCovFSkKWQrpE8o+','W5jsW6RdT8kQW68GELOBWR8Lmsf0','WRtcPCoSW5CxkCoTW4JdUW','nH3cRHFdKCkjW7HHW7BdUxvIW4uMj8kSW54blb/dIwr1FxjsW7HJW7BcKSkde2VcSCo4WORcOCoCySojxhNcNKDgW67cH2tdPSk0W75IbCkzW6BdSZfCW4xdH8oXf8kyW4JdIGRcOqvQDmoXWPVcOXbLWRVcQmo9uvNcVt03qwpcJSkJWOVdTw3cTJfQW5FcUSovW6tdHxZdQZtcHM5WW6BdQXVdMW','fhZdLmoyat9/uq','W6ddRZ3dKCoZWRmjxSoyW4TPW43dNSkhg8oLkmowBSo3WPLNWOC3d3BcLIxdSN4fWPddRGCKWRxcL3JdHLjcW6xcOCooWOGpW4OYc8kBW5OaaaOzm1nEW7JdHhxdUq','zHbiWQix','lqBcTWi','uXhcTGK','5P6d5yEN5Rka','EWhcNKam','kmkJWQhdJW','c8kUp3KpW5LHq1ZcTLBcSG','W57cMrvGW7e','l8kZfhWGyG','k3TYWOHR','WPldKmofA8oTdgeHW4y','W4NcNCoKihm','z8kceti','EMRdSsGY','sHL4WPdcPCo1p8o0','W5T+WRWtwq','W4/cVCk6E8oR','WQZdNCocWPfz','W4BdSuWnW4ldI1tdGHu','WQ4fW4WudCkExSkUWOG','nCkwhu8d','E8kycrSMmsGQnKDLW7S','WO9vWP3cG3K','tvpdP8k7pW','WQldRmkFW6W0','zXNcVMG/','ufFdIYyjW5G','W53dLMqWW5S','teJdGCkVna','WQ4cW5WphSkewCkE','W5DdWQSFAW','BaXgWP7dU8keW5G7ymodW5hdPmoxf3P7fSodl8kGWPlcMbivW77dMSkqW57dJSkSz8osWRNdOCkzbG9lbwG2WORdVK3cImkLWP3cGKpcI8onjMVcHLJcP8oSW7r/W5ZcSh7dSqHPW4uJwCosqComW4GCWR0OlZJdTCowod7dPKvhhmoRDCkqFSoLd8kQa0ldPZRcKhxcQmo/buRdOXFdMJRdUcnUWPKnW5i5lf0kW4ZdV1hdPCkXW6JdTSoveSoKWRJdVduJW6VdJmkfW5yEgCkWnmkxAIRcR8kQW6KwW43dOxeuW6lcHvBdOSkNWQBcLmoNWO4VWQ10W4O','xCkTF31LWO0','xSkTAfm','F1Xz','uSo8WPPuWRJdPW','uYhdImoeWOi','WQuptCow','sfBdIXSjWOxcVW58W5y3oSo0W48Do8oHvSorWOjhbK7cRrPaW6FdMsXpWQBcPSoBeGq7WP4oDmkSnxZdUmksW4fNeCovWQCxjbjGWROfW6DOWPxcO8obt8opg8oFWQXitmokemk4gSkjdr5IxqBcQ8oVxmoZr8kpW4a/xCovkI8dWPCLWOjBWRj7WQlcTCkFWO3dImoGiSkZcCovfSkSWOtdLmoHjXpdUGW1n2ZcR8kdW5ddRSofWOrhW5/cRbhdOJK5W4OYxtPKpmoxu0ddH312W7BdMmkDFCkYtSoCoaVcNW9cgWZcOXy3gGZdRCkUomom','W6/cR8oPW5mkpSoPW6VdVSoc','WORdKaPZtLK','wI/cVvCQ','xmo1W5JdNmoxW4ZdUSoUW7tcRCkYWRicW4fwchlcRqzVWOlcQ8khWQxcI8o6WRTgWO0pW5zyWOjGWPr9W5S2tmkKq8k6vs3dLSkxWRCeW7rNW5NcIMXMW73dH8orW6m1vmoun8oDFtddLgGiurldNSoDfG0PWQCeASojvu7cTu9lFCkGW7RdQ8kMW6lcLmoMW7/dUcTKW6HkkCkmrSo6W7NcKSkgaL3cGWtcSmoBymk1s8oZDSkmW7NcN8kqBCoHD8o5yCorW6L5d8ocWQNdKhZcJSkRAIZcQwRdJ1f9xCoOWQm1WO5y','xCoVW4/dGmorWPlcSmkY','ySk0fZec','W5roWPa7tSoPW5hdMmoaW7hcOSo/dJNcO2LKW4PLFemwpmohW6SZlSoIW4ZdHgFcOCkEvmksW7VdN8oyWO3dKCkxssPIWQpdRY4KW6bYWR/cSmojtwCAW4bkgK80WP1iWOVcNmotW49NW6JdQeybvbS4smo4dSkpjdyzW4b/W7ZcMmkhkmozW7BdLGb7ga02W5L+WOZcSfVdTSo7WRZcKCkjEx1/WPmiW7NdTmoyW6tdHqBcPWqkWRxcTCkMoCkFW4qKcX1KWRNdOxFcPSkhW4iAW5NcUweAWPldHtzBW58KWPxdISkixmorfJvSW5RdUmkEWQpdNSkelaW','W7ddKvCuW50','W7TalMlcVCkCeCo3nSkBhmoGWPS','WRpcUmoUW4i','W7TalL/cSSkfaa','x8k9E19KWP5jWOZdPee','CWbHWPRdP8oo','WPtdKCovvCoNc2ynW5b+','W4mptG','EKxdNmknbSoecmkFg0XTBCkoW4KtFNr8WO0OWRjYxWO','o0XDWOPY','WONcLmo0W5OH','WQVdOb50W7HGESoMjCkhW47dOmoEAgldIZrtq0GJbmolbY46fhmWDZj0bs/dQ0WAWQFcS8kkW6FdPJb2yCoMlCoLf0BcRCkxWPNcS8klCfm6W7OOWPVdPq/cL2zqW4/cRuVcI8o1W65zWORdGqWndmo2wZBdT2PYWQWDWQmVfmokquzkrMjSrrJdRMrGn8oSWQubW6fpimoNWQddTq','W7/dOWRdJSoTW6rjh8o5W59TW5G','owHQWOHPW6NcUru','eexdV8oSgG','WRpdP8kFW5S3','WQZdT8kkW4LaW4GgtmkFDJBcG8k0WQ3cJSk5xqyomwXmjdz9oMvSW5ObkGqGW5ZcII8ThJdcK8ofrCkdWOdcJmouW6Oaq0XBWQ8jWPiRrSordJFdHSoVq8kSW79OWQBcJmoSW4HdWPtdR8oexbqrWOldNhmQoSoYk8kXW7NcI8kHDW8SWQKwWOzcW4STlxldJYaDWPuQsmk7W4ddQCoakGOd','cLpdMmo2eW','W53cIqDKW4NdTSkvW53cOH8h','gx3cRSkRW7qLuCoSe0qRWQRcQW','5PEc5OI05AA45QY45PA7','vJtcQwm6zYjlW7vgWPm','WO3dISkWW7yoWQJcJcy','nhf1WOTEW7dcPa','hmoOoWqG','W4RcMHb2W4BdP8kCW43cOH4','WO/cS8kpWR3dM8kyrCkqWQSiW5C','WRjlfqzhbMLiWPS','WORcNaPqWPC','WO3dU0jfjIq','WRWKW7eFpW','qmoLWO96WQddJmobW77cPN8ljJ3cOCoxWPFcKG','WQm5W4W','W48ztrFcOdhcI8oAWRiDW6jn','W68/vqFcLq','vcVcT3W3','jH3cRJ3dMG','nSkObfqR','ag3dScD4iqjLW4r5WPNcJG','qJ7dQSoIWRaQtSkUneCFWOJcVCkiWP85W4LPzmohdfddHtpcLmkdpSkNFmo8W41/W4RcSNzcW4zlWPjWWRm8W51HyGVdQSoXWOVcICoJyL98W6RcQM/dPeJdRq9WWQFdGSkTWRrbW4pcHWzha2/cVCk3WQ45hNZcS8kjvbFdQvTsW4HHWRhcNYvZW7NcHmkiW6JdUSoyW6bYA8k9WRFcTSoYWQaitexcLSk6W4tdHW','WR0IW4qEW6tdJeTi','mHpcSq3dO8odWR4','Da1gWQpdU8oz','WQhcU8oGW4aae8oTW4JdRG','WPxcSSkSW6pdPW','WRjydG9haLTQWRa','WONdKrfo','DSoXnCkRaG','lqlcRY7dHSoaWPSNW63dQq','CmkzcW','WRldIIP7Da','mSkNghy6C8korNaFW7mo','W4RcIqvG','WPddGsfjrwfDsehcOt49WOib','r1JdJaC7W4/dUq','WOldHdrwEa','WRZdVCooWRTU','WR0xW58UiG','WQedsCo+W5bm','wCkGFW','WPyCW7KcW4C','WRtdNSkYW6KS','WRBdGSorWQbgWOiXWQS','FCo5cCkdjq','Errrb8o/','gmk0WOldJt8','sYVdNmoJWRO','uYnTp8oFnW','WR0eW5Swn8kaxSka','5RAs5yI85BAA57M357MI5P6sy+AkNEwlN+EGQEIUJa','WOCLW7WudW','WONdLrjxsq','W4xdM3WAW6e','EZvGWPuv','BcVdTmoDWQq','ww3dQSkNpCogpmkXnq','t37dJSkEkG','WPVdTmo1WQ5t','W5rjW6RdI8kSWRzKeuaEWQWADtTZWQyKCJGADmk4WP7dLGNdHmoCfXO9WQdcLcRcRCo9WPZdKfTWotJcQZZdQwJcO8oHWP8uW6xdMsSnWRddTJ02WQnXWOxcPCkt','DXLeWOVdICoAWPnMACokW4K','gCkjguqe','zrr/WRqiW63cPJW','yZVcJtrnxCkNnKddLq3dNdqprCofbSkKWQ4','WQ0iW50fmG','lmkYd0e','W45FWPC+uCkN','W4/cMafTW7e','W6ZcTYzzW5FdNmk+W7VcMcaHle9nA3KQaGK','W4BdReWzW5pdGuFdJGC','W43cJ3NdNNy','sGv4WPa','W6ddRZ3dKCoZWRmjxSoCW4TGW53dNSkhg8oLkmowBSo3WPLNWOC3d3BcLIxdSN4fWOldTq8KW6JcLwZdHL9EW7dcS8ksWOfyWOeYamoiWPfdbrriyfnCWR7cKs3cSCodW77cR8k0WR3dTSkzWO3cNgzKW4hcO8kIE8ojtelcUWpcUcxdKCkalgmIa8o1W5aVWO3dSCkXWR8WwmkqcCkcnmofWOfxbgZdRrRdTCksW4JcGq','WOZdNSkXW6a6WRZcGa','tcRcGSkftg8VtCoOsrddGbm','tr5ZWOhcKSoCm8oIW7ffFSksW7ZcGSkxjIi','WQmeW44spmkeqmkc','WOrlkWra','WPVdN0aWWRNcQSkIW6ZcJXStnG','W7pcMCoAoK/cS8okhIlcOCkGF8orECoXW6KRWR/dMJBcPGSuW7tdUw0HWRdcPSkXpSo2W6BdGCkZCXeQW4VdRtNdO0CEz2hdPCoJWOBcJmk/sCkdW6/cICoVW7W2WO91WRbxwSoGWPdcTcldNurHW5XGyhr1W6xcQhaBW5WXiMvmEsevW7ddLYGlWOxcJSkAWOf0bc8','WPBdTufleIDO','pSkIbem2DSkyw30','pCk2oMOc','W4CesW','WRzHWQZcOvC','xhVdV8k0','WQZdT8kkW4LaW4GgtmkDztRcNSo+WQhcK8kOxGyomsHgoY9IpsDGW4aikWuMW5BdGsWGrNNcHCoysSkaWOhcImkpWRqnzr1wW7rAW6eMxCoEvsBcGCk/xG','ySovW4xdQCoM','FN5dBmoF','WQtcRCo1W5m','W6NcMmoa','qJ7dQSoIWRaQtSkUovqcWOpdQCkuWOjIWPvJoCoyfuxdGZ/cJCkizCkGpCoYWO1LWPdcOIOmW5GfWPH6WQj6W4vXvGRdRmorWPNcLCkPkuj6W6ZdQ23dRe/dTHLUW6BcNmkJWRupW5RdL1iAxX3dLmkfW4aXtdhdOSojauJcTW8aW51TW7dcLta+WOddKmoqWRRdTSoyW6fGj8kVWRdcOmkoW7aatHZcM8k1WP3dJ8oQW5WfnSoMdIhdMWJcNNqjkSoM','WQPdhGzJoge','WRpcVmoTW5Sq','W7JdRJ3dRmoZW64','WQH3dGvR','WQ/dHmotWRLAWO4','WOldOqPvsW','qdL3fSoyottdMSkz','W5hdKbZdK8oh','WP7dLX9jFLzqu0hcRWK','e8kjjeiU','rZ7cTguIyq','W7BcNSoj','W6ldRJhdJmoD','W7pcI8oidwq','WO7cSdDYWPyf','WPFdHSoaBSogcN8kW4D1','WQVcOmkQW6xdMG0','xX57WOZcHmoJ','WQzqgHPhoM1lWOO','WPldKIvWW58','WQFdSqHXW6W','sIXXWRFdIW','WRtcTCoXW5C','WQ8PW58hW5ZdHfju','W7vtp2xcImkuf8oQnSkBhmoGWPS','WPBcOYv4WR0','WR3dNmooWP19','tZj6WP/dMq','W45yW63dJSkZW7G','ybbNWRuSW7VcIYO5A8oq','5yAg5Rky5BQ36zcQ','WOLZWPtcOM4','W5GFtrtcLdu','WRFcQSkTW5ZdGXRdJSogWPhcO8k4WQ7cTmkowG','r8oae8kufG','WQNcRYL4WQG','urBcSXz3x8ktgg4','W5xcICoHWQPlW7ZdMq','ymowWRLbWPtdJSo7W4NcKNCSbahcRmoMWQNcTJ0NWQzoxmou','W7tdRgKGW78','W4xdSqBdN8ofWQu','Emkwbq','sSkDrwLS','WPhdLCoeumoj','rZDTeW','W5jsW6RdT8kQW68GCKexWQeD','WR4/W58JW5NdIG','WOddTZ9rW40','r8k1bc8I','uGZcTrXCCmkFea','WRZdOW52CG','ef3dNmozdq','W57dQLetW4xcTqNcJau8imo3W6ufWRlcJSo0W4VdPmovWOfKs8k8WQzLaue/rrWgqx0HWRddGmo0WQJcTqtdOSosW6mpW40yw2CPi8ooW7raxfL5mbdcLCkdsmkqWRhcR8keW4rVw3/cI8kpsg3dKCkeC8kjWRxdHwVdPg3dMsqAWPVcSSociZRdTCo3CmkddMRcJmoUug8/ymk7hmo8WO7dJmkaW7ldG8oqqWfAWR4TW7ngcSobWOqOA2bAWQSG','WPBdGCkGW68xWRG','mSkKWRJdQXPMhGG','WRlcKbD9WQi','W5VdOH/dSmo7','lmkVWP3dIXP9','tIv3hmow','rmoMWOj1WQtdT8oNW7xcOKS','W49oWOu/smkG','WO8oWQJcImoOWR54rLamWPS7fa','WQ7cQCoKW5yNmSoGW4NdRSomW5dcQSkEWQZdTW','WP3cPCktWRq','v8oUW4JdIq','WOL3kHLJ','W57cNqvmW7VdTq','WRavsCoAW5vcxXnYwbO','FHbKWRxcVW','WOeFC8kKW4pdTCkbuG','uY7dI8oJWPK','FHxcKxup','W5RdVaFdImo/WQWIWRm','WPyFtSkJW4xdRSkAvSkMW5FdUq','WPBdK8koyu0','W4ldNvWUW5i','rI/cQga','W4iftWZcLclcJ8oB','WQioW4Wd','WQ5dfXzJoge'];}())];}())];}());Il11l1iI=function(){return I1iili1;};return Il11l1iI();};i11iIIIl();if(mode){const iiilllI1=li1liI1i(0x513,'Y0xe')[li1liI1i(0x5b4,'%MBJ')]('|');let llI1IllI=0x0;while(!![]){switch(iiilllI1[llI1IllI++]){case'0':activityUrl=li1liI1i(0x5a6,'!fqq');continue;case'1':activityUrl=li1liI1i(0x1ef,'ipJ8');continue;case'2':activityUrl=li1liI1i(0x5f6,'D*%o');continue;case'3':activityUrl=li1liI1i(0x2a5,'*$%k');continue;case'4':activityUrl=li1liI1i(0x233,'OWMm');continue;case'5':activityUrl=li1liI1i(0x2b1,'Vw))');continue;case'6':activityUrl=li1liI1i(0x1f7,'Yzhx');continue;case'7':activityUrl=li1liI1i(0x5fe,'!fqq');continue;case'8':activityUrl=li1liI1i(0x5bb,'WE]U');continue;case'9':activityUrl=li1liI1i(0x33b,'!vl)');continue;case'10':activityUrl=li1liI1i(0x472,'iU2q');continue;case'11':activityUrl=li1liI1i(0x395,'dD$o');continue;case'12':activityUrl=li1liI1i(0x28d,'7xR*');continue;case'13':activityUrl=li1liI1i(0x521,'Dt67');continue;case'14':activityUrl=li1liI1i(0x349,'WE]U');continue;case'15':activityUrl=li1liI1i(0x21d,'Y0xe');continue;case'16':activityUrl=li1liI1i(0x39c,'$A7*');continue;case'17':activityUrl=li1liI1i(0x237,'iU2q');continue;case'18':activityUrl=li1liI1i(0x5ed,'G#gE');continue;case'19':activityUrl=li1liI1i(0x49e,'&Mwz');continue;case'20':activityUrl=li1liI1i(0x312,'6Ibe');continue;case'21':activityUrl=li1liI1i(0x4a2,'9V5g');continue;case'22':activityUrl=li1liI1i(0x1d7,'2wvH');continue;case'23':activityUrl=li1liI1i(0x406,'2$6e');continue;case'24':activityUrl=li1liI1i(0x29e,'2i6q');continue;case'25':activityUrl=li1liI1i(0x31a,'Yzhx');continue;case'26':activityUrl=li1liI1i(0x200,'%nja');continue;case'27':activityUrl=li1liI1i(0x53a,'!qW&');continue;case'28':activityUrl=li1liI1i(0x5ca,'*$%k');continue;case'29':activityUrl=li1liI1i(0x3ff,'gtH7');continue;case'30':activityUrl=li1liI1i(0x440,'g%W2');continue;case'31':activityUrl=li1liI1i(0x399,'OWMm');continue;case'32':activityUrl=li1liI1i(0x4c7,'vf9j');continue;case'33':activityUrl=li1liI1i(0x4b1,'NJ9H');continue;case'34':activityUrl=li1liI1i(0x227,'!qW&');continue;case'35':activityUrl=li1liI1i(0x536,'9V5g');continue;case'36':activityUrl=li1liI1i(0x2e3,'6Ibe');continue;case'37':activityUrl=li1liI1i(0x40b,'rBOq');continue;case'38':activityUrl=li1liI1i(0x3a8,'Mba]');continue;case'39':activityUrl=li1liI1i(0x4fe,'7qV7');continue;}break;}}function IIllIlIl(_0x4163e2,_0x5dee6a){const _0x5e5298=Il11l1iI();return IIllIlIl=function(_0x2e2b2c,_0x2e55ed){_0x2e2b2c=_0x2e2b2c-0x1d3;let _0x5aea14=_0x5e5298[_0x2e2b2c];if(IIllIlIl['UTGxsi']===undefined){var _0x30aa7f=function(_0x55afcb){const _0x5ed9a5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3949d6='',_0xf4d3a8='',_0x2c5ba8=_0x3949d6+_0x30aa7f;for(let _0x55945e=0x0,_0x1ccd67,_0x344b41,_0x2f74ba=0x0;_0x344b41=_0x55afcb['charAt'](_0x2f74ba++);~_0x344b41&&(_0x1ccd67=_0x55945e%0x4?_0x1ccd67*0x40+_0x344b41:_0x344b41,_0x55945e++%0x4)?_0x3949d6+=_0x2c5ba8['charCodeAt'](_0x2f74ba+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x1ccd67>>(-0x2*_0x55945e&0x6)):_0x55945e:0x0){_0x344b41=_0x5ed9a5['indexOf'](_0x344b41);}for(let _0x35dcc6=0x0,_0xb51e89=_0x3949d6['length'];_0x35dcc6<_0xb51e89;_0x35dcc6++){_0xf4d3a8+='%'+('00'+_0x3949d6['charCodeAt'](_0x35dcc6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf4d3a8);};const _0x4084f3=function(_0x57fe5a,_0x2896da){let _0x3390d0=[],_0x555be9=0x0,_0x1819f3,_0x275b54='';_0x57fe5a=_0x30aa7f(_0x57fe5a);let _0x344af8;for(_0x344af8=0x0;_0x344af8<0x100;_0x344af8++){_0x3390d0[_0x344af8]=_0x344af8;}for(_0x344af8=0x0;_0x344af8<0x100;_0x344af8++){_0x555be9=(_0x555be9+_0x3390d0[_0x344af8]+_0x2896da['charCodeAt'](_0x344af8%_0x2896da['length']))%0x100,_0x1819f3=_0x3390d0[_0x344af8],_0x3390d0[_0x344af8]=_0x3390d0[_0x555be9],_0x3390d0[_0x555be9]=_0x1819f3;}_0x344af8=0x0,_0x555be9=0x0;for(let _0x784c4f=0x0;_0x784c4f<_0x57fe5a['length'];_0x784c4f++){_0x344af8=(_0x344af8+0x1)%0x100,_0x555be9=(_0x555be9+_0x3390d0[_0x344af8])%0x100,_0x1819f3=_0x3390d0[_0x344af8],_0x3390d0[_0x344af8]=_0x3390d0[_0x555be9],_0x3390d0[_0x555be9]=_0x1819f3,_0x275b54+=String['fromCharCode'](_0x57fe5a['charCodeAt'](_0x784c4f)^_0x3390d0[(_0x3390d0[_0x344af8]+_0x3390d0[_0x555be9])%0x100]);}return _0x275b54;};IIllIlIl['qhDaQk']=_0x4084f3,_0x4163e2=arguments,IIllIlIl['UTGxsi']=!![];}const _0x313eee=_0x5e5298[0x0],_0x1eacca=_0x2e2b2c+_0x313eee,_0x2f426f=_0x4163e2[_0x1eacca];if(!_0x2f426f){if(IIllIlIl['iCGVQB']===undefined){const _0x60c2df=function(_0x112a3c){this['kbCAPd']=_0x112a3c,this['cIASue']=[0x1,0x0,0x0],this['lTbjnq']=function(){return'newState';},this['woBVBN']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['nLgrAi']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x60c2df['prototype']['vOlgTS']=function(){const _0x251c96=new RegExp(this['woBVBN']+this['nLgrAi']),_0x3530e0=_0x251c96['test'](this['lTbjnq']['toString']())?--this['cIASue'][0x1]:--this['cIASue'][0x0];return this['FaeIFl'](_0x3530e0);},_0x60c2df['prototype']['FaeIFl']=function(_0x4a25eb){if(!Boolean(~_0x4a25eb))return _0x4a25eb;return this['zciCtG'](this['kbCAPd']);},_0x60c2df['prototype']['zciCtG']=function(_0x13ffe7){for(let _0x306eff=0x0,_0x4bf69d=this['cIASue']['length'];_0x306eff<_0x4bf69d;_0x306eff++){this['cIASue']['push'](Math['round'](Math['random']())),_0x4bf69d=this['cIASue']['length'];}return _0x13ffe7(this['cIASue'][0x0]);},new _0x60c2df(IIllIlIl)['vOlgTS'](),IIllIlIl['iCGVQB']=!![];}_0x5aea14=IIllIlIl['qhDaQk'](_0x5aea14,_0x2e55ed),_0x4163e2[_0x1eacca]=_0x5aea14;}else _0x5aea14=_0x2f426f;return _0x5aea14;},IIllIlIl(_0x4163e2,_0x5dee6a);}const {RunMode:ilIIi,UserMode:IilllIlI,baseCommonEnv:i1iiI1i,baseCommonEnvKey:iIlI1IlI}=require(li1liI1i(0x4c0,'hTkd'));let lii1l11l=[li1liI1i(0x2b9,'Ia5s'),li1liI1i(0x29a,'OWMm'),li1liI1i(0x23f,'BWzj'),li1liI1i(0x206,'Mba]'),li1liI1i(0x23c,'q!&9'),li1liI1i(0x4fa,'dD$o'),li1liI1i(0x3b5,'q!&9'),li1liI1i(0x550,'!qW&'),li1liI1i(0x243,'$46G'),li1liI1i(0x4ef,'!vl)'),li1liI1i(0x483,'^b2O')];process[li1liI1i(0x346,'!qW&')][li1liI1i(0x3a5,'7xR*')]?process[li1liI1i(0x3ce,'7qV7')][li1liI1i(0x5cb,'9V5g')][li1liI1i(0x267,'2i6q')](/[@,&|]/)[li1liI1i(0x274,'RcR$')](lliii1I=>lii1l11l[li1liI1i(0x578,'6Ibe')](lliii1I)):'',i1iiI1i[li1liI1i(0x42d,'*$%k')]=process[li1liI1i(0x22a,'rBOq')][li1liI1i(0x338,'^b2O')]?process[li1liI1i(0x272,'!fqq')][li1liI1i(0x432,'hTkd')][li1liI1i(0x378,'JGjT')](/[@,&|]/):li1liI1i(0x4a1,'4rDR')[li1liI1i(0x40d,'vf9j')]('@'),i1iiI1i[li1liI1i(0x31c,'JGjT')]=process[li1liI1i(0x2ba,'WE]U')][li1liI1i(0x5a4,'g%W2')]||li1liI1i(0x340,'4rDR'),i1iiI1i[li1liI1i(0x48c,'JGjT')]=parseInt(process[li1liI1i(0x2dd,'$46G')][li1liI1i(0x5f8,'%MBJ')]||0x0),i1iiI1i[li1liI1i(0x519,'gtH7')]=parseInt(process[li1liI1i(0x2e7,'!vl)')][li1liI1i(0x283,'rBOq')]||0x64),i1iiI1i[li1liI1i(0x39e,'BWzj')]=lii1l11l,iIlI1IlI[li1liI1i(0x5cc,'io9i')]=li1liI1i(0x59e,'gtH7'),iIlI1IlI[li1liI1i(0x334,'^b2O')]=li1liI1i(0x3bc,'hTkd'),iIlI1IlI[li1liI1i(0x3ef,'Dtdd')]=li1liI1i(0x247,'%nja'),iIlI1IlI[li1liI1i(0x5c1,'UcPp')]=li1liI1i(0x4d2,'JGjT'),iIlI1IlI[li1liI1i(0x3f4,'Gv6n')]=li1liI1i(0x328,'D*%o'),ilIIi[li1liI1i(0x591,'2i6q')]={'name':li1liI1i(0x5b5,'q!&9'),'runName':li1liI1i(0x3d2,'CfK('),'version':li1liI1i(0x477,'6Ibe')};let li1l111l=0x0;class ll1i1IiI extends IilllIlI{constructor(Ililiil,iII1ll1){const i1i1lI1l=li1liI1i,Ilili1li={'FmBXm':function(IiliiI1i,llI111lI){return IiliiI1i===llI111lI;}};super(Ililiil,iII1ll1),this[i1i1lI1l(0x236,'9V5g')]=!![],Ilili1li[i1i1lI1l(0x264,'vf9j')](i1iiI1i[i1i1lI1l(0x235,'&Mwz')],0x1)&&(this[i1i1lI1l(0x53c,'rBOq')]=[...this[i1i1lI1l(0x424,'BWzj')],...lii1l11l]);}async[li1liI1i(0x447,'hTkd')](l1l1iIlI){const lIIIilI=li1liI1i,iI11IiIi={'wCjfQ':function(IIlliI11,IiIi11lI){return IIlliI11===IiIi11lI;},'gtdAA':lIIIilI(0x50c,'CfK(')};let IilI11I=await this[lIIIilI(0x2a4,'2ukH')](this[lIIIilI(0x5b8,'!fqq')]+lIIIilI(0x25e,'zs(R'),{'pin':this[lIIIilI(0x2b2,'4rDR')],'skuId':l1l1iIlI});if(IilI11I&&IilI11I[lIIIilI(0x428,'4rDR')]){if(iI11IiIi[lIIIilI(0x39b,'7qV7')](iI11IiIi[lIIIilI(0x1f5,'Y0xe')],iI11IiIi[lIIIilI(0x2c1,'!qW&')]))return IilI11I[lIIIilI(0x4f4,'7qV7')];else{if(ll1lIIi1){const I1ilI1ll=lIli1Iii[lIIIilI(0x3c0,'&Mwz')](iii11l1,arguments);return iilii11i=null,I1ilI1ll;}}}return![];}async[li1liI1i(0x488,'^b2O')](){const I11IlilI=li1liI1i,ll1Ii1i1={'KzYtl':I11IlilI(0x30a,'JGjT'),'CgGCI':I11IlilI(0x4bd,'CfK('),'OsjLz':function(I1l1IiiI,lliI1I1l){return I1l1IiiI>=lliI1I1l;},'WyqTS':function(Il11ilI1,llIlli1i){return Il11ilI1===llIlli1i;},'RByxq':function(liill1,I1ilii){return liill1+I1ilii;},'msnnz':I11IlilI(0x3b1,'hTkd'),'uzIxd':I11IlilI(0x375,'D*%o'),'Emrvq':I11IlilI(0x523,'%nja'),'enrYL':I11IlilI(0x2d9,'vf9j'),'WgAYV':function(iilI1l1l,Ii1i1il1){return iilI1l1l===Ii1i1il1;},'NFDWa':function(lIi111ll,lIiI11l){return lIi111ll>=lIiI11l;},'hffGX':function(l11111ll,li1iIIIi){return l11111ll===li1iIIIi;},'uIlnf':I11IlilI(0x495,'gtH7'),'bsbjz':I11IlilI(0x48f,'$46G'),'DTygt':I11IlilI(0x51c,'9V5g'),'KNVeA':I11IlilI(0x3e2,'2i6q'),'jNryI':I11IlilI(0x500,'!fqq'),'xaJhE':I11IlilI(0x2f4,'4rDR'),'DjQrj':I11IlilI(0x2ed,'Ia5s'),'kyOTV':I11IlilI(0x36e,'Dt67'),'tRJzm':I11IlilI(0x35d,'^b2O'),'kHASm':I11IlilI(0x367,'7qV7'),'xttZx':I11IlilI(0x57e,'Dtdd'),'ktZhQ':I11IlilI(0x4c9,'&Mwz'),'hUpGc':I11IlilI(0x3c4,'rBOq'),'OxSej':I11IlilI(0x45f,'UcPp'),'tqEmh':I11IlilI(0x5a9,'RcR$'),'mooyD':I11IlilI(0x575,'iU2q'),'jbcCq':I11IlilI(0x25c,'g%W2'),'gDXXd':I11IlilI(0x56e,'^b2O'),'ONuKI':I11IlilI(0x4cc,'rBOq'),'DERZz':I11IlilI(0x3f8,'Dt67'),'mHMzI':I11IlilI(0x572,'9V5g'),'XCHyM':I11IlilI(0x333,'7xR*'),'zSNIk':I11IlilI(0x24e,'Ia5s'),'aFVPe':I11IlilI(0x59b,'q!&9'),'MbLFP':I11IlilI(0x35f,'Y0xe'),'hTszy':I11IlilI(0x557,'Hu&o'),'gfhLh':I11IlilI(0x4a3,'iU2q'),'syojq':I11IlilI(0x36c,'Ia5s'),'hgBIP':I11IlilI(0x4e7,'^b2O'),'aVwWd':I11IlilI(0x1db,'2$6e'),'zBSJM':I11IlilI(0x290,'!qW&'),'CkmOD':I11IlilI(0x20c,'2ukH'),'lfvKl':I11IlilI(0x502,'%MBJ'),'aPSbU':I11IlilI(0x1d6,'vf9j'),'nxATy':I11IlilI(0x4ba,'Hu&o'),'toIYV':I11IlilI(0x52d,'2wvH'),'dLBAp':I11IlilI(0x5ae,'Vw))'),'JGMXS':I11IlilI(0x3ad,'2$6e'),'CRiak':I11IlilI(0x57c,'Mba]'),'RVsXp':I11IlilI(0x554,'Hu&o'),'mOkmy':I11IlilI(0x3eb,'4rDR'),'YfeEJ':I11IlilI(0x5d8,'io9i'),'dtUKJ':I11IlilI(0x58b,'io9i'),'BupUR':I11IlilI(0x38e,'G#gE'),'tyMjp':I11IlilI(0x269,'JGjT'),'qxhDu':I11IlilI(0x524,'2i6q'),'FHLvO':I11IlilI(0x56c,'2i6q'),'OJUCy':I11IlilI(0x492,'$A7*'),'bzBxp':I11IlilI(0x23d,'dD$o'),'wAoBg':function(Iiilliii,l11iIIl1){return Iiilliii!==l11iIIl1;},'LwusQ':I11IlilI(0x254,'iU2q'),'PPxMj':I11IlilI(0x288,'io9i'),'fOQSn':I11IlilI(0x43e,'CfK('),'hGWoe':I11IlilI(0x30d,'ipJ8'),'OxtaB':function(iilii,Il1Il1){return iilii>=Il1Il1;},'baeIA':function(i111li11,ilIiil1i){return i111li11>ilIiil1i;},'GasUT':function(l111ii,lI1lIl1i){return l111ii===lI1lIl1i;},'VTiEB':I11IlilI(0x47f,'g%W2'),'jdmtA':function(I1illiIi,lI1ll1li){return I1illiIi!==lI1ll1li;},'vcRBi':I11IlilI(0x5d9,'Ia5s'),'LpLce':function(IiIIIIl,liI1Iil1){return IiIIIIl===liI1Iil1;},'biucZ':I11IlilI(0x5da,'dD$o'),'qdhul':I11IlilI(0x3d9,'9V5g'),'ZFKVY':function(III1lIIl,IIIilIiI){return III1lIIl(IIIilIiI);},'mUZDW':I11IlilI(0x22f,'2i6q'),'EFYPC':function(iiilIl1I,iiiIilll){return iiilIl1I>iiiIilll;},'hHhOc':function(Illli1I,llIiI1iI){return Illli1IIliIllIi;},'PinYV':I11IlilI(0x4f0,'7v6M'),'FrlqP':function(Iiili11l,IIi1Ii11){return Iiili11l===IIi1Ii11;},'xvNDz':I11IlilI(0x558,'%MBJ'),'cGCkm':I11IlilI(0x3a3,'2wvH'),'xDtkv':I11IlilI(0x46a,'OWMm'),'IdiMQ':function(lli1liii,l1lIIiII){return lli1liii>=l1lIIiII;},'pKDIC':function(IIl1lilI,lIII1lI1){return IIl1lilI+lIII1lI1;},'HDTrg':function(llll11il,I1l1IlIl){return llll11il===I1l1IlIl;},'tnmWo':I11IlilI(0x496,'Ia5s'),'jwzgK':I11IlilI(0x2bb,'%MBJ'),'Mkguy':function(li111lli,I111llI1){return li111lli>I111llI1;},'yViqT':I11IlilI(0x4cd,'&Mwz'),'TFrmB':I11IlilI(0x594,'7qV7'),'wulNT':I11IlilI(0x2db,'Vw))'),'bTiad':function(i1lIIl1i,lIi1IlII){return i1lIIl1i===lIi1IlII;},'tMJrr':I11IlilI(0x363,'9V5g'),'Cghmn':I11IlilI(0x21b,'2$6e'),'XHZZq':I11IlilI(0x36f,'2ukH'),'ZBHuS':I11IlilI(0x39d,'g%W2'),'MYLvD':I11IlilI(0x533,'*$%k'),'RaVmC':I11IlilI(0x5ac,'^b2O'),'rvwHJ':function(illilIl,i1lii1l){return illilIl!==i1lii1l;},'ZHNCH':I11IlilI(0x5c6,'2$6e'),'kOrRf':I11IlilI(0x58d,'WE]U'),'bGZLu':I11IlilI(0x2fe,'G#gE'),'PirLv':I11IlilI(0x210,'7xR*'),'IXuhE':function(IiIl1lil,IiIIl1ii){return IiIl1lil!==IiIIl1ii;},'KJHqQ':I11IlilI(0x4aa,'7xR*'),'qdiiv':I11IlilI(0x225,'BWzj'),'RMvjD':I11IlilI(0x546,'7v6M'),'sEYyW':function(l11i1iii,lIllill1){return l11i1iii===lIllill1;},'wdEKs':I11IlilI(0x56b,'Hu&o'),'ESCDI':I11IlilI(0x5b3,'JGjT'),'THJAV':function(I11il11i,l1Iil1II){return I11il11i===l1Iil1II;},'zfBki':I11IlilI(0x3a4,'iU2q'),'BrLCI':I11IlilI(0x381,'g%W2'),'pqday':I11IlilI(0x540,'2wvH'),'qtElp':I11IlilI(0x55e,'dD$o'),'mYFLD':I11IlilI(0x1e4,'2wvH'),'uNcNN':I11IlilI(0x2c5,'Ia5s'),'szuqx':I11IlilI(0x514,'Ia5s'),'HoTEI':function(lI11lill,iII1IlI1){return lI11lill===iII1IlI1;},'vqwhF':I11IlilI(0x55f,'CfK('),'CkeeY':I11IlilI(0x3de,'zs(R'),'Lwvzm':I11IlilI(0x534,'!vl)'),'YIvFu':I11IlilI(0x398,'&Mwz'),'ykVVA':function(IiIi1III,Il11iIIi){return IiIi1III===Il11iIIi;},'aaBqy':function(Ili11lII,li1Illll){return Ili11lII===li1Illll;},'VhUtG':I11IlilI(0x57f,'Dt67'),'SzeQQ':I11IlilI(0x4dc,'4rDR'),'OucbV':I11IlilI(0x261,'rBOq'),'WjjGM':I11IlilI(0x5af,'7qV7'),'VRqea':function(Il1i1iil,i1IliilI){return Il1i1iil!==i1IliilI;},'vzELJ':I11IlilI(0x56a,'^b2O'),'aQOcH':I11IlilI(0x53f,'ipJ8'),'PzasW':I11IlilI(0x42a,'Hu&o'),'Hkcrt':I11IlilI(0x5e0,'ipJ8'),'tCyMd':function(IiiIIIiI,lil1il1l){return IiiIIIiI===lil1il1l;},'NZYPB':I11IlilI(0x599,'Dtdd'),'HWLcd':I11IlilI(0x4b3,'OWMm'),'DppdP':function(lli1llI,IIIIIII1){return lli1llI===IIIIIII1;},'GhcXK':I11IlilI(0x55c,'rBOq'),'KJhQL':function(l11lllii,I1ilI){return l11lllii!==I1ilI;},'CcUUF':I11IlilI(0x229,'dD$o'),'ydUqZ':function(liI1i11i,i1ilIl11){return liI1i11i<=i1ilIl11;},'CdUXl':function(iiiIi1lI,iil1iilI){return iiiIi1lI!==iil1iilI;},'nyWBN':I11IlilI(0x5a2,'7xR*'),'XPIrs':I11IlilI(0x2cf,'q!&9'),'FwvgO':function(i1liIIl,Il1Ii1l){return i1liIIl>=Il1Ii1l;},'jWVCq':function(I1IIiiiI,lllli1Il){return I1IIiiiI+lllli1Il;},'QFOtT':I11IlilI(0x202,'CfK('),'tIPTi':I11IlilI(0x37f,'Yzhx'),'WuksE':I11IlilI(0x4e5,'q!&9'),'iEKpi':function(iIiI11l1,i1i1lll){return iIiI11l1===i1i1lll;},'EJqUD':I11IlilI(0x498,'zs(R'),'RpJjO':function(ilI1iIIi,lIllI1l){return ilI1iIIi!==lIllI1l;},'NTCYC':I11IlilI(0x311,'!vl)'),'jEgmB':I11IlilI(0x1ea,'Yzhx'),'OypXo':I11IlilI(0x253,'%nja'),'NWQBN':function(il1i1I1I,I1lIIlI){return il1i1I1I===I1lIIlI;},'PmGEq':function(I1lIl1li,iII11il1){return I1lIl1li===iII11il1;},'TAbAU':I11IlilI(0x2f5,'dD$o'),'rYgYZ':I11IlilI(0x564,'dD$o'),'aPVPv':I11IlilI(0x461,'2wvH'),'ZHdpo':function(lI11Il1l,iliilI1){return lI11Il1l=I1li1;},'UhVGF':function(IiIiIill,i1iil1l){return IiIiIill===i1iil1l;},'kmzQD':function(lll1Illi,iilIIliI){return lll1Illi+iilIIliI;},'xKTvB':function(i111iIli,iIiIiIII){return i111iIli!==iIiIiIII;},'XOlBw':I11IlilI(0x443,'Y0xe'),'LWAPh':I11IlilI(0x426,'%MBJ'),'ciAFW':function(l1ii11i1,i11liiiI){return l1ii11i1&&i11liiiI;},'WCLAL':I11IlilI(0x266,'iU2q'),'jAqZR':function(iIl1ll11,iiilIill){return iIl1ll11>iiilIill;},'EqTzF':function(Iiiiii11,iIillIi){return Iiiiii11===iIillIi;},'kUgOm':I11IlilI(0x372,'2i6q'),'tYIor':I11IlilI(0x4b4,'io9i'),'MHIJz':I11IlilI(0x48b,'2wvH'),'tERZx':I11IlilI(0x551,'vf9j'),'ihsLy':function(IillI11i,Iill11lI){return IillI11i===Iill11lI;}};await this[I11IlilI(0x5fd,'Vw))')]();if(ll1Ii1i1[I11IlilI(0x47e,'hTkd')](this[I11IlilI(0x45a,'!vl)')],'v2')){await this[I11IlilI(0x5aa,'2wvH')]();let i11l11ii;if(![ll1Ii1i1[I11IlilI(0x24b,'rBOq')]][I11IlilI(0x459,'iU2q')](this[I11IlilI(0x5f4,'ipJ8')])){if(ll1Ii1i1[I11IlilI(0x4cb,'Y0xe')](ll1Ii1i1[I11IlilI(0x3c9,'*$%k')],ll1Ii1i1[I11IlilI(0x268,'io9i')])){let lIlil=await this[I11IlilI(0x5fc,'RcR$')](I11IlilI(0x567,'WE]U')+this[I11IlilI(0x335,'UcPp')]+I11IlilI(0x396,'vf9j'));i11l11ii=lIlil?.[I11IlilI(0x593,'dD$o')]??0x5;}else{this[I11IlilI(0x3e0,'%nja')](il11l1I1?.[I11IlilI(0x28f,'iU2q')]);return;}}else i11l11ii=0x3;if(ll1Ii1i1[I11IlilI(0x275,'dD$o')](i11l11ii,0x0)){if(ll1Ii1i1[I11IlilI(0x456,'ipJ8')](ll1Ii1i1[I11IlilI(0x507,'Yzhx')],ll1Ii1i1[I11IlilI(0x5bd,'Y0xe')]))return li1l111l++,ll1Ii1i1[I11IlilI(0x560,'$A7*')](li1l111l,i1iiI1i[I11IlilI(0x439,'4rDR')])&&ll1Ii1i1[I11IlilI(0x419,'gtH7')](i1iiI1i[I11IlilI(0x1f3,'Hu&o')],ll1Ii1i1[I11IlilI(0x278,'2wvH')](this[I11IlilI(0x576,'!fqq')],0x1))&&(this[I11IlilI(0x410,'%MBJ')](ll1Ii1i1[I11IlilI(0x331,'Dtdd')]),this[I11IlilI(0x320,'iU2q')]()),this[I11IlilI(0x2ea,'2ukH')](ll1Ii1i1[I11IlilI(0x326,'iU2q')]);else this[I11IlilI(0x5e2,'JGjT')](I1III1ll[I11IlilI(0x2d5,'q!&9')]?.[I11IlilI(0x2e1,'2$6e')]||lililI1l[I11IlilI(0x345,'BWzj')]?.[I11IlilI(0x5db,'!fqq')]);}while(ll1Ii1i1[I11IlilI(0x437,'2wvH')](i11l11ii--,0x0)){let IiIIiII=await this[I11IlilI(0x465,'WE]U')](I11IlilI(0x351,'NJ9H')+this[I11IlilI(0x4dd,'Hu&o')]+I11IlilI(0x218,'4rDR'));this[I11IlilI(0x222,'&Mwz')](IiIIiII);if(IiIIiII&&ll1Ii1i1[I11IlilI(0x450,'^b2O')](IiIIiII[I11IlilI(0x54c,'%MBJ')],0xc8)){this[I11IlilI(0x1ff,'2i6q')](IiIIiII?.[I11IlilI(0x1df,'WE]U')]?.[I11IlilI(0x589,'BWzj')]||'空气');ll1Ii1i1[I11IlilI(0x5f9,'Mba]')](IiIIiII?.[I11IlilI(0x4df,'*$%k')]?.[I11IlilI(0x2e8,'7xR*')]?.[I11IlilI(0x41c,'*$%k')],ll1Ii1i1[I11IlilI(0x407,'OWMm')])&&ll1Ii1i1[I11IlilI(0x56d,'Hu&o')](IiIIiII?.[I11IlilI(0x5fb,'^b2O')]?.[I11IlilI(0x485,'io9i')]?.[I11IlilI(0x556,'zs(R')],!![])&&IiIIiII?.[I11IlilI(0x4df,'*$%k')]?.[I11IlilI(0x30f,'Yzhx')]&&(this[I11IlilI(0x469,'Mba]')]=IiIIiII?.[I11IlilI(0x5d0,'Y0xe')]?.[I11IlilI(0x1e0,'2wvH')]?.[I11IlilI(0x4b6,'UcPp')],this[I11IlilI(0x5dc,'G#gE')]=IiIIiII?.[I11IlilI(0x5ea,'!vl)')]?.[I11IlilI(0x4a8,'UcPp')],this[I11IlilI(0x303,'*$%k')]=IiIIiII?.[I11IlilI(0x5ee,'rBOq')]?.[I11IlilI(0x4da,'!vl)')],await this[I11IlilI(0x3ec,'G#gE')]());continue;}let l11iIli=IiIIiII?.[I11IlilI(0x1f9,'BWzj')]||ll1Ii1i1[I11IlilI(0x386,'7xR*')];this[I11IlilI(0x2da,'D*%o')](l11iIli),this[I11IlilI(0x49f,'2wvH')](l11iIli);return;}return;}if(ll1Ii1i1[I11IlilI(0x2cb,'io9i')](this[I11IlilI(0x5c9,'4rDR')],ll1Ii1i1[I11IlilI(0x284,'OWMm')])){let lIl11iI=await this[I11IlilI(0x239,'!fqq')](this[I11IlilI(0x44f,'UcPp')]);if(!lIl11iI)return;if(lIl11iI[I11IlilI(0x53e,'NJ9H')](ll1Ii1i1[I11IlilI(0x3d4,'CfK(')])){if(ll1Ii1i1[I11IlilI(0x317,'%nja')](ll1Ii1i1[I11IlilI(0x3f0,'!vl)')],ll1Ii1i1[I11IlilI(0x5df,'G#gE')]))this[I11IlilI(0x389,'dD$o')](ll1Ii1i1[I11IlilI(0x204,'Mba]')]),this[I11IlilI(0x20e,'dD$o')]();else{this[I11IlilI(0x339,'$46G')](ll1Ii1i1[I11IlilI(0x44d,'6Ibe')]),this[I11IlilI(0x458,'&Mwz')]();return;}}let II1Iill1=this[I11IlilI(0x52c,'6Ibe')](lIl11iI),iI1i11I1=ll1Ii1i1[I11IlilI(0x580,'CfK(')](II1Iill1,ll1Ii1i1[I11IlilI(0x1ec,'&Mwz')])[I11IlilI(0x5ad,'!qW&')]();iI1i11I1=this[I11IlilI(0x3ca,'6Ibe')](iI1i11I1);let i1Ii1lll=iI1i11I1?.[I11IlilI(0x412,'%nja')]||[],iIl1111I=iI1i11I1?.[I11IlilI(0x221,'NJ9H')]||0x0,I1lI1l1i=iI1i11I1?.[I11IlilI(0x4ce,'hTkd')]||0x0;this[I11IlilI(0x4ec,'!fqq')]=iI1i11I1?.[I11IlilI(0x37d,'^b2O')],this[I11IlilI(0x1e6,'Dtdd')]=iI1i11I1?.[I11IlilI(0x4cf,'6Ibe')],this[I11IlilI(0x37b,'7qV7')]=iI1i11I1?.[I11IlilI(0x280,'io9i')],IilllIlI[I11IlilI(0x3aa,'JGjT')][I11IlilI(0x508,'7xR*')]=this[I11IlilI(0x365,'4rDR')],IilllIlI[I11IlilI(0x33e,'%nja')][I11IlilI(0x27a,'Dt67')]=this[I11IlilI(0x2c7,'NJ9H')],IilllIlI[I11IlilI(0x423,'9V5g')][I11IlilI(0x3c5,'9V5g')]=this[I11IlilI(0x357,'Yzhx')],IilllIlI[I11IlilI(0x38c,'!vl)')][I11IlilI(0x53d,'iU2q')]=iIl1111I,IilllIlI[I11IlilI(0x4d8,'Hu&o')][I11IlilI(0x54e,'7v6M')]=I1lI1l1i;if(iIl1111I&&ll1Ii1i1[I11IlilI(0x211,'WE]U')](iIl1111I,this[I11IlilI(0x4e3,'2wvH')]())){this[I11IlilI(0x3c7,'G#gE')](ll1Ii1i1[I11IlilI(0x5a0,'2wvH')]),this[I11IlilI(0x5e9,'2ukH')]();return;}if(I1lI1l1i&&ll1Ii1i1[I11IlilI(0x4b8,'rBOq')](I1lI1l1i,this[I11IlilI(0x215,'2ukH')]())){this[I11IlilI(0x559,'ipJ8')](ll1Ii1i1[I11IlilI(0x26b,'7v6M')]),this[I11IlilI(0x39f,'vf9j')]();return;}let l1I1I1iI=await this[I11IlilI(0x4d0,'7xR*')](ll1Ii1i1[I11IlilI(0x4ed,'Ia5s')],{'id':this[I11IlilI(0x343,'hTkd')],'token':this[I11IlilI(0x442,'zs(R')],'buyerFrom':'01'});this[I11IlilI(0x250,'vf9j')](l1I1I1iI);l1I1I1iI&&ll1Ii1i1[I11IlilI(0x5f9,'Mba]')](l1I1I1iI[I11IlilI(0x46d,'q!&9')],0x0)&&ll1Ii1i1[I11IlilI(0x49d,'!qW&')](l1I1I1iI[I11IlilI(0x59c,'io9i')],0x1)&&this[I11IlilI(0x31b,'gtH7')](l1I1I1iI?.[I11IlilI(0x391,'$46G')]);this[I11IlilI(0x1e5,'Hu&o')](l1I1I1iI?.[I11IlilI(0x52b,'WE]U')]);for(let IIilI11I of i1Ii1lll){this[I11IlilI(0x51e,'7qV7')](IIilI11I?.[I11IlilI(0x216,'D*%o')]);if(ll1Ii1i1[I11IlilI(0x26a,'gtH7')](IIilI11I?.[I11IlilI(0x44b,'!qW&')],ll1Ii1i1[I11IlilI(0x255,'RcR$')])){if(ll1Ii1i1[I11IlilI(0x244,'io9i')](ll1Ii1i1[I11IlilI(0x47b,'2$6e')],ll1Ii1i1[I11IlilI(0x2c9,'Y0xe')])){this[I11IlilI(0x44e,'Gv6n')](ll1Ii1i1[I11IlilI(0x1ee,'Ia5s')]),this[I11IlilI(0x2d1,'$A7*')]();return;}else await this[I11IlilI(0x4c2,'g%W2')](ll1Ii1i1[I11IlilI(0x408,'$46G')],{'conditionid':IIilI11I?.['id']});}ll1Ii1i1[I11IlilI(0x308,'vf9j')](IIilI11I?.[I11IlilI(0x55b,'NJ9H')],ll1Ii1i1[I11IlilI(0x46e,'Mba]')])&&await this[I11IlilI(0x400,'Vw))')](ll1Ii1i1[I11IlilI(0x5ce,'RcR$')],{'conditionid':IIilI11I?.['id']});if(ll1Ii1i1[I11IlilI(0x1fe,'WE]U')](IIilI11I?.[I11IlilI(0x422,'vf9j')],ll1Ii1i1[I11IlilI(0x462,'Hu&o')])){let li1l1l1=JSON[I11IlilI(0x53b,'$A7*')](IIilI11I[I11IlilI(0x50e,'!fqq')]),i1iIlllI=li1l1l1?.[I11IlilI(0x573,'7v6M')]??0x0,ll1iIi1l=li1l1l1?.[I11IlilI(0x4d3,'Mba]')]??0x0,iI11iIl1=li1l1l1?.[I11IlilI(0x32a,'hTkd')]??0x0;this[I11IlilI(0x5a3,'2ukH')](i1iIlllI,ll1iIi1l,iI11iIl1),this[I11IlilI(0x26f,'D*%o')](ll1Ii1i1[I11IlilI(0x2fb,'rBOq')](ll1iIi1l,iI11iIl1)),await this[I11IlilI(0x527,'gtH7')](ll1Ii1i1[I11IlilI(0x2f3,'q!&9')],{'conditionid':IIilI11I?.['id'],'count':ll1Ii1i1[I11IlilI(0x205,'rBOq')](ll1iIi1l,iI11iIl1)});}if(ll1Ii1i1[I11IlilI(0x361,'g%W2')](IIilI11I?.[I11IlilI(0x1f1,'7qV7')],ll1Ii1i1[I11IlilI(0x26d,'%nja')])){let iIil1i=JSON[I11IlilI(0x251,'WE]U')](IIilI11I[I11IlilI(0x201,'%nja')]),IiliiIlI=iIil1i?.[I11IlilI(0x2c2,'OWMm')]??0x0,II1liiI1=iIil1i?.[I11IlilI(0x337,'dD$o')]??0x0;await this[I11IlilI(0x35a,'G#gE')](ll1Ii1i1[I11IlilI(0x2a3,'2i6q')],{'conditionid':IIilI11I?.['id'],'count':ll1Ii1i1[I11IlilI(0x3fd,'6Ibe')](II1liiI1,IiliiIlI)});}}l1I1I1iI=await this[I11IlilI(0x3f9,'!fqq')](ll1Ii1i1[I11IlilI(0x5ab,'dD$o')],{'id':this[I11IlilI(0x234,'RcR$')],'token':this[I11IlilI(0x327,'$46G')],'buyerFrom':'01'}),this[I11IlilI(0x4a9,'*$%k')](l1I1I1iI);if(ll1Ii1i1[I11IlilI(0x526,'D*%o')](l1I1I1iI?.[I11IlilI(0x44c,'OWMm')],0x0)){this[I11IlilI(0x2ce,'zs(R')](l1I1I1iI?.[I11IlilI(0x257,'dD$o')]);return;}let iIiiiiII=l1I1I1iI?.[I11IlilI(0x414,'CfK(')]??0x0;iIiiiiII=Math[I11IlilI(0x2ad,'dD$o')](iIiiiiII,0x3);while(ll1Ii1i1[I11IlilI(0x42e,'WE]U')](iIiiiiII--,0x0)){await this[I11IlilI(0x5c5,'*$%k')](0x3e8);let i1Iill1l=await this[I11IlilI(0x40c,'6Ibe')](ll1Ii1i1[I11IlilI(0x2b6,'vf9j')],{'needCollectShop':l1I1I1iI[I11IlilI(0x44a,'vf9j')]??![]});this[I11IlilI(0x4f2,'2i6q')](i1Iill1l);if(i1Iill1l?.[I11IlilI(0x4a8,'UcPp')]){this[I11IlilI(0x57b,'7qV7')](i1Iill1l?.[I11IlilI(0x3b8,'6Ibe')]);i1Iill1l?.[I11IlilI(0x2cd,'WE]U')]&&(this[I11IlilI(0x401,'NJ9H')]=i1Iill1l?.[I11IlilI(0x315,'dD$o')],this[I11IlilI(0x589,'BWzj')]=i1Iill1l?.[I11IlilI(0x3f5,'g%W2')],await this[I11IlilI(0x579,'gtH7')]());continue;}let i1IlIli=i1Iill1l?.[I11IlilI(0x3d8,'q!&9')];this[I11IlilI(0x397,'CfK(')](i1IlIli),this[I11IlilI(0x570,'9V5g')](i1IlIli);}return;}if(ll1Ii1i1[I11IlilI(0x4ea,'q!&9')](this[I11IlilI(0x20f,'%nja')],ll1Ii1i1[I11IlilI(0x525,'Dt67')])){let I1I1Illi=await this[I11IlilI(0x4e9,'zs(R')](ll1Ii1i1[I11IlilI(0x3a6,'JGjT')]);this[I11IlilI(0x420,'Mba]')](I1I1Illi);if(I1I1Illi&&ll1Ii1i1[I11IlilI(0x565,'*$%k')](I1I1Illi[I11IlilI(0x5d6,'*$%k')],'1')){let ill1Iili=I1I1Illi?.[I11IlilI(0x58e,'gtH7')]||{};this[I11IlilI(0x252,'Y0xe')]=ill1Iili[I11IlilI(0x55d,'2i6q')],this[I11IlilI(0x3ee,'2ukH')]=ill1Iili[I11IlilI(0x208,'Dt67')]??this[I11IlilI(0x296,'2wvH')],this[I11IlilI(0x371,'Dtdd')]=ill1Iili[I11IlilI(0x319,'Mba]')],this[I11IlilI(0x454,'2i6q')]=ill1Iili[I11IlilI(0x28b,'io9i')];let {startTime:illIilI,endTime:iIIllili}=ill1Iili;IilllIlI[I11IlilI(0x352,'&Mwz')][I11IlilI(0x54b,'CfK(')]=this[I11IlilI(0x54d,'OWMm')],IilllIlI[I11IlilI(0x5f7,'NJ9H')][I11IlilI(0x48a,'Hu&o')]=this[I11IlilI(0x471,'hTkd')],IilllIlI[I11IlilI(0x304,'6Ibe')][I11IlilI(0x516,'Vw))')]=this[I11IlilI(0x43d,'Dtdd')],IilllIlI[I11IlilI(0x2b5,'ipJ8')][I11IlilI(0x2c4,'NJ9H')]=illIilI,IilllIlI[I11IlilI(0x423,'9V5g')][I11IlilI(0x5bc,'dD$o')]=iIIllili;if(illIilI&&ll1Ii1i1[I11IlilI(0x21f,'gtH7')](illIilI,this[I11IlilI(0x2bf,'7xR*')]())){if(ll1Ii1i1[I11IlilI(0x366,'io9i')](ll1Ii1i1[I11IlilI(0x413,'2i6q')],ll1Ii1i1[I11IlilI(0x411,'CfK(')])){this[I11IlilI(0x30b,'2wvH')](ll1Ii1i1[I11IlilI(0x569,'Hu&o')]),this[I11IlilI(0x535,'%nja')]();return;}else{I11lI1I1++;ll1Ii1i1[I11IlilI(0x587,'q!&9')](iIi1IIlI,liiIIlIi[I11IlilI(0x224,'!qW&')])&&ll1Ii1i1[I11IlilI(0x348,'!fqq')](l111llII[I11IlilI(0x246,'Gv6n')],ll1Ii1i1[I11IlilI(0x388,'&Mwz')](this[I11IlilI(0x35b,'vf9j')],0x1))&&(this[I11IlilI(0x2ce,'zs(R')](ll1Ii1i1[I11IlilI(0x55a,'2wvH')]),this[I11IlilI(0x4b5,'io9i')]());this[I11IlilI(0x478,'OWMm')](ll1Ii1i1[I11IlilI(0x446,'%nja')]);return;}}if(iIIllili&&ll1Ii1i1[I11IlilI(0x293,'6Ibe')](iIIllili,this[I11IlilI(0x36b,'vf9j')]())){this[I11IlilI(0x377,'NJ9H')](ll1Ii1i1[I11IlilI(0x1f8,'7qV7')]),this[I11IlilI(0x3f1,'NJ9H')]();return;}let iIIIIill=I1I1Illi?.[I11IlilI(0x1d3,'ipJ8')]||[],l11llI1=Math[I11IlilI(0x435,'7qV7')](0x0,ill1Iili?.[I11IlilI(0x3fc,'!vl)')]??0x0),llIl1I1i=I1I1Illi?.[I11IlilI(0x291,'9V5g')]||![];if(ll1Ii1i1[I11IlilI(0x436,'q!&9')](l11llI1,0x0)){li1l111l++;if(ll1Ii1i1[I11IlilI(0x2a7,'D*%o')](li1l111l,i1iiI1i[I11IlilI(0x5bf,'^b2O')])&&ll1Ii1i1[I11IlilI(0x279,'^b2O')](i1iiI1i[I11IlilI(0x598,'2i6q')],ll1Ii1i1[I11IlilI(0x473,'!vl)')](this[I11IlilI(0x3c2,'NJ9H')],0x1))){if(ll1Ii1i1[I11IlilI(0x3e3,'!vl)')](ll1Ii1i1[I11IlilI(0x52f,'6Ibe')],ll1Ii1i1[I11IlilI(0x2c3,'Vw))')])){let li1iliIl=llIlll1i?.[I11IlilI(0x2f1,'zs(R')];this[I11IlilI(0x2a6,'io9i')](li1iliIl),this[I11IlilI(0x2ee,'hTkd')](li1iliIl);return;}else this[I11IlilI(0x43a,'9V5g')](ll1Ii1i1[I11IlilI(0x4b2,'UcPp')]),this[I11IlilI(0x3f7,'^b2O')]();}this[I11IlilI(0x478,'OWMm')](ll1Ii1i1[I11IlilI(0x242,'dD$o')]);return;}l11llI1=Math[I11IlilI(0x4a0,'JGjT')](l11llI1,0x3);while(ll1Ii1i1[I11IlilI(0x493,'io9i')](l11llI1--,0x0)){await this[I11IlilI(0x1e3,'%nja')](0x7d0,0xbb8);let il1li1Il=await this[I11IlilI(0x3d3,'dD$o')](ll1Ii1i1[I11IlilI(0x32b,'zs(R')]);this[I11IlilI(0x22c,'7xR*')](il1li1Il);if(il1li1Il&&ll1Ii1i1[I11IlilI(0x5c3,'Yzhx')](il1li1Il[I11IlilI(0x448,'$A7*')],'1'))this[I11IlilI(0x529,'^b2O')](il1li1Il?.[I11IlilI(0x405,'7xR*')]?.[I11IlilI(0x538,'!qW&')]||'空气');else{if(il1li1Il&&ll1Ii1i1[I11IlilI(0x285,'Yzhx')](il1li1Il[I11IlilI(0x20a,'Mba]')],ll1Ii1i1[I11IlilI(0x4f1,'7qV7')])){if(ll1Ii1i1[I11IlilI(0x26c,'UcPp')](ll1Ii1i1[I11IlilI(0x358,'*$%k')],ll1Ii1i1[I11IlilI(0x350,'CfK(')])){this[I11IlilI(0x2ea,'2ukH')](ll1Ii1i1[I11IlilI(0x1fb,'ipJ8')]);return;}else lllli1ii=ll1Ii1i1[I11IlilI(0x45d,'zs(R')];}else{if(il1li1Il&&ll1Ii1i1[I11IlilI(0x5e3,'Y0xe')](il1li1Il[I11IlilI(0x3ba,'Vw))')],'-3')){if(ll1Ii1i1[I11IlilI(0x526,'D*%o')](ll1Ii1i1[I11IlilI(0x271,'6Ibe')],ll1Ii1i1[I11IlilI(0x3cc,'WE]U')])){this[I11IlilI(0x600,'io9i')]('关注');let i1iilII1=await this[I11IlilI(0x2a9,'rBOq')](I11IlilI(0x58c,'hTkd')+this[I11IlilI(0x5a8,'io9i')]+'/'+this[I11IlilI(0x547,'7qV7')],{'shopId':this[I11IlilI(0x29d,'Ia5s')],'venderId':this[I11IlilI(0x4ff,'^b2O')],'token':this[I11IlilI(0x3db,'%MBJ')],'source':'01'});if(i1iilII1&&ll1Ii1i1[I11IlilI(0x31f,'hTkd')](i1iilII1[I11IlilI(0x42c,'iU2q')],'1'))return this[I11IlilI(0x38f,'q!&9')](il1li1Il?.[I11IlilI(0x5d3,'!fqq')]);l11llI1++;continue;}else return IIIilIll[I11IlilI(0x460,'q!&9')];}else{let lIlIlliI=il1li1Il?.[I11IlilI(0x2ff,'6Ibe')];this[I11IlilI(0x5e2,'JGjT')](lIlIlliI),this[I11IlilI(0x47a,'^b2O')](lIlIlliI);return;}}}}}else{if(ll1Ii1i1[I11IlilI(0x248,'zs(R')](ll1Ii1i1[I11IlilI(0x548,'6Ibe')],ll1Ii1i1[I11IlilI(0x3dd,'%nja')])){this[I11IlilI(0x238,'vf9j')](ll1Ii1i1[I11IlilI(0x22e,'!vl)')]);return;}else{let IliI1l11=I1I1Illi?.[I11IlilI(0x26e,'!qW&')];this[I11IlilI(0x1ff,'2i6q')](IliI1l11),this[I11IlilI(0x596,'Y0xe')](IliI1l11);return;}}return;}if(ll1Ii1i1[I11IlilI(0x217,'dD$o')](this[I11IlilI(0x297,'OWMm')],ll1Ii1i1[I11IlilI(0x581,'%MBJ')])){await this[I11IlilI(0x32c,'Yzhx')](),await this[I11IlilI(0x4d6,'q!&9')]();let llIIliIi={'user_id':this[I11IlilI(0x354,'rBOq')],'act_id':this[I11IlilI(0x23b,'2i6q')]},l1i1I1li='';if(this[I11IlilI(0x4bb,'2i6q')][I11IlilI(0x4fd,'2ukH')](ll1Ii1i1[I11IlilI(0x404,'io9i')])){if(ll1Ii1i1[I11IlilI(0x444,'2i6q')](ll1Ii1i1[I11IlilI(0x37c,'dD$o')],ll1Ii1i1[I11IlilI(0x260,'7v6M')]))return lI1iI1li[I11IlilI(0x5d2,'7xR*')]()[I11IlilI(0x562,'^b2O')](csidwR[I11IlilI(0x549,'zs(R')])[I11IlilI(0x2ab,'!vl)')]()[I11IlilI(0x3b2,'&Mwz')](iI1lIilI)[I11IlilI(0x4d1,'9V5g')](csidwR[I11IlilI(0x463,'NJ9H')]);else l1i1I1li=ll1Ii1i1[I11IlilI(0x3bf,'iU2q')];}else{if(this[I11IlilI(0x4d7,'io9i')][I11IlilI(0x5a7,'2$6e')](ll1Ii1i1[I11IlilI(0x4f9,'7xR*')])){if(ll1Ii1i1[I11IlilI(0x3ab,'RcR$')](ll1Ii1i1[I11IlilI(0x33f,'Dt67')],ll1Ii1i1[I11IlilI(0x325,'G#gE')]))return IiIil1iI++,ll1Ii1i1[I11IlilI(0x58a,'NJ9H')](lillIIl1,liili1Ii[I11IlilI(0x2b4,'UcPp')])&&ll1Ii1i1[I11IlilI(0x249,'$46G')](lliIIlI[I11IlilI(0x384,'7qV7')],ll1Ii1i1[I11IlilI(0x43c,'7qV7')](this[I11IlilI(0x4ae,'Hu&o')],0x1))&&(this[I11IlilI(0x3e0,'%nja')](ll1Ii1i1[I11IlilI(0x602,'&Mwz')]),this[I11IlilI(0x56f,'rBOq')]()),this[I11IlilI(0x31b,'gtH7')](ll1Ii1i1[I11IlilI(0x518,'NJ9H')]);else l1i1I1li=ll1Ii1i1[I11IlilI(0x499,'OWMm')],llIIliIi[I11IlilI(0x4eb,'io9i')]=!![];}else{if(this[I11IlilI(0x4be,'7xR*')][I11IlilI(0x2cc,'Dt67')](ll1Ii1i1[I11IlilI(0x21a,'iU2q')]))l1i1I1li=ll1Ii1i1[I11IlilI(0x330,'Yzhx')];else{if(ll1Ii1i1[I11IlilI(0x2ca,'CfK(')](ll1Ii1i1[I11IlilI(0x427,'G#gE')],ll1Ii1i1[I11IlilI(0x4c3,'2wvH')])){this[I11IlilI(0x410,'%MBJ')](ll1Ii1i1[I11IlilI(0x5c4,'gtH7')]),this[I11IlilI(0x4e0,'Gv6n')]();return;}else{IIli1li1++;ll1Ii1i1[I11IlilI(0x4d5,'Ia5s')](IiI1iIl,lIl11IiI[I11IlilI(0x258,'hTkd')])&&ll1Ii1i1[I11IlilI(0x425,'Y0xe')](IiiIiIli[I11IlilI(0x384,'7qV7')],ll1Ii1i1[I11IlilI(0x4fc,'Dt67')](this[I11IlilI(0x29f,'rBOq')],0x1))&&(this[I11IlilI(0x2ec,'Hu&o')](ll1Ii1i1[I11IlilI(0x607,'2ukH')]),this[I11IlilI(0x605,'Dtdd')]());this[I11IlilI(0x529,'^b2O')](ll1Ii1i1[I11IlilI(0x42b,'io9i')]);return;}}}}let liIlliIl=await this[I11IlilI(0x33c,'g%W2')](l1i1I1li,llIIliIi);this[I11IlilI(0x46c,'q!&9')](liIlliIl);if(liIlliIl&&liIlliIl[I11IlilI(0x390,'q!&9')]){this[I11IlilI(0x52a,'q!&9')](liIlliIl);let ii1iii11=liIlliIl[I11IlilI(0x34b,'G#gE')]??'{}',iiIIIIii=JSON[I11IlilI(0x313,'gtH7')](ii1iii11);if(iiIIIIii?.[I11IlilI(0x4db,'BWzj')]){if(ll1Ii1i1[I11IlilI(0x22d,'Gv6n')](ll1Ii1i1[I11IlilI(0x5d4,'Hu&o')],ll1Ii1i1[I11IlilI(0x262,'zs(R')])){let IIill1II=liI1ll1i?.[I11IlilI(0x2d2,'Vw))')]||ll1Ii1i1[I11IlilI(0x490,'6Ibe')];this[I11IlilI(0x4e4,'Dtdd')](IIill1II),this[I11IlilI(0x537,'WE]U')]();return;}else{let iIIiii1i=iiIIIIii?.[I11IlilI(0x512,'2ukH')]?.[I11IlilI(0x3e8,'7xR*')];this[I11IlilI(0x41a,'Y0xe')](''+iiIIIIii?.[I11IlilI(0x2c6,'JGjT')]?.[I11IlilI(0x4af,'WE]U')]+iIIiii1i);if(ll1Ii1i1[I11IlilI(0x3e5,'g%W2')](iiIIIIii?.[I11IlilI(0x287,'!vl)')]?.[I11IlilI(0x5eb,'Gv6n')],ll1Ii1i1[I11IlilI(0x3e9,'7xR*')])){if(ll1Ii1i1[I11IlilI(0x3bb,'!vl)')](ll1Ii1i1[I11IlilI(0x27f,'&Mwz')],ll1Ii1i1[I11IlilI(0x51f,'NJ9H')]))this[I11IlilI(0x270,'2i6q')]=iiIIIIii?.[I11IlilI(0x3be,'iU2q')]?.[I11IlilI(0x49b,'^b2O')],this[I11IlilI(0x474,'$46G')]=iIIiii1i,await this[I11IlilI(0x344,'WE]U')]();else return;}return;}}}else{let IiIiiII=liIlliIl?.[I11IlilI(0x3bd,'9V5g')]||ll1Ii1i1[I11IlilI(0x34a,'rBOq')];this[I11IlilI(0x5f5,'Yzhx')](IiIiiII),this[I11IlilI(0x5c2,'!qW&')]();return;}return;}if(ll1Ii1i1[I11IlilI(0x4f8,'dD$o')](this[I11IlilI(0x209,'Vw))')],ll1Ii1i1[I11IlilI(0x2df,'CfK(')])){await this[I11IlilI(0x336,'dD$o')](),await this[I11IlilI(0x3a1,'q!&9')](),await this[I11IlilI(0x58f,'2wvH')](),await this[I11IlilI(0x1fc,'BWzj')]();let IIl1IiI1=0x1;if(ll1Ii1i1[I11IlilI(0x3d5,'%MBJ')](this[I11IlilI(0x27d,'D*%o')],ll1Ii1i1[I11IlilI(0x4a7,'JGjT')])){}else{if(ll1Ii1i1[I11IlilI(0x360,'zs(R')](ll1Ii1i1[I11IlilI(0x475,'JGjT')],ll1Ii1i1[I11IlilI(0x376,'Gv6n')]))ilIii1lI=ll1Ii1i1[I11IlilI(0x46f,'Y0xe')],i11i1I1i[I11IlilI(0x4f6,'WE]U')]=!![];else{let iIiliii1=await this[I11IlilI(0x1f0,'Vw))')](ll1Ii1i1[I11IlilI(0x213,'6Ibe')],{},!![]);if(iIiliii1&&iIiliii1[I11IlilI(0x604,'rBOq')]){let il11iii=iIiliii1?.[I11IlilI(0x1e0,'2wvH')]?.[I11IlilI(0x503,'Dtdd')]??[];if(il11iii[I11IlilI(0x370,'Ia5s')](liI11ii1=>liI11ii1[I11IlilI(0x2fa,'7xR*')]===I11IlilI(0x2dc,'q!&9')&&liI11ii1[I11IlilI(0x306,'!qW&')]===0x0)){let iIIlIi1i=await this[I11IlilI(0x245,'!vl)')](ll1Ii1i1[I11IlilI(0x5c7,'*$%k')],{'conditionType':ll1Ii1i1[I11IlilI(0x25d,'9V5g')]},!![]);this[I11IlilI(0x484,'2wvH')](iIIlIi1i);}}let IllIiII=await this[I11IlilI(0x5e4,'6Ibe')](ll1Ii1i1[I11IlilI(0x568,'^b2O')]);this[I11IlilI(0x5a3,'2ukH')](IllIiII),IllIiII&&IllIiII[I11IlilI(0x4ac,'2wvH')]&&(ll1Ii1i1[I11IlilI(0x3cf,'CfK(')](ll1Ii1i1[I11IlilI(0x530,'2$6e')],ll1Ii1i1[I11IlilI(0x2aa,'rBOq')])?I1i1Ill1=ll1Ii1i1[I11IlilI(0x4e2,'q!&9')]:IIl1IiI1=IllIiII?.[I11IlilI(0x4f5,'ipJ8')]?.[I11IlilI(0x35e,'Vw))')]??0x1);}}if(ll1Ii1i1[I11IlilI(0x2d4,'CfK(')](IIl1IiI1,0x0)){if(ll1Ii1i1[I11IlilI(0x5fa,'io9i')](ll1Ii1i1[I11IlilI(0x59f,'!qW&')],ll1Ii1i1[I11IlilI(0x1d8,'NJ9H')])){this[I11IlilI(0x3c7,'G#gE')](ll1Ii1i1[I11IlilI(0x453,'&Mwz')]),this[I11IlilI(0x3f1,'NJ9H')]();return;}else{li1l111l++;ll1Ii1i1[I11IlilI(0x4d4,'g%W2')](li1l111l,i1iiI1i[I11IlilI(0x2b4,'UcPp')])&&ll1Ii1i1[I11IlilI(0x4ca,'Vw))')](i1iiI1i[I11IlilI(0x318,'%MBJ')],ll1Ii1i1[I11IlilI(0x51b,'gtH7')](this[I11IlilI(0x4ae,'Hu&o')],0x1))&&(this[I11IlilI(0x389,'dD$o')](ll1Ii1i1[I11IlilI(0x302,'2$6e')]),this[I11IlilI(0x374,'zs(R')]());this[I11IlilI(0x5e6,'Mba]')](ll1Ii1i1[I11IlilI(0x359,'7v6M')]);return;}}IIl1IiI1=Math[I11IlilI(0x2a0,'Vw))')](IIl1IiI1,0x3);while(ll1Ii1i1[I11IlilI(0x32e,'ipJ8')](IIl1IiI1--,0x0)){await this[I11IlilI(0x5ba,'&Mwz')](0x5dc);let iIi11l1I=await this[I11IlilI(0x214,'2$6e')](ll1Ii1i1[I11IlilI(0x3df,'rBOq')](this[I11IlilI(0x265,'g%W2')],ll1Ii1i1[I11IlilI(0x433,'g%W2')])?ll1Ii1i1[I11IlilI(0x230,'^b2O')]:ll1Ii1i1[I11IlilI(0x586,'RcR$')],{'drawTimes':0x1});this[I11IlilI(0x480,'hTkd')](iIi11l1I);if(iIi11l1I&&iIi11l1I[I11IlilI(0x4ee,'7qV7')]){if(iIi11l1I[I11IlilI(0x416,'&Mwz')][I11IlilI(0x1e2,'dD$o')]){this[I11IlilI(0x397,'CfK(')](iIi11l1I[I11IlilI(0x4ab,'9V5g')]?.[I11IlilI(0x307,'Mba]')]?.[I11IlilI(0x3c8,'vf9j')]||'空气');iIi11l1I[I11IlilI(0x321,'Gv6n')]?.[I11IlilI(0x1f2,'RcR$')]?.[I11IlilI(0x4fd,'2ukH')](ll1Ii1i1[I11IlilI(0x203,'zs(R')])&&(this[I11IlilI(0x382,'!vl)')]=iIi11l1I[I11IlilI(0x441,'!fqq')]?.[I11IlilI(0x300,'WE]U')]?.['id'],this[I11IlilI(0x430,'Dtdd')]=iIi11l1I[I11IlilI(0x309,'Vw))')]?.[I11IlilI(0x510,'Y0xe')]?.[I11IlilI(0x4a4,'6Ibe')],await this[I11IlilI(0x429,'2ukH')]());return;}else this[I11IlilI(0x2a6,'io9i')](iIi11l1I[I11IlilI(0x3f2,'$A7*')]?.[I11IlilI(0x2c0,'2i6q')]||iIi11l1I[I11IlilI(0x1e0,'2wvH')]?.[I11IlilI(0x1f9,'BWzj')]);}let iilIii1l=iIi11l1I?.[I11IlilI(0x316,'Y0xe')];if(iilIii1l?.[I11IlilI(0x5f0,'io9i')](ll1Ii1i1[I11IlilI(0x42f,'Y0xe')])){if(ll1Ii1i1[I11IlilI(0x590,'dD$o')](ll1Ii1i1[I11IlilI(0x292,'Yzhx')],ll1Ii1i1[I11IlilI(0x33a,'g%W2')])){this[I11IlilI(0x606,'iU2q')]('空气');continue;}else{let IIil1l=IIIlI1Ii?.[I11IlilI(0x417,'gtH7')];this[I11IlilI(0x2a8,'$A7*')](IIil1l),this[I11IlilI(0x505,'vf9j')](IIil1l);return;}}if(iilIii1l?.[I11IlilI(0x39a,'OWMm')](ll1Ii1i1[I11IlilI(0x24d,'Ia5s')])&&await this[I11IlilI(0x2b3,'hTkd')]()){if(ll1Ii1i1[I11IlilI(0x3a7,'vf9j')](ll1Ii1i1[I11IlilI(0x322,'Mba]')],ll1Ii1i1[I11IlilI(0x5e7,'Yzhx')])){const IIi1IlIi=iI1iiIll?function(){const ilIlII11=I11IlilI;if(lI1i1II){const liil11il=iil1il1[ilIlII11(0x277,'NJ9H')](IIIlil,arguments);return IiIil1I1=null,liil11il;}}:function(){};return iIl1liiI=![],IIi1IlIi;}else{IIl1IiI1++;continue;}}this[I11IlilI(0x511,'Vw))')](iilIii1l),this[I11IlilI(0x3a2,'G#gE')](iilIii1l);return;}return;}await this[I11IlilI(0x5d7,'Gv6n')]();if(lii1l11l[I11IlilI(0x36d,'RcR$')](this[I11IlilI(0x47c,'%MBJ')])){if(ll1Ii1i1[I11IlilI(0x457,'g%W2')](ll1Ii1i1[I11IlilI(0x373,'&Mwz')],ll1Ii1i1[I11IlilI(0x2e5,'!vl)')]))this[I11IlilI(0x25b,'UcPp')]=iIlii1Ii[I11IlilI(0x1ed,'CfK(')]?.[I11IlilI(0x482,'RcR$')];else{await this[I11IlilI(0x5b1,'9V5g')]();if(![0x272a,0x2760][I11IlilI(0x342,'%nja')](this[I11IlilI(0x597,'zs(R')])){let Iil1lilI=await this[I11IlilI(0x3b4,'JGjT')](I11IlilI(0x601,'!fqq')+this[I11IlilI(0x394,'UcPp')]+I11IlilI(0x295,'^b2O'));if(Iil1lilI&&ll1Ii1i1[I11IlilI(0x29c,'Dt67')](Iil1lilI[I11IlilI(0x2f6,'iU2q')],0x0)){let IIlll1l1=Iil1lilI[I11IlilI(0x4f4,'7qV7')]?.[I11IlilI(0x2d3,'g%W2')]||[];await this[I11IlilI(0x2a1,'D*%o')](IIlll1l1);}}let i1IiI1Il=await this[I11IlilI(0x45b,'6Ibe')](ll1Ii1i1[I11IlilI(0x281,'Yzhx')]);this[I11IlilI(0x1e7,'io9i')]=0x5;i1IiI1Il&&ll1Ii1i1[I11IlilI(0x34d,'Y0xe')](i1IiI1Il[I11IlilI(0x355,'zs(R')],0x0)&&(this[I11IlilI(0x5ef,'hTkd')]=i1IiI1Il[I11IlilI(0x479,'&Mwz')]?.[I11IlilI(0x2d6,'7qV7')]);if([0x272a,0x2760][I11IlilI(0x4c5,'Mba]')](this[I11IlilI(0x3a0,'BWzj')])){if(ll1Ii1i1[I11IlilI(0x21e,'2$6e')](ll1Ii1i1[I11IlilI(0x43b,'Mba]')],ll1Ii1i1[I11IlilI(0x2f7,'$46G')])){this[I11IlilI(0x43a,'9V5g')](ll1Ii1i1[I11IlilI(0x40f,'6Ibe')]),this[I11IlilI(0x4bc,'!vl)')]();return;}else this[I11IlilI(0x487,'Y0xe')]=0x3;}if(ll1Ii1i1[I11IlilI(0x51d,'D*%o')](this[I11IlilI(0x41b,'2wvH')],0x0)){if(ll1Ii1i1[I11IlilI(0x5b0,'^b2O')](ll1Ii1i1[I11IlilI(0x494,'UcPp')],ll1Ii1i1[I11IlilI(0x470,'Vw))')])){li1l111l++;ll1Ii1i1[I11IlilI(0x402,'D*%o')](li1l111l,i1iiI1i[I11IlilI(0x491,'2$6e')])&&ll1Ii1i1[I11IlilI(0x3dc,'WE]U')](i1iiI1i[I11IlilI(0x542,'io9i')],ll1Ii1i1[I11IlilI(0x2b8,'!fqq')](this[I11IlilI(0x3f6,'7v6M')],0x1))&&(this[I11IlilI(0x238,'vf9j')](ll1Ii1i1[I11IlilI(0x418,'2i6q')]),this[I11IlilI(0x320,'iU2q')]());this[I11IlilI(0x40e,'Dt67')](ll1Ii1i1[I11IlilI(0x29b,'zs(R')]);return;}else{this[I11IlilI(0x43a,'9V5g')](ll1Ii1i1[I11IlilI(0x49a,'!fqq')]),this[I11IlilI(0x458,'&Mwz')]();return;}}this[I11IlilI(0x27e,'G#gE')]=Math[I11IlilI(0x5b2,'UcPp')](this[I11IlilI(0x3b6,'Gv6n')],0x7);while(ll1Ii1i1[I11IlilI(0x32e,'ipJ8')](this[I11IlilI(0x487,'Y0xe')]--,0x0)){let IlllIl1I=await this[I11IlilI(0x3c6,'Ia5s')](I11IlilI(0x1fa,'2$6e'),{'consumePoints':0x0,'actId':this[I11IlilI(0x2ac,'zs(R')]});this[I11IlilI(0x420,'Mba]')](IlllIl1I);if(IlllIl1I&&ll1Ii1i1[I11IlilI(0x509,'iU2q')](IlllIl1I[I11IlilI(0x34c,'JGjT')],0x0)){if(ll1Ii1i1[I11IlilI(0x3d6,'!vl)')](ll1Ii1i1[I11IlilI(0x41f,'Mba]')],ll1Ii1i1[I11IlilI(0x522,'%MBJ')])){if(ll1Ii1i1[I11IlilI(0x2bc,'rBOq')](IlllIl1I[I11IlilI(0x566,'$A7*')],'1')){this[I11IlilI(0x392,'hTkd')](ll1Ii1i1[I11IlilI(0x577,'q!&9')]);return;}this[I11IlilI(0x478,'OWMm')](IlllIl1I[I11IlilI(0x409,'vf9j')]?.[I11IlilI(0x356,'$A7*')]||'空气'),IlllIl1I[I11IlilI(0x27c,'Vw))')]&&IlllIl1I[I11IlilI(0x3d1,'Gv6n')]?.[I11IlilI(0x1e1,'gtH7')]&&ll1Ii1i1[I11IlilI(0x4f3,'G#gE')](IlllIl1I[I11IlilI(0x479,'&Mwz')]?.[I11IlilI(0x4a6,'gtH7')],0x3)&&IlllIl1I[I11IlilI(0x584,'RcR$')]?.[I11IlilI(0x379,'2wvH')]&&ll1Ii1i1[I11IlilI(0x5ff,'Dt67')](IlllIl1I[I11IlilI(0x2eb,'2wvH')]?.[I11IlilI(0x545,'JGjT')],this[I11IlilI(0x563,'OWMm')](Date[I11IlilI(0x504,'2ukH')](),ll1Ii1i1[I11IlilI(0x1d4,'io9i')]))&&(this[I11IlilI(0x48e,'Dt67')]=IlllIl1I[I11IlilI(0x50f,'G#gE')][I11IlilI(0x4a5,'9V5g')],this[I11IlilI(0x2e4,'Vw))')]=IlllIl1I[I11IlilI(0x5fb,'^b2O')]?.[I11IlilI(0x2e6,'&Mwz')],await this[I11IlilI(0x263,'Mba]')]()),await this[I11IlilI(0x21c,'q!&9')](0xc8);}else{this[I11IlilI(0x2ea,'2ukH')](ll1Ii1i1[I11IlilI(0x26b,'7v6M')]),this[I11IlilI(0x4f7,'$46G')]();return;}}else{if(ll1Ii1i1[I11IlilI(0x37a,'gtH7')](ll1Ii1i1[I11IlilI(0x4e8,'$46G')],ll1Ii1i1[I11IlilI(0x421,'G#gE')])){const iIlIliIi=ll1Ii1i1[I11IlilI(0x32f,'7xR*')][I11IlilI(0x3e4,'CfK(')]('|');let l1iil1I1=0x0;while(!![]){switch(iIlIliIi[l1iil1I1++]){case'0':IIl11liI=ll1Ii1i1[I11IlilI(0x38d,'$A7*')];continue;case'1':IIiiil1=ll1Ii1i1[I11IlilI(0x38b,'7xR*')];continue;case'2':lllllll1=ll1Ii1i1[I11IlilI(0x38a,'g%W2')];continue;case'3':il1i111l=ll1Ii1i1[I11IlilI(0x3c1,'Ia5s')];continue;case'4':iillI1II=ll1Ii1i1[I11IlilI(0x35c,'dD$o')];continue;case'5':I1i1lli=ll1Ii1i1[I11IlilI(0x28c,'iU2q')];continue;case'6':iI1iiI1l=ll1Ii1i1[I11IlilI(0x20b,'7qV7')];continue;case'7':lIiII111=ll1Ii1i1[I11IlilI(0x34f,'G#gE')];continue;case'8':lIl1iI1l=ll1Ii1i1[I11IlilI(0x323,'6Ibe')];continue;case'9':Il11I11=ll1Ii1i1[I11IlilI(0x207,'%MBJ')];continue;case'10':IIiilIi1=ll1Ii1i1[I11IlilI(0x37e,'$A7*')];continue;case'11':iIiliiI1=ll1Ii1i1[I11IlilI(0x49c,'Yzhx')];continue;case'12':Ii1iiii1=ll1Ii1i1[I11IlilI(0x3ea,'%MBJ')];continue;case'13':llIi1II1=ll1Ii1i1[I11IlilI(0x5b6,'D*%o')];continue;case'14':lI11iI=ll1Ii1i1[I11IlilI(0x1f4,'ipJ8')];continue;case'15':lIIII1Ii=ll1Ii1i1[I11IlilI(0x57d,'gtH7')];continue;case'16':i1I11111=ll1Ii1i1[I11IlilI(0x2b7,'gtH7')];continue;case'17':llI1ili=ll1Ii1i1[I11IlilI(0x4b7,'9V5g')];continue;case'18':IllIllll=ll1Ii1i1[I11IlilI(0x2e0,'zs(R')];continue;case'19':iIlliI=ll1Ii1i1[I11IlilI(0x4c1,'rBOq')];continue;case'20':Illi1IIi=ll1Ii1i1[I11IlilI(0x4bf,'Vw))')];continue;case'21':l1IIill=ll1Ii1i1[I11IlilI(0x2f2,'*$%k')];continue;case'22':llIil1II=ll1Ii1i1[I11IlilI(0x314,'!vl)')];continue;case'23':I1I1iIIl=ll1Ii1i1[I11IlilI(0x5b7,'4rDR')];continue;case'24':Ili1l1=ll1Ii1i1[I11IlilI(0x226,'Dt67')];continue;case'25':lI1ii1lI=ll1Ii1i1[I11IlilI(0x223,'G#gE')];continue;case'26':iiIlI1l=ll1Ii1i1[I11IlilI(0x31d,'7qV7')];continue;case'27':lIIIIIII=ll1Ii1i1[I11IlilI(0x46b,'G#gE')];continue;case'28':liIliill=ll1Ii1i1[I11IlilI(0x50d,'BWzj')];continue;case'29':iiI11III=ll1Ii1i1[I11IlilI(0x5b9,'Yzhx')];continue;case'30':I111l1II=ll1Ii1i1[I11IlilI(0x4c4,'UcPp')];continue;case'31':Il11IiI1=ll1Ii1i1[I11IlilI(0x2a2,'7qV7')];continue;case'32':i1iliI1=ll1Ii1i1[I11IlilI(0x34e,'OWMm')];continue;case'33':liiIl11I=ll1Ii1i1[I11IlilI(0x43f,'RcR$')];continue;case'34':iil1lIl=ll1Ii1i1[I11IlilI(0x2e2,'Hu&o')];continue;case'35':I111IlI=ll1Ii1i1[I11IlilI(0x4b9,'ipJ8')];continue;case'36':l1I=ll1Ii1i1[I11IlilI(0x4e1,'2wvH')];continue;case'37':i11lIiIi=ll1Ii1i1[I11IlilI(0x24a,'OWMm')];continue;case'38':l11iI1li=ll1Ii1i1[I11IlilI(0x5e8,'Y0xe')];continue;case'39':i1Iliii1=ll1Ii1i1[I11IlilI(0x387,'!fqq')];continue;}break;}}else{let Il1IilI1=IlllIl1I?.[I11IlilI(0x3e1,'!vl)')];this[I11IlilI(0x5a5,'Ia5s')](Il1IilI1),this[I11IlilI(0x1e8,'4rDR')](Il1IilI1);return;}}}return;}}await this[I11IlilI(0x3a9,'Dt67')](),await this[I11IlilI(0x241,'g%W2')]();if(ll1Ii1i1[I11IlilI(0x393,'rBOq')](this[I11IlilI(0x4ae,'Hu&o')],0x0)){await this[I11IlilI(0x30e,'%nja')]();if(this[I11IlilI(0x5dd,'%MBJ')]&&([0x1a,0x80,0x81][I11IlilI(0x212,'*$%k')](this[I11IlilI(0x555,'!vl)')])&&i1iiI1i[I11IlilI(0x36a,'4rDR')][I11IlilI(0x517,'4rDR')](Ii11li11=>this[I11IlilI(0x528,'rBOq')][I11IlilI(0x5a7,'2$6e')](Ii11li11))||this[I11IlilI(0x501,'6Ibe')][I11IlilI(0x1dc,'Hu&o')](i1iiI1i[I11IlilI(0x220,'7xR*')]))){if(ll1Ii1i1[I11IlilI(0x3ae,'RcR$')](ll1Ii1i1[I11IlilI(0x50b,'2i6q')],ll1Ii1i1[I11IlilI(0x298,'Yzhx')])){const IIii1iIl=I1liIlII[I11IlilI(0x3f3,'Gv6n')](ii1lIl,arguments);return IIIilIil=null,IIii1iIl;}else{this[I11IlilI(0x5d1,'BWzj')](ll1Ii1i1[I11IlilI(0x5e1,'q!&9')]),this[I11IlilI(0x320,'iU2q')]();return;}}}ll1Ii1i1[I11IlilI(0x383,'D*%o')](this[I11IlilI(0x33d,'zs(R')][I11IlilI(0x434,'2i6q')],0x0)?await this[I11IlilI(0x1d5,'Y0xe')]():await this[I11IlilI(0x22b,'Hu&o')](),await this[I11IlilI(0x25a,'g%W2')]();let ii1liI1=await this[I11IlilI(0x2f9,'&Mwz')]();if(!ii1liI1?.[I11IlilI(0x485,'io9i')]||!ii1liI1?.[I11IlilI(0x539,'g%W2')]){this[I11IlilI(0x389,'dD$o')](ii1liI1?.[I11IlilI(0x28a,'7v6M')]);return;}let i11i1li1=ii1liI1[I11IlilI(0x5ea,'!vl)')]?.[I11IlilI(0x515,'$A7*')]??0x5,ii1ii11=ii1liI1[I11IlilI(0x584,'RcR$')]?.[I11IlilI(0x3fb,'^b2O')]??0x5,i1iIil1i=ii1liI1[I11IlilI(0x24c,'Yzhx')]?.[I11IlilI(0x603,'ipJ8')]??0x5,IIiii1li=ii1liI1[I11IlilI(0x5e5,'UcPp')]?.[I11IlilI(0x286,'Dt67')]||![],liiIl1I=ii1liI1[I11IlilI(0x506,'zs(R')]?.[I11IlilI(0x4d9,'2i6q')]||![],ilIlIIII=ii1liI1[I11IlilI(0x1df,'WE]U')]?.[I11IlilI(0x2de,'dD$o')][I11IlilI(0x59a,'!qW&')](lIl11llI=>[0x6,0x7,0xd,0xe,0xf,0x10][I11IlilI(0x53e,'NJ9H')](lIl11llI[I11IlilI(0x55b,'NJ9H')]));if(ll1Ii1i1[I11IlilI(0x1e9,'rBOq')](ilIlIIII[I11IlilI(0x310,'7qV7')],0x0)){if(ll1Ii1i1[I11IlilI(0x592,'rBOq')](ll1Ii1i1[I11IlilI(0x5f3,'g%W2')],ll1Ii1i1[I11IlilI(0x5a1,'7xR*')]))this[I11IlilI(0x511,'Vw))')](ll1Ii1i1[I11IlilI(0x228,'BWzj')]),this[I11IlilI(0x347,'WE]U')]();else{this[I11IlilI(0x392,'hTkd')](ll1Ii1i1[I11IlilI(0x543,'g%W2')]),this[I11IlilI(0x5e9,'2ukH')]();return;}}let IIliillI=await this[I11IlilI(0x2bd,'Gv6n')]();if(IIliillI&&IIliillI[I11IlilI(0x582,'2i6q')]){if(ll1Ii1i1[I11IlilI(0x561,'$46G')](ll1Ii1i1[I11IlilI(0x2be,'Y0xe')],ll1Ii1i1[I11IlilI(0x1dd,'9V5g')])){let IIiiIIi1=IIIiiI11?.[I11IlilI(0x2e9,'!fqq')];this[I11IlilI(0x364,'6Ibe')](IIiiIIi1),this[I11IlilI(0x574,'Vw))')](IIiiIIi1);return;}else{let I11lIiI=IIliillI[I11IlilI(0x4df,'*$%k')];if(I11lIiI?.[I11IlilI(0x5cf,'dD$o')]&&ll1Ii1i1[I11IlilI(0x219,'iU2q')](I11lIiI[I11IlilI(0x45c,'JGjT')][I11IlilI(0x301,'gtH7')],I11lIiI[I11IlilI(0x41d,'^b2O')][I11IlilI(0x3d0,'NJ9H')])){this[I11IlilI(0x403,'iU2q')](ll1Ii1i1[I11IlilI(0x476,'io9i')]);let i1il11lI=IIliillI[I11IlilI(0x571,'6Ibe')][I11IlilI(0x25f,'Dtdd')][I11IlilI(0x3cd,'Ia5s')];const lIliliII=I11lIiI?.[I11IlilI(0x273,'!vl)')]?.[I11IlilI(0x5ec,'7qV7')];i1il11lI=lIliliII?this[I11IlilI(0x41e,'6Ibe')](i1il11lI,lIliliII):i1il11lI;for(let i1IIllI=0x0;ll1Ii1i1[I11IlilI(0x415,'D*%o')](i1IIllI,ll1Ii1i1[I11IlilI(0x2f0,'io9i')](I11lIiI[I11IlilI(0x2f8,'$A7*')][I11IlilI(0x3b7,'!qW&')],I11lIiI[I11IlilI(0x4fb,'Gv6n')][I11IlilI(0x54f,'2ukH')]));i1IIllI++){await this[I11IlilI(0x57a,'WE]U')](i1il11lI[i1IIllI]),await this[I11IlilI(0x380,'%MBJ')](0x64);}i11i1li1++;}}}i11i1li1=Math[I11IlilI(0x5d5,'Mba]')](i11i1li1,i1iIil1i,0x7);if(ll1Ii1i1[I11IlilI(0x452,'rBOq')](i11i1li1,0x0))return li1l111l++,ll1Ii1i1[I11IlilI(0x294,'BWzj')](li1l111l,i1iiI1i[I11IlilI(0x497,'$46G')])&&ll1Ii1i1[I11IlilI(0x231,'CfK(')](i1iiI1i[I11IlilI(0x532,'zs(R')],ll1Ii1i1[I11IlilI(0x324,'7xR*')](this[I11IlilI(0x32d,'CfK(')],0x1))&&(ll1Ii1i1[I11IlilI(0x4de,'iU2q')](ll1Ii1i1[I11IlilI(0x2b0,'!qW&')],ll1Ii1i1[I11IlilI(0x481,'dD$o')])?(this[I11IlilI(0x3d7,'UcPp')](ll1Ii1i1[I11IlilI(0x5f2,'D*%o')]),this[I11IlilI(0x4e0,'Gv6n')]()):(this[I11IlilI(0x259,'WE]U')](ll1Ii1i1[I11IlilI(0x5f2,'D*%o')]),this[I11IlilI(0x3cb,'CfK(')]())),this[I11IlilI(0x2a6,'io9i')](ll1Ii1i1[I11IlilI(0x362,'2$6e')]);ll1Ii1i1[I11IlilI(0x276,'Mba]')](liiIl1I,!IIiii1li)&&(this[I11IlilI(0x222,'&Mwz')](ll1Ii1i1[I11IlilI(0x3da,'!fqq')]),await this[I11IlilI(0x553,'Dtdd')](ll1Ii1i1[I11IlilI(0x3ac,'!fqq')],{'buyerPin':this[I11IlilI(0x5f1,'zs(R')],'venderId':this[I11IlilI(0x332,'io9i')],'activityType':this[I11IlilI(0x1fd,'zs(R')]}));while(ll1Ii1i1[I11IlilI(0x20d,'ipJ8')](i11i1li1--,0x0)){let i1l1iIl=await this[I11IlilI(0x2d8,'Dt67')](this[I11IlilI(0x552,'Yzhx')]+I11IlilI(0x51a,'UcPp'),{'pin':this[I11IlilI(0x2b2,'4rDR')]});this[I11IlilI(0x4ad,'!fqq')](i1l1iIl);if(i1l1iIl&&i1l1iIl[I11IlilI(0x485,'io9i')])this[I11IlilI(0x2da,'D*%o')](''+(i1l1iIl[I11IlilI(0x405,'7xR*')]?.[I11IlilI(0x5c0,'2$6e')]||'空气')),ll1Ii1i1[I11IlilI(0x27b,'2i6q')](i1l1iIl[I11IlilI(0x438,'%nja')]?.[I11IlilI(0x299,'7xR*')],0x7)&&ll1Ii1i1[I11IlilI(0x595,'7xR*')](i1l1iIl[I11IlilI(0x566,'$A7*')]?.[I11IlilI(0x368,'NJ9H')],'y')&&i1l1iIl[I11IlilI(0x5e5,'UcPp')]?.[I11IlilI(0x486,'7qV7')]&&(this[I11IlilI(0x45e,'BWzj')]=i1l1iIl[I11IlilI(0x5e5,'UcPp')][I11IlilI(0x52e,'D*%o')],this[I11IlilI(0x256,'7v6M')]=i1l1iIl[I11IlilI(0x593,'dD$o')][I11IlilI(0x5de,'Dtdd')],await this[I11IlilI(0x3af,'Gv6n')]()),await this[I11IlilI(0x4c8,'hTkd')](0x1f4);else{let Il1llI1=i1l1iIl?.[I11IlilI(0x289,'RcR$')];if(Il1llI1?.[I11IlilI(0x39a,'OWMm')](ll1Ii1i1[I11IlilI(0x385,'io9i')])&&await this[I11IlilI(0x25f,'Dtdd')]()){if(ll1Ii1i1[I11IlilI(0x464,'2i6q')](ll1Ii1i1[I11IlilI(0x3b9,'Y0xe')],ll1Ii1i1[I11IlilI(0x588,'9V5g')])){this[I11IlilI(0x2fc,'2$6e')](ll1Ii1i1[I11IlilI(0x31e,'Mba]')]),this[I11IlilI(0x5e9,'2ukH')]();return;}else{i11i1li1++;continue;}}if(Il1llI1?.[I11IlilI(0x3b3,'!fqq')](ll1Ii1i1[I11IlilI(0x232,'NJ9H')])&&ll1Ii1i1[I11IlilI(0x282,'g%W2')](i1iiI1i[I11IlilI(0x531,'7qV7')],0x1)){await this[I11IlilI(0x1eb,'4rDR')]();if(this[I11IlilI(0x466,'RcR$')])return this[I11IlilI(0x1f6,'2$6e')]();i11i1li1++;continue;}this[I11IlilI(0x1ff,'2i6q')](Il1llI1),this[I11IlilI(0x445,'zs(R')](Il1llI1);return;}}}}ilIIi[li1liI1i(0x2b5,'ipJ8')]={'activityUrl':activityUrl},ilIIi[li1liI1i(0x544,'2i6q')]=ll1i1IiI,ilIIi[li1liI1i(0x40a,'gtH7')]({'whitelist':[li1liI1i(0x431,'!fqq')],'main_thread':0x3});var version_ = 'jsjiami.com.v7'; \ No newline at end of file diff --git a/m_jd_wx_shopSign.js b/m_jd_wx_shopSign.js new file mode 100644 index 0000000..8c02ffa --- /dev/null +++ b/m_jd_wx_shopSign.js @@ -0,0 +1,278 @@ +/* +签到有礼beta v2.0.0 + +https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=4879ca4f9b4d4e9580ac09eca30b44ac +https://lzkj-isv.isvjd.com/prod/cc/interaction/v2/10023/1001/?activityId=1752260456689242113&shopId=1000001706 +https://lzkj-isv.isvjcloud.com/prod/cc/interactsaas/index?activityType=10002&activityId=1764492473030377474&templateId=20201228083300lxqdsl011&nodeId=101001003&prd=cjwx +https://jinggeng-rc.isvjcloud.com/ql/front/showSign?id=9e80802c8dc9f04d018df48f286509c1&user_id=10028198 +https://txzj-isv.isvjcloud.com/sign_in/home?a=UHpDWkVHNFhlTzhGZ2MrYUV3 + +export B_WX_SIGN_URL="" + +cron: 7 7 7 7 7 * +const $ = new Env("签到有礼beta"); +*/ +let mode = __dirname.includes('bear'); + +let activityUrl = decodeURIComponent(process.argv.splice(2)?.[0] || process.env.M_WX_SHOP_SIGN_URL); + +if (mode) { +} + +const { + RunMode: I, + UserMode: J +} = require("./bear"); + +I.envInfo = { + "name": "签到有礼beta", + "runName": "jd_wx_sign", + "version": "2.0.0" +}; +let K = process.env.B_WX_SHOP_SIGN_BEAN_GOODS ? process.env.B_WX_SHOP_SIGN_BEAN_GOODS : false, + M = ["10001", "10002", "10003", "10004", "10023", "10040"]; +process.env.B_WX_SIGN_ACTIVITY_TYPES ? process.env.B_WX_SIGN_ACTIVITY_TYPES.split(/[@,&|]/).forEach(e => M.push(e)) : ""; + +class N extends J { + constructor(e, f) { + super(e, f); + } + + async ["v2Sign"](e = true) { + let g = await this.v2Api("api/" + this.activityType + "/sign"); + this.debug(g); + if (g && g.code === 200) this.putMsg(g.data?.["prizeName"] || "签到成功"); else { + if (g?.["message"]["includes"]("不是店铺会员") && e) { + await this.bindWithVender(); + await this.sign(false); + } + } + } + + async ["signPost"](e = true) { + let g = await this.hdbApi(this.hdbPrefix ? this.hdbPrefix + "front/cusActivity/cusSignPost" : "signPost"); + + if (g && g.succ) { + g?.["result"]?.["awardRes"]?.["needSend"] && this.putMsg(g.result?.["awardRes"]?.["dmActivityLog"]?.["awardName"] || "空气"); + let j = g.result?.["signLog"]?.["continueCount"]; + this.putMsg("已连续签到" + j + "天"); + return; + } + + let h = g?.["message"]; + + if (e && h?.["includes"]("关注店铺") && (await this.follow())) { + return await this.signPost(false); + } + + this.putMsg(h); + this.wxStop(h); + return; + } + + async ["userTask"]() { + await this.isvObfuscator(); + + if (this.mode === "txzj") { + if (!this.activityId) return this.putMsg("活动链接错误"), this.stop(); + let h = await this.taskPost("front/jd_store_user_info", { + "token": this.isvToken + }); + + if (!h || h.code !== "success") { + let k = h.msg || "获取用户信息失败"; + return this.putMsg(k), this.wxStop(k); + } + + let i = await this.taskPost("sign_in/receive_prize", { + "pid": this.activityId + }); + this.debug(i); + + if (i && i.code === "success") { + this.putMsg("签到成功"); + if (i?.["data"]?.["prize_title"]) switch (i?.["data"]?.["prize_title"]["type"]) { + case "coupon": + this.putMsg("优惠券"); + break; + + case "bean": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "京豆"); + break; + + case "integral": + this.putMsg((i.data.prize_title?.["prize_title"] || i.data.prize_title?.["once_num"]) + "积分"); + break; + + case "goods": + this.putMsg("" + i.data.prize_title.prize_name); + break; + + default: + this.putMsg(JSON.stringify(i?.["data"]?.["prize_title"])); + } + return; + } + + let j = i?.["msg"] || "签到失败"; + this.putMsg(j); + this.wxStop(j); + return; + } + + if (this.mode === "v2") { + await this.login(); + await this.v2Sign(); + let m = await this.v2Api("api/" + this.activityType + "/calendar"); + this.debug(m); + + if (m && m.code === 200) { + let n = m.data.continuousSignDays; + this.putMsg("已连续签到" + n + "天"); + } + + return; + } + + if (this.mode === "jinggeng") { + this.userId = this.userId || this.getQueryString(this.activityUrl, "userId"); + this.activityId = this.activityId || this.getQueryString(this.activityUrl, "actId"); + await this.setMixNick(); + await this.jinggengShopInfo(); + await this.taskPost("front/followShop", { + "userId": this.userId + }); + let p = await this.jinggengApi("saveSignIn"); + this.debug(p); + + if (p && p.succ) { + if (p?.["msg"]?.["includes"]("签到成功但不需要发奖")) this.putMsg("签到成功"); else { + let s = JSON.parse(p.msg); + s?.["isSendSucc"] ? this.putMsg(s?.["actLogDto"]?.["remark"]) : this.putMsg("空气"); + } + return; + } + + let q = p?.["msg"] || "签到失败"; + this.putMsg(q); + this.wxStop(q); + return; + } + + if (this.mode === "hdb") { + return this.hdbPrefix = "", this.activityUrl?.["includes"]("BudweiserSignIn") && (this.hdbEncript = true, this.hdbLoginPath = "sign_java/front/fans/login", this.hdbPrefix = "sign_java/"), await this.login(), await this.reportPVUV(this.hdbPrefix + "front/activity/reportPVUV"), await this.loadFrontAct(this.hdbPrefix + "front/activity/loadFrontAct"), await this.signPost(); + } + + await this.getDefenseUrls(); + + if (M.includes(this.activityType)) { + await this.login(); + let v = ["10001", "10002", "10003", "10004"].includes(this.activityType) ? "api/task/sign/add" : "api/task/daySign/getSignClick", + w = await this.lzkjApi(v); + this.debug(w); + + if (w && w.resp_code === 0) { + this.putMsg("签到成功"); + let y = w?.["data"]?.["prizeName"]; + this.putMsg(y); + w.data && w.data?.["prizeName"] && w.data?.["prizeType"] === 3 && w.data?.["addressId"] && w.data?.["dayTime"] === this.formatDate(Date.now(), "yyyy-MM-dd") && (this.addressId = w.data.addressId, this.prizeName = w.data?.["prizeName"], await this.saveAddress()); + return; + } + + let x = w?.["resp_msg"] || "签到失败"; + this.putMsg(x); + this.wxStop(x); + return; + } + + await this.wxCommonInfo(); + await this.getSimpleActInfoVo(); + this.defenseUrls.length === 0 ? await this.getMyPing() : await this.initPinToken(); + await this.accessLog(); + this.isSevenDay = this.activityUrl?.["includes"]("sevenDay"); + this.isCj = this.activityUrl?.["includes"]("//cjhy"); + + if (this.index === 0) { + let z = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/getActivity" : "sign/wx/getActivity", { + "actId": this.activityId, + "venderId": this.venderId + }); + this.debug(z); + + if (!z || !z.isOk) { + let A = z?.["msg"] || "活动已结束"; + this.putMsg(A); + this.wxStop(A); + } else { + let B = z?.["act"]?.["startTime"], + C = z?.["act"]?.["endTime"]; + J.activity.startTime = B; + J.activity.endTime = C; + + if (B && B > this.timestamp()) { + return this.putMsg("活动未开始"), this.stop(); + } + + if (C && C < this.timestamp()) return this.putMsg("活动已结束"), this.stop(); + let D = []; + + if (this.isSevenDay) { + for (let Q of z?.["act"]?.["giftBean"]?.["giftConditions"] || []) { + Q.gift && (Q.gift.dayNum = Q.dayNum, D.push(Q.gift)); + } + } else { + z?.["act"]?.["wxSignActivityGiftBean"]?.["hasGiftEveryDay"] === "y" && D.push(z?.["act"]?.["wxSignActivityGiftBean"]?.["gift"]); + + if (z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"]?.["length"] > 0) { + for (let R of z?.["act"]?.["wxSignActivityGiftBean"]?.["giftConditions"] || []) { + R.gift && (R.gift.dayNum = R.dayNum, D.push(R.gift)); + } + } + } + + D = D.filter(T => ["6", "7", "9", "13", "14", "15", "16"].includes(T.giftType) && !T.insufficient); + if (D.length === 0) return this.putMsg("垃圾或领完"), this.stop(); + if (K && D.filter(T => ["6", "7", "13", "14", "15", "16"].includes(T.giftType)).length === 0) return this.putMsg("垃圾或领完"), this.stop(); + } + } + + this.debug(this.isSevenDay ? "sign/sevenDay/wx/signUp" : "sign/wx/signUp"); + let f = await this.wxApi(this.isSevenDay ? "sign/sevenDay/wx/signUp" : "sign/wx/signUp", { + "actId": this.activityId, + "pin": this.secretPin + }); + this.debug(f); + + if (f && f.isOk) { + this.putMsg("签到成功"); + let U = this.isSevenDay ? f.signResult?.["gift"] : f.gift, + V = ""; + + if (U) { + let W = this.isSevenDay ? f.signResult?.["gift"]?.["giftName"] : f?.["gift"]?.["giftName"], + X = this.isCj ? f?.["signResult"]?.["send"] ? "" : "(已发完)" : f?.["isSend"] ? "" : "(已发完)"; + V = "" + W + X; + this.addressId = f?.["addressId"]; + f?.["needWriteAddress"] === "y" && this.addressId && (this.prizeName = W, await this.saveAddress()); + } + + this.putMsg(V); + return; + } + + let g = f?.["msg"] || f?.["errMsg"] || "签到失败"; + this.putMsg(g); + this.wxStop(g); + } + +} + +I.activity = { + "activityUrl": activityUrl +}; +I.TaskClass = N; +I.run({ + "whitelist": ["1-100000"], + "main_thread": 5, + "wxProxyCheck": 2 +}); \ No newline at end of file diff --git a/sendNotify.js b/sendNotify.js new file mode 100644 index 0000000..18dfc98 --- /dev/null +++ b/sendNotify.js @@ -0,0 +1,872 @@ +/* + * @Author: lxk0301 https://gitee.com/lxk0301 + * @Date: 2020-08-19 16:12:40 + * @Last Modified by: whyour + * @Last Modified time: 2021-5-1 15:00:54 + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + */ + +const querystring = require('querystring'); +const $ = new Env(); +const timeout = 15000; //超时时间(单位毫秒) +// =======================================gotify通知设置区域============================================== +//gotify_url 填写gotify地址,如https://push.example.de:8080 +//gotify_token 填写gotify的消息应用token +//gotify_priority 填写推送消息优先级,默认为0 +let GOTIFY_URL = ''; +let GOTIFY_TOKEN = ''; +let GOTIFY_PRIORITY = 0; +// =======================================go-cqhttp通知设置区域=========================================== +//gobot_url 填写请求地址http://127.0.0.1/send_private_msg +//gobot_token 填写在go-cqhttp文件设置的访问密钥 +//gobot_qq 填写推送到个人QQ或者QQ群号 +//go-cqhttp相关API https://docs.go-cqhttp.org/api +let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 + +// =======================================微信server酱通知设置区域=========================================== +//此处填你申请的SCKEY. +//(环境变量名 PUSH_KEY) +let SCKEY = ''; + +// =======================================Bark App通知设置区域=========================================== +//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +let BARK_PUSH = ''; +//BARK app推送图标,自定义推送图标(需iOS15或以上) +let BARK_ICON = + 'https://img.gejiba.com/images/a3f551e09ac19add4c49ec16228729c5.png'; +//BARK app推送铃声,铃声列表去APP查看复制填写 +let BARK_SOUND = ''; +//BARK app推送消息的分组, 默认为"QingLong" +let BARK_GROUP = 'QingLong'; + +// =======================================telegram机器人通知设置区域=========================================== +//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +//(环境变量名 TG_BOT_TOKEN) +let TG_BOT_TOKEN = ''; +//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +//(环境变量名 TG_USER_ID) +let TG_USER_ID = ''; +//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = ''; //tg代理配置认证参数 +//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'api.telegram.org'; +// =======================================钉钉机器人通知设置区域=========================================== +//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +//(环境变量名 DD_BOT_TOKEN) +let DD_BOT_TOKEN = ''; +//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +let DD_BOT_SECRET = ''; + +// =======================================企业微信机器人通知设置区域=========================================== +//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +//(环境变量名 QYWX_KEY) +let QYWX_KEY = ''; + +// =======================================企业微信应用消息通知设置区域=========================================== +/* + 此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) + 环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) + 注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat + 可选推送消息类型(推荐使用图文消息(mpnews)): + - 文本卡片消息: 0 (数字零) + - 文本消息: 1 (数字一) + - 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) + */ +let QYWX_AM = ''; + +// =======================================iGot聚合推送通知设置区域=========================================== +//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +let IGOT_PUSH_KEY = ''; + +// =======================================push+设置区域======================================= +//官方文档:http://www.pushplus.plus/ +//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +let PUSH_PLUS_TOKEN = ''; +let PUSH_PLUS_USER = ''; + +//==========================云端环境变量的判断与接收========================= +if (process.env.GOTIFY_URL) { + GOTIFY_URL = process.env.GOTIFY_URL; +} +if (process.env.GOTIFY_TOKEN) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN; +} +if (process.env.GOTIFY_PRIORITY) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY; +} + +if (process.env.GOBOT_URL) { + GOBOT_URL = process.env.GOBOT_URL; +} +if (process.env.GOBOT_TOKEN) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN; +} +if (process.env.GOBOT_QQ) { + GOBOT_QQ = process.env.GOBOT_QQ; +} + +if (process.env.PUSH_KEY) { + SCKEY = process.env.PUSH_KEY; +} + +if (process.env.QQ_SKEY) { + QQ_SKEY = process.env.QQ_SKEY; +} + +if (process.env.QQ_MODE) { + QQ_MODE = process.env.QQ_MODE; +} + +if (process.env.BARK_PUSH) { + if ( + process.env.BARK_PUSH.indexOf('https') > -1 || + process.env.BARK_PUSH.indexOf('http') > -1 + ) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`; + } + if (process.env.BARK_ICON) { + BARK_ICON = process.env.BARK_ICON; + } + if (process.env.BARK_SOUND) { + BARK_SOUND = process.env.BARK_SOUND; + } + if (process.env.BARK_GROUP) { + BARK_GROUP = process.env.BARK_GROUP; + } +} else { + if ( + BARK_PUSH && + BARK_PUSH.indexOf('https') === -1 && + BARK_PUSH.indexOf('http') === -1 + ) { + //兼容BARK本地用户只填写设备码的情况 + BARK_PUSH = `https://api.day.app/${BARK_PUSH}`; + } +} +if (process.env.TG_BOT_TOKEN) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN; +} +if (process.env.TG_USER_ID) { + TG_USER_ID = process.env.TG_USER_ID; +} +if (process.env.TG_PROXY_AUTH) TG_PROXY_AUTH = process.env.TG_PROXY_AUTH; +if (process.env.TG_PROXY_HOST) TG_PROXY_HOST = process.env.TG_PROXY_HOST; +if (process.env.TG_PROXY_PORT) TG_PROXY_PORT = process.env.TG_PROXY_PORT; +if (process.env.TG_API_HOST) TG_API_HOST = process.env.TG_API_HOST; + +if (process.env.DD_BOT_TOKEN) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN; + if (process.env.DD_BOT_SECRET) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET; + } +} + +if (process.env.QYWX_KEY) { + QYWX_KEY = process.env.QYWX_KEY; +} + +if (process.env.QYWX_AM) { + QYWX_AM = process.env.QYWX_AM; +} + +if (process.env.IGOT_PUSH_KEY) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY; +} + +if (process.env.PUSH_PLUS_TOKEN) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN; +} +if (process.env.PUSH_PLUS_USER) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER; +} +//==========================云端环境变量的判断与接收========================= + +/** + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + * @returns {Promise} + */ +async function sendNotify( + text, + desp, + params = {}, + author = '\n\n本通知 By:https://github.com/whyour/qinglong', +) { + //提供6种通知 + desp += author; //增加作者信息,防止被贩卖等 + await Promise.all([ + serverNotify(text, desp), //微信server酱 + pushPlusNotify(text, desp), //pushplus(推送加) + ]); + //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + BarkNotify(text, desp, params), //iOS Bark APP + tgBotNotify(text, desp), //telegram 机器人 + ddBotNotify(text, desp), //钉钉机器人 + qywxBotNotify(text, desp), //企业微信机器人 + qywxamNotify(text, desp), //企业微信应用消息推送 + iGotNotify(text, desp, params), //iGot + gobotNotify(text, desp), //go-cqhttp + gotifyNotify(text, desp), //gotify + ]); +} + +function gotifyNotify(text, desp) { + return new Promise((resolve) => { + if (GOTIFY_URL && GOTIFY_TOKEN) { + const options = { + url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, + body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent( + desp, + )}&priority=${GOTIFY_PRIORITY}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('gotify发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.id) { + console.log('gotify发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function gobotNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (GOBOT_URL) { + const options = { + url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, + json: { message: `${text}\n${desp}` }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送go-cqhttp通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.retcode === 0) { + console.log('go-cqhttp发送通知消息成功🎉\n'); + } else if (data.retcode === 100) { + console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log( + `go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`, + ); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function serverNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (SCKEY) { + //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + desp = desp.replace(/[\n\r]/g, '\n\n'); + const options = { + url: SCKEY.includes('SCT') + ? `https://sctapi.ftqq.com/${SCKEY}.send` + : `https://sc.ftqq.com/${SCKEY}.send`, + body: `text=${text}&desp=${desp}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + //server酱和Server酱·Turbo版的返回json格式不太一样 + if (data.errno === 0 || data.data.errno === 0) { + console.log('server酱发送通知消息成功🎉\n'); + } else if (data.errno === 1024) { + // 一分钟内发送相同的内容会触发 + console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log( + `server酱发送通知消息异常\n${JSON.stringify(data)}`, + ); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function CoolPush(text, desp) { + return new Promise((resolve) => { + if (QQ_SKEY) { + let options = { + url: `https://push.xuthus.cc/${QQ_MODE}/${QQ_SKEY}`, + headers: { + 'Content-Type': 'application/json', + }, + }; + + // 已知敏感词 + text = text.replace(/京豆/g, '豆豆'); + desp = desp.replace(/京豆/g, ''); + desp = desp.replace(/🐶/g, ''); + desp = desp.replace(/红包/g, 'H包'); + + switch (QQ_MODE) { + case 'email': + options.json = { + t: text, + c: desp, + }; + break; + default: + options.body = `${text}\n\n${desp}`; + } + + let pushMode = function (t) { + switch (t) { + case 'send': + return '个人'; + case 'group': + return 'QQ群'; + case 'wx': + return '微信'; + case 'ww': + return '企业微信'; + case 'email': + return '邮件'; + default: + return '未知方式'; + } + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`发送${pushMode(QQ_MODE)}通知调用API失败!!\n`); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功🎉\n`); + } else if (data.code === 400) { + console.log( + `QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${ + data.msg + }\n`, + ); + } else if (data.code === 503) { + console.log(`QQ酷推出错,${data.message}:${data.data}\n`); + } else { + console.log(`酷推推送异常: ${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function BarkNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (BARK_PUSH) { + const options = { + url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( + desp, + )}?icon=${BARK_ICON}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify( + params, + )}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log('Bark APP发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log('Bark APP发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function tgBotNotify(text, desp) { + return new Promise((resolve) => { + if (TG_BOT_TOKEN && TG_USER_ID) { + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}&disable_web_page_preview=true`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require('tunnel'); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH, + }, + }), + }; + Object.assign(options, { agent }); + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉。\n'); + } else if (data.error_code === 400) { + console.log( + '请主动给bot发送一条消息并检查接收用户ID是否正确。\n', + ); + } else if (data.error_code === 401) { + console.log('Telegram bot token 填写错误。\n'); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function ddBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (DD_BOT_TOKEN && DD_BOT_SECRET) { + const crypto = require('crypto'); + const dateNow = Date.now(); + const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); + hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); + const result = encodeURIComponent(hmac.digest('base64')); + options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else if (DD_BOT_TOKEN) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息完成。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function qywxBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (QYWX_KEY) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('企业微信发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('企业微信发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function ChangeUserId(desp) { + const QYWX_AM_AY = QYWX_AM.split(','); + if (QYWX_AM_AY[2]) { + const userIdTmp = QYWX_AM_AY[2].split('|'); + let userId = ''; + for (let i = 0; i < userIdTmp.length; i++) { + const count = '账号' + (i + 1); + const count2 = '签到号 ' + (i + 1); + if (desp.match(count2)) { + userId = userIdTmp[i]; + } + } + if (!userId) userId = QYWX_AM_AY[2]; + return userId; + } else { + return '@all'; + } +} + +function qywxamNotify(text, desp) { + return new Promise((resolve) => { + if (QYWX_AM) { + const QYWX_AM_AY = QYWX_AM.split(','); + const options_accesstoken = { + url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, + json: { + corpid: `${QYWX_AM_AY[0]}`, + corpsecret: `${QYWX_AM_AY[1]}`, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options_accesstoken, (err, resp, data) => { + html = desp.replace(/\n/g, '
'); + var json = JSON.parse(data); + accesstoken = json.access_token; + let options; + + switch (QYWX_AM_AY[4]) { + case '0': + options = { + msgtype: 'textcard', + textcard: { + title: `${text}`, + description: `${desp}`, + url: 'https://github.com/whyour/qinglong', + btntxt: '更多', + }, + }; + break; + + case '1': + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + break; + + default: + options = { + msgtype: 'mpnews', + mpnews: { + articles: [ + { + title: `${text}`, + thumb_media_id: `${QYWX_AM_AY[4]}`, + author: `智能助手`, + content_source_url: ``, + content: `${html}`, + digest: `${desp}`, + }, + ], + }, + }; + } + if (!QYWX_AM_AY[4]) { + //如不提供第四个参数,则默认进行文本消息类型推送 + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + } + options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, + json: { + touser: `${ChangeUserId(desp)}`, + agentid: `${QYWX_AM_AY[3]}`, + safe: '0', + ...options, + }, + headers: { + 'Content-Type': 'application/json', + }, + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log( + '成员ID:' + + ChangeUserId(desp) + + '企业微信应用消息发送通知消息失败!!\n', + ); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log( + '成员ID:' + + ChangeUserId(desp) + + '企业微信应用消息发送通知消息成功🎉。\n', + ); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); + } else { + resolve(); + } + }); +} + +function iGotNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (IGOT_PUSH_KEY) { + // 校验传入的IGOT_PUSH_KEY是否有效 + const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); + if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { + console.log('您所提供的IGOT_PUSH_KEY无效\n'); + resolve(); + return; + } + const options = { + url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, + body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + if (typeof data === 'string') data = JSON.parse(data); + if (data.ret === 0) { + console.log('iGot发送通知消息成功🎉\n'); + } else { + console.log(`iGot发送通知消息失败:${data.errMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function pushPlusNotify(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN) { + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER}`, + }; + const options = { + url: `https://www.pushplus.plus/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log( + `push+发送${ + PUSH_PLUS_USER ? '一对多' : '一对一' + }通知消息失败!!\n`, + ); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log( + `push+发送${ + PUSH_PLUS_USER ? '一对多' : '一对一' + }通知消息完成。\n`, + ); + } else { + console.log( + `push+发送${ + PUSH_PLUS_USER ? '一对多' : '一对一' + }通知消息失败:${data.msg}\n`, + ); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +module.exports = { + sendNotify, + BARK_PUSH, +}; + +// prettier-ignore +function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;$.isMute||(this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o))),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)}