From 6e35363394ed6f79dc0848639f3a4543ced4c530 Mon Sep 17 00:00:00 2001 From: cokyrain <75012356+cokyrain@users.noreply.github.com> Date: Thu, 24 Dec 2020 10:21:33 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=91=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决云函数报错 in method 'console_log', argument 1 of type 'char *' --- jd_bean_sign.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jd_bean_sign.js b/jd_bean_sign.js index 62b19a3..accf599 100644 --- a/jd_bean_sign.js +++ b/jd_bean_sign.js @@ -65,7 +65,7 @@ async function execSign() { const notifyContent = await fs.readFileSync(resultPath, "utf8"); console.log(`👇👇👇👇👇👇👇👇👇👇👇LOG记录👇👇👇👇👇👇👇👇👇👇👇\n${notifyContent}\n👆👆👆👆👆👆👆👆👆LOG记录👆👆👆👆👆👆👆👆👆👆👆`); // await exec("node JD_DailyBonus.js", { stdio: "inherit" }); - // console.log('执行完毕', new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleDateString()) + // console.log('执行完毕', new Date(new Date().getTime() + 8 * 3600000).toLocaleDateString()) //发送通知 if ($.isNode()) { let notifyContent = ""; @@ -88,7 +88,7 @@ async function execSign() { } } //不管哪个时区,这里得到的都是北京时间的时间戳; - const UTC8 = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; + const UTC8 = new Date().getTime() + new Date().getTimezoneOffset()*60000 + 28800000; $.beanSignTime = timeFormat(UTC8); console.log(`脚本执行完毕时间:${$.beanSignTime}`) if (BarkContent) { From 0266a60f3c06056e628c8c862ab685ded841dcf5 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Thu, 24 Dec 2020 11:06:32 +0800 Subject: [PATCH 02/12] =?UTF-8?q?joy=E6=8C=82=E6=9C=BA=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=8E=BB=E6=8E=89cookie=E8=BF=87=E6=9C=9F=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- activity/jd_live_redrain2.js | 2 -- jd_bean_home.js | 2 -- jd_car.js | 2 -- jd_crazy_joy.js | 6 ------ jd_crazy_joy_coin.js | 8 +------- jd_jdzz.js | 2 -- jd_live_redrain.js | 2 -- jr_sign.js | 2 -- 8 files changed, 1 insertion(+), 25 deletions(-) diff --git a/activity/jd_live_redrain2.js b/activity/jd_live_redrain2.js index aeb5c6c..a575ab4 100644 --- a/activity/jd_live_redrain2.js +++ b/activity/jd_live_redrain2.js @@ -67,8 +67,6 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jd_bean_home.js b/jd_bean_home.js index 8ef8daa..a4109d7 100644 --- a/jd_bean_home.js +++ b/jd_bean_home.js @@ -68,8 +68,6 @@ const JD_API_HOST = 'https://api.m.jd.com/'; if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jd_car.js b/jd_car.js index b41d215..a695a2b 100644 --- a/jd_car.js +++ b/jd_car.js @@ -65,8 +65,6 @@ const JD_API_HOST = 'https://car-member.jd.com/api/'; if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jd_crazy_joy.js b/jd_crazy_joy.js index af86385..73efae7 100644 --- a/jd_crazy_joy.js +++ b/jd_crazy_joy.js @@ -190,8 +190,6 @@ if ($.isNode()) { if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } @@ -217,8 +215,6 @@ if ($.isNode()) { if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } @@ -241,8 +237,6 @@ if ($.isNode()) { if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jd_crazy_joy_coin.js b/jd_crazy_joy_coin.js index 0faa591..c3ee2ac 100644 --- a/jd_crazy_joy_coin.js +++ b/jd_crazy_joy_coin.js @@ -179,13 +179,7 @@ if ($.isNode()) { await TotalBean(); console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); - - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 - } + $.log(`\n京东账号${$.index} ${$.nickName || $.UserName}\ncookie已过期,请重新登录获取\n`) continue } await jdJxStory() diff --git a/jd_jdzz.js b/jd_jdzz.js index 042a860..f5da363 100644 --- a/jd_jdzz.js +++ b/jd_jdzz.js @@ -73,8 +73,6 @@ const inviteCodes = [ if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jd_live_redrain.js b/jd_live_redrain.js index 596e3af..f13c7e3 100644 --- a/jd_live_redrain.js +++ b/jd_live_redrain.js @@ -89,8 +89,6 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } diff --git a/jr_sign.js b/jr_sign.js index 17dd9ce..b7e6089 100644 --- a/jr_sign.js +++ b/jr_sign.js @@ -62,8 +62,6 @@ const JD_API_HOST = 'https://api.m.jd.com/api'; if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } else { - $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 } continue } From f4051b5a5ff832c7ad51c311e5531f0353650e98 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Thu, 24 Dec 2020 11:50:06 +0800 Subject: [PATCH 03/12] update --- githubAction.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/githubAction.md b/githubAction.md index 1886e71..54a9f63 100644 --- a/githubAction.md +++ b/githubAction.md @@ -13,17 +13,17 @@ | `JD_DEBUG` | 脚本打印log | 非必须 | 运行脚本时,是否显示log,默认显示。改成false表示不显示,注重隐私的人可以在设置secret -> `Name:JD_DEBUG,Value:false` | | `JD_USER_AGENT` | 京东 | 非必须 | 自定义此库里京东系列脚本的UserAgent,不懂不知不会UserAgent的请不要随意填写内容。具体获取参考此[issue](https://github.com/lxk0301/jd_scripts/issues/127) | -##### 推送通知环境变量 +##### 推送通知环境变量(目前提供`微信server酱`、`pushplus(推送加)`、`iOS Bark APP`、`telegram机器人`、`钉钉机器人`、`企业微信机器人`、`iGot`、`QQ酷推`等通知方式) | Name | 归属 | 属性 | 说明 | | :---------------------: | :----------: | --------- | ------------------------------------------------------------ | -| `PUSH_KEY` | 微信推送 | 非必须 | cookie失效推送[server酱的微信通知](http://sc.ftqq.com/3.version) | -| `BARK_PUSH` | [BARK推送](https://apps.apple.com/us/app/bark-customed-notifications/id1403753865) | 非必须 | cookie失效推送BARK这个APP,填写内容是app提供的`设备码`,例如:https://api.day.app/123 ,那么此处的设备码就是`123`,再不懂看 [这个图](icon/bark.jpg)(注:支持自建填完整链接即可) | +| `PUSH_KEY` | 微信server酱推送 | 非必须 | server酱的微信通知[官方文档](http://sc.ftqq.com/3.version) | +| `BARK_PUSH` | [BARK推送](https://apps.apple.com/us/app/bark-customed-notifications/id1403753865) | 非必须 | IOS用户下载BARK这个APP,填写内容是app提供的`设备码`,例如:https://api.day.app/123 ,那么此处的设备码就是`123`,再不懂看 [这个图](icon/bark.jpg)(注:支持自建填完整链接即可) | | `BARK_SOUND` | [BARK推送](https://apps.apple.com/us/app/bark-customed-notifications/id1403753865) | 非必须 | bark推送声音设置,例如`choo`,具体值请在`bark`-`推送铃声`-`查看所有铃声` | -| `TG_BOT_TOKEN` | telegram推送 | 非必须 | tg推送,填写自己申请[@BotFather](https://t.me/BotFather)的Token,如`10xxx4:AAFcqxxxxgER5uw` , [具体教程](./backUp/TG_PUSH.md) | -| `TG_USER_ID` | telegram推送 | 非必须 | tg推送,填写[@getuseridbot](https://t.me/getuseridbot)中获取到的纯数字ID, [具体教程](./backUp/TG_PUSH.md) | -| `DD_BOT_TOKEN` | 钉钉推送 | 非必须 | 钉钉推送[官方文档](https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq) ,只需`https://oapi.dingtalk.com/robot/send?access_token=XXX` 等于`=`符号后面的XXX即可 | -| `DD_BOT_SECRET` | 钉钉推送 | 非必须 | 密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的`SECXXXXXXXXXX`等字符 , 注:钉钉机器人安全设置只需勾选`加签`即可,其他选项不要勾选,再不懂看 [这个图](icon/DD_bot.png) | +| `TG_BOT_TOKEN` | telegram推送 | 非必须 | tg推送(需设备可连接外网),`TG_BOT_TOKEN`和`TG_USER_ID`两者必需,填写自己申请[@BotFather](https://t.me/BotFather)的Token,如`10xxx4:AAFcqxxxxgER5uw` , [具体教程](./backUp/TG_PUSH.md) | +| `TG_USER_ID` | telegram推送 | 非必须 | tg推送(需设备可连接外网),`TG_BOT_TOKEN`和`TG_USER_ID`两者必需,填写[@getuseridbot](https://t.me/getuseridbot)中获取到的纯数字ID, [具体教程](./backUp/TG_PUSH.md) | +| `DD_BOT_TOKEN` | 钉钉推送 | 非必须 | 钉钉推送(`DD_BOT_TOKEN`和`DD_BOT_SECRET`两者必需)[官方文档](https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq) ,只需`https://oapi.dingtalk.com/robot/send?access_token=XXX` 等于`=`符号后面的XXX即可 | +| `DD_BOT_SECRET` | 钉钉推送 | 非必须 | (`DD_BOT_TOKEN`和`DD_BOT_SECRET`两者必需) ,密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的`SECXXXXXXXXXX`等字符 , 注:钉钉机器人安全设置只需勾选`加签`即可,其他选项不要勾选,再不懂看 [这个图](icon/DD_bot.png) | | `QYWX_KEY` | 企业微信推送 | 非必须 | 密钥,企业微信推送 webhook 后面的 key [详见官方说明文档](https://work.weixin.qq.com/api/doc/90000/90136/91770) | | `IGOT_PUSH_KEY` | iGot推送 | 非必须 | iGot聚合推送,支持多方式推送,确保消息可达。 [参考文档](https://wahao.github.io/Bark-MP-helper ) | | `QQ_SKEY` | 酷推(Cool Push)推送 | 非必须 | 推送所需的Skey,登录后获取Skey [参考文档](https://cp.xuthus.cc/) | From 648474a27dc96d2afb61a1b7338769332194e337 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Thu, 24 Dec 2020 13:54:23 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=AE=A0=E6=B1=AA=E6=B1=AA=E8=B5=9B?= =?UTF-8?q?=E8=B7=91=E6=B7=BB=E5=8A=A0=E9=A2=86=E5=8F=96=E8=83=BD=E5=8A=9B?= =?UTF-8?q?=E8=A1=A5=E7=BB=99=E7=AB=99=E5=8A=9F=E8=83=BD,(2=E4=BA=BA?= =?UTF-8?q?=E8=B5=9B=E8=B7=91=E5=8F=AF=E5=8A=A05KM=EF=BC=8C50=E4=BA=BA?= =?UTF-8?q?=E8=B5=9B=E8=B7=91=E5=8F=AF=E5=8A=A025KM)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_joy.js | 72 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/jd_joy.js b/jd_joy.js index 0016638..302fc97 100644 --- a/jd_joy.js +++ b/jd_joy.js @@ -1,9 +1,8 @@ /* -TODO 能力补给站(2人赛跑可加5KM,50人赛跑可加25KM),抽空添加 jd宠汪汪 搬的https://github.com/uniqueque/QuantumultX/blob/4c1572d93d4d4f883f483f907120a75d925a693e/Script/jd_joy.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js IOS用户支持京东双账号,NodeJs用户支持N个京东账号 -更新时间:2020-12-14 +更新时间:2020-12-24 建议先凌晨0点运行jd_joy.js脚本获取狗粮后,再运行此脚本(jd_joy_steal.js)可偷好友积分,6点运行可偷好友狗粮 feedCount:自定义 每次喂养数量; 等级只和喂养次数有关,与数量无关 推荐每次投喂10个,积累狗粮,然后去玩聚宝盆赌 @@ -136,8 +135,8 @@ async function joinTwoPeopleRun() { let teamLevelTemp = []; teamLevelTemp = $.isNode() ? (process.env.JOY_TEAM_LEVEL ? process.env.JOY_TEAM_LEVEL.split('&') : teamLevel.split('&')) : ($.getdata('JOY_TEAM_LEVEL') ? $.getdata('JOY_TEAM_LEVEL').split('&') : teamLevel.split('&')); teamLevelTemp = teamLevelTemp[$.index - 1] ? teamLevelTemp[$.index - 1] : 2; - console.log(`\n===========以下是${teamLevelTemp}人赛跑信息========\n`) await getPetRace(); + console.log(`\n===以下是京东账号${$.index} ${$.nickName} ${$.petRaceResult.data.teamLimitCount || teamLevelTemp}人赛跑信息===\n`) if ($.petRaceResult) { let petRaceResult = $.petRaceResult.data.petRaceResult; // let raceUsers = $.petRaceResult.data.raceUsers; @@ -146,13 +145,13 @@ async function joinTwoPeopleRun() { console.log(`暂未参赛,现在为您参加${teamLevelTemp}人赛跑`); await runMatch(teamLevelTemp * 1); if ($.runMatchResult.success) { - console.log(`${teamLevelTemp}人赛跑参加成功\n`); - message += `${teamLevelTemp}人赛跑:成功参加\n`; - await getPetRace(); - petRaceResult = $.petRaceResult.data.petRaceResult; - await getRankList(); - // raceUsers = $.petRaceResult.data.raceUsers; - // console.log(`参赛后的状态:${petRaceResult}`) + await getWinCoin(); + console.log(`${$.getWinCoinRes.data.teamLimitCount || teamLevelTemp}人赛跑参加成功\n`); + message += `${$.getWinCoinRes.data.teamLimitCount || teamLevelTemp}人赛跑:成功参加\n`; + // if ($.getWinCoinRes.data['supplyOrder']) await energySupplyStation($.getWinCoinRes.data['supplyOrder']); + await energySupplyStation('2'); + // petRaceResult = $.petRaceResult.data.petRaceResult; + // await getRankList(); console.log(`双人赛跑助力请自己手动去邀请好友,脚本不带赛跑助力功能\n`); } } @@ -165,18 +164,21 @@ async function joinTwoPeopleRun() { if (petRaceResult === 'unreceive') { console.log('今日参赛的比赛已经结束,现在领取奖励'); await getWinCoin(); - let winCoin = 0; + let winCoin = 0, teamLimitCount = 2; if ($.getWinCoinRes && $.getWinCoinRes.success) { winCoin = $.getWinCoinRes.data.winCoin; + teamLimitCount = $.getWinCoinRes.data.teamLimitCount; } await receiveJoyRunAward(); console.log(`领取赛跑奖励结果:${JSON.stringify($.receiveJoyRunAwardRes)}`) if ($.receiveJoyRunAwardRes.success) { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${teamLevelTemp}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); - if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n${teamLevelTemp}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${teamLimitCount}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); + if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n${teamLimitCount}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) } } if (petRaceResult === 'participate') { + // if ($.getWinCoinRes.data['supplyOrder']) await energySupplyStation($.getWinCoinRes.data['supplyOrder']); + await energySupplyStation('2'); await getRankList(); if($.raceUsers && $.raceUsers.length > 0) { for (let index = 0; index < $.raceUsers.length; index++) { @@ -735,6 +737,50 @@ function receiveJoyRunAward() { }) }) } +//能力补给站 +async function energySupplyStation(showOrder) { + let status; + await getSupplyInfo(showOrder); + if ($.getSupplyInfoRes && $.getSupplyInfoRes.success) { + if ($.getSupplyInfoRes.data) { + const { marketList } = $.getSupplyInfoRes.data; + for (let list of marketList) { + if (!list['status']) { + await scanMarket('combat/supply', { showOrder, 'supplyType': 'scan_market', 'taskInfo': list.marketLink || list['marketLinkH5'], 'reqSource': 'weapp' }); + await getSupplyInfo(showOrder); + } else { + $.log(`能力补给站 ${$.getSupplyInfoRes.data.addDistance}km里程 已领取\n`); + status = list['status']; + } + } + if (!status) { + await energySupplyStation(showOrder); + } + } + } +} +function getSupplyInfo(showOrder) { + return new Promise(resolve => { + const url = `${weAppUrl}/combat/getSupplyInfo?showOrder=${showOrder}`; + $.get(taskUrl(url, 'draw.jdfcloud.com', `weapp`), (err, resp, data) => { + try { + if (err) { + console.log('\n京东宠汪汪: API查询请求失败 ‼️‼️') + } else { + // console.log('查询应援团信息API',(data)) + // $.appGetPetTaskConfigRes = JSON.parse(data); + if (data) { + $.getSupplyInfoRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} function showMsg() { jdNotify = $.getdata('jdJoyNotify') ? $.getdata('jdJoyNotify') : jdNotify; if (!jdNotify || jdNotify === 'false') { From 5656d57fc1e2a0564c8538784fe0c995ad5e10c2 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Thu, 24 Dec 2020 18:10:30 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84joy=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=92=E5=8A=A9=E7=A0=81=E5=A1=AB=E5=86=99=E7=9A=84?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=20JDJOY=5FSHARECODES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- githubAction.md | 1 + jd_crazy_joy.js | 43 ++++++++++++++++++++++++++++++------------- jd_plantBean.js | 20 ++++++++++---------- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/githubAction.md b/githubAction.md index 54a9f63..c730ea0 100644 --- a/githubAction.md +++ b/githubAction.md @@ -44,6 +44,7 @@ | `DDFACTORY_SHARECODES` | 东东工厂互助码 | 非必须 | 填写规则请看 [jdFactoryShareCodes.js](https://github.com/lxk0301/jd_scripts/blob/master/jdFactoryShareCodes.js) 或见下方[互助码的填写规则](#互助码的填写规则) | | `DREAM_FACTORY_SHARE_CODES`| 京喜工厂互助码 | 非必须 | 填写规则请看 [jdDreamFactoryShareCodes.js](https://github.com/lxk0301/jd_scripts/blob/master/jdDreamFactoryShareCodes.js) 或见下方[互助码的填写规则](#互助码的填写规则) | | `JDZZ_SHARECODES` | 京东赚赚(jd_jdzz.js)脚本互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | +| `JDJOY_SHARECODES` | 疯狂的joy(jd_crazy_joy.js)脚本互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | ##### 控制脚本功能环境变量 diff --git a/jd_crazy_joy.js b/jd_crazy_joy.js index 73efae7..f85bb81 100644 --- a/jd_crazy_joy.js +++ b/jd_crazy_joy.js @@ -29,13 +29,14 @@ const JD_API_HOST = 'https://api.m.jd.com/'; const notify = $.isNode() ? require('./sendNotify') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -let helpSelf = false // 循环助力 +let helpSelf = false // 循环助力,默认关闭 let applyJdBean = 0 let cookiesArr = [], cookie = '', message = ''; const inviteCodes = [ - 'EdLPh8A6X5G1iWXu-uPYfA==@0gUO7F7N-4HVDh9mdQC2hg==@fUJTgR9z26fXdQgTvt_bgqt9zd5YaBeE', - 'EdLPh8A6X5G1iWXu-uPYfA==@0gUO7F7N-4HVDh9mdQC2hg==@fUJTgR9z26fXdQgTvt_bgqt9zd5YaBeE' + 'EdLPh8A6X5G1iWXu-uPYfA==@0gUO7F7N-4HVDh9mdQC2hg==@fUJTgR9z26fXdQgTvt_bgqt9zd5YaBeE@nCQQXQHKGjPCb7jkd8q2U-aCTjZMxL3s@2boGLV7TonMex8-nrT6EGat9zd5YaBeE', + 'EdLPh8A6X5G1iWXu-uPYfA==@0gUO7F7N-4HVDh9mdQC2hg==@fUJTgR9z26fXdQgTvt_bgqt9zd5YaBeE@nCQQXQHKGjPCb7jkd8q2U-aCTjZMxL3s@2boGLV7TonMex8-nrT6EGat9zd5YaBeE' ]; +const randomCount = 5; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { @@ -575,7 +576,30 @@ function taskUrl(functionId, body = '') { } } } - +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `https://code.chiang.fun/api/v1/jd/jdcrazyjoy/read/${randomCount}/`}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} //格式化助力码 function shareCodesFormat() { return new Promise(async resolve => { @@ -588,7 +612,7 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - const readShareCodeRes = null //await readShareCode(); + const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } @@ -605,16 +629,9 @@ function requireConfig() { if ($.isNode()) { if (process.env.JDJOY_SHARECODES) { if (process.env.JDJOY_SHARECODES.indexOf('\n') > -1) { - console.log(`您的互助码选择的是用\n隔开\n`) shareCodes = process.env.JDJOY_SHARECODES.split('\n'); - } else if (process.env.JDJOY_SHARECODES.indexOf('&') > -1) { - console.log(`您的互助码选择的是用&隔开\n`) - shareCodes = process.env.JDJOY_SHARECODES.split('&'); - } else if (process.env.JDJOY_SHARECODES.indexOf('@') > -1) { - console.log(`您的互助码选择的是用@隔开\n`) - shareCodes = process.env.JDJOY_SHARECODES.split('@'); } else { - shareCodes = process.env.JDJOY_SHARECODES.split(); + shareCodes = process.env.JDJOY_SHARECODES.split('&'); } } if (process.env.JDJOY_HELPSELF) { diff --git a/jd_plantBean.js b/jd_plantBean.js index 91abc36..9497a07 100644 --- a/jd_plantBean.js +++ b/jd_plantBean.js @@ -701,21 +701,21 @@ function request(function_id, body = {}){ }) } function taskUrl(function_id, body) { - body["version"] = "9.0.0.1"; + body["version"] = "9.2.4.0"; body["monitor_source"] = "plant_app_plant_index"; body["monitor_refer"] = ""; return { url: JD_API_HOST, - body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, headers: { - 'Cookie': cookie, - 'Host': 'api.m.jd.com', - 'Accept': '*/*', - 'Connection': 'keep-alive', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': "application/x-www-form-urlencoded" + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" } } } From 984c761001a4b4e1136a27bd0176fb66f0d5d9ef Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Thu, 24 Dec 2020 18:55:46 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BA=91=E5=87=BD=E6=95=B0=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=96=B0=E5=A2=9E=E7=96=AF=E7=8B=82=E7=9A=84joy?= =?UTF-8?q?=E4=BA=92=E5=8A=A9=E7=A0=81secret?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 云函数同步新增疯狂的joy互助码secret --- .github/workflows/deploy_tencent_scf.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy_tencent_scf.yml b/.github/workflows/deploy_tencent_scf.yml index 78ff553..100db47 100644 --- a/.github/workflows/deploy_tencent_scf.yml +++ b/.github/workflows/deploy_tencent_scf.yml @@ -70,6 +70,7 @@ jobs: if [ $DDFACTORY_SHARECODES ]; then sed -i "/variables/a\ DDFACTORY_SHARECODES: $DDFACTORY_SHARECODES" serverless.yml; fi; if [ $DREAM_FACTORY_SHARE_CODES ]; then sed -i "/variables/a\ DREAM_FACTORY_SHARE_CODES: $DREAM_FACTORY_SHARE_CODES" serverless.yml; fi; if [ $JDZZ_SHARECODES ]; then sed -i "/variables/a\ JDZZ_SHARECODES: $JDZZ_SHARECODES" serverless.yml; fi; + if [ $JDJOY_SHARECODES ]; then sed -i "/variables/a\ JDJOY_SHARECODES: $JDJOY_SHARECODES" serverless.yml; fi; if [ $TG_PROXY_HOST ]; then sed -i "/variables/a\ TG_PROXY_HOST: $TG_PROXY_HOST" serverless.yml; fi; if [ $TG_PROXY_PORT ]; then sed -i "/variables/a\ TG_PROXY_PORT: $TG_PROXY_PORT" serverless.yml; fi; if [ $MONEY_TREE_SELL_FRUIT ]; then sed -i "/variables/a\ MONEY_TREE_SELL_FRUIT: $MONEY_TREE_SELL_FRUIT" serverless.yml; fi; @@ -124,6 +125,7 @@ jobs: DDFACTORY_SHARECODES: ${{ secrets.DDFACTORY_SHARECODES}} DREAM_FACTORY_SHARE_CODES: ${{ secrets.DREAM_FACTORY_SHARE_CODES}} JDZZ_SHARECODES: ${{ secrets.JDZZ_SHARECODES}} + JDJOY_SHARECODES: ${{ secrets.JDJOY_SHARECODES}} TG_PROXY_HOST: ${{ secrets.TG_PROXY_HOST}} TG_PROXY_PORT: ${{ secrets.TG_PROXY_PORT}} MONEY_TREE_SELL_FRUIT: ${{ secrets.MONEY_TREE_SELL_FRUIT}} From 05ced9c7ebbca9064fe7fe3019e12180786949df Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Thu, 24 Dec 2020 21:28:46 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=A0=E6=B1=AA?= =?UTF-8?q?=E6=B1=AA=E8=B5=9B=E8=B7=91=E6=88=90=E5=8A=9F=E5=90=8E=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E5=A5=96=E5=8A=B1=E5=87=BA=E7=8E=B0=E7=9A=84"null?= =?UTF-8?q?=E4=BA=BA"=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_joy.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/jd_joy.js b/jd_joy.js index 302fc97..8425277 100644 --- a/jd_joy.js +++ b/jd_joy.js @@ -164,16 +164,15 @@ async function joinTwoPeopleRun() { if (petRaceResult === 'unreceive') { console.log('今日参赛的比赛已经结束,现在领取奖励'); await getWinCoin(); - let winCoin = 0, teamLimitCount = 2; + let winCoin = 0; if ($.getWinCoinRes && $.getWinCoinRes.success) { winCoin = $.getWinCoinRes.data.winCoin; - teamLimitCount = $.getWinCoinRes.data.teamLimitCount; } await receiveJoyRunAward(); console.log(`领取赛跑奖励结果:${JSON.stringify($.receiveJoyRunAwardRes)}`) if ($.receiveJoyRunAwardRes.success) { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${teamLimitCount}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); - if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n${teamLimitCount}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${$.name}赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); + if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n太棒了,${$.name}赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) } } if (petRaceResult === 'participate') { From cd965558a0bd0cb5cc472c542d2f8d604d4ee7d4 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Fri, 25 Dec 2020 00:18:57 +0800 Subject: [PATCH 08/12] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a9bf204..7002d51 100644 --- a/README.md +++ b/README.md @@ -59,8 +59,6 @@ **TODO** -- [ ] 东东工厂相互助力 -- [ ] 京喜工厂相互助力 ## 食用方法 From dc75ca79f03667e4adbcc5e675c47d591871b4b4 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Fri, 25 Dec 2020 00:20:58 +0800 Subject: [PATCH 09/12] Update githubAction.md --- githubAction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/githubAction.md b/githubAction.md index c730ea0..415242e 100644 --- a/githubAction.md +++ b/githubAction.md @@ -118,9 +118,9 @@ Apple京东自营旗舰店 100&100&iPhone12&Apple京东自营旗舰店 ``` -#### 关于脚本推送通知(微信server酱推送通知,bark app推送通知,telegram机器人推送通知,钉钉机器人推送通知,iGot聚合推送) +#### 关于脚本推送通知频率 - > 如果你填写了上面五种推送通知方式中的某一个通知所需secret,那么脚本通知情况如下: + > 如果你填写了推送通知方式中的某一种通知所需环境变量,那么脚本通知情况如下: > 目前默认只有jd_fruit.js,jd_pet.js,jd_bean_sign.js,jd_818.js四个脚本每次运行后都通知 From ba02d455e5feef928aa24021aef83a6122a9f8bd Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Fri, 25 Dec 2020 09:47:57 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B0=B4=E6=9E=9C?= =?UTF-8?q?=E6=88=90=E7=86=9F=E5=90=8E=E7=9A=84=E5=BC=B9=E7=AA=97=E6=8F=90?= =?UTF-8?q?=E9=86=92=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_fruit.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jd_fruit.js b/jd_fruit.js index 4f2eaa5..03185eb 100644 --- a/jd_fruit.js +++ b/jd_fruit.js @@ -1,6 +1,6 @@ /* 东东水果:脚本更新地址 https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js -更新时间:2020-12-15 +更新时间:2020-12-25 东东农场活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html 已支持IOS双京东账号,Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js @@ -279,7 +279,7 @@ async function doTenWater() { } if (isFruitFinished) { option['open-url'] = urlSchema; - $.msg($.name, `【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取`, '请去京东APP或微信小程序查看\n点击弹窗即达', option); + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); @@ -403,7 +403,7 @@ async function doTenWaterAgain() { } if (isFruitFinished) { option['open-url'] = urlSchema; - $.msg($.name, `【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取`, '请去京东APP或微信小程序查看\n点击弹窗即达', option); + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `京东账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); @@ -431,7 +431,7 @@ async function doTenWaterAgain() { } if (isFruitFinished) { option['open-url'] = urlSchema; - $.msg($.name, `【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取`, '请去京东APP或微信小程序查看\n点击弹窗即达', option); + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `京东账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); From 38921af1a051f91c431852c1698e2419acda8211 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Fri, 25 Dec 2020 09:54:53 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E4=BA=AC=E5=96=9C=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E5=A6=82=E6=9A=82=E6=9C=AA=E9=80=89=E6=8B=A9=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=94=9F=E4=BA=A7=EF=BC=8C=E5=88=99=E6=AF=8F?= =?UTF-8?q?=E9=9A=946=E5=B0=8F=E6=97=B6=E6=8F=90=E9=86=92=E4=B8=80?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_dreamFactory.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/jd_dreamFactory.js b/jd_dreamFactory.js index ba26199..4c0b8fc 100644 --- a/jd_dreamFactory.js +++ b/jd_dreamFactory.js @@ -565,7 +565,12 @@ function userInfo() { // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); } else if (data.factoryList && !data.productionList) { console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) - // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + if (nowTimes.getHours() % 6 === 0) { + //如按每小时运行一次,则此处将一天推送4次提醒 + $.msg($.name, '提醒⏰', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`) + } } } } else { From 234c47f003fac346a81639df83326947140c7c1b Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Fri, 25 Dec 2020 10:41:07 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E5=A4=A9=E5=A4=A9=E5=8A=A0=E9=80=9F?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E8=87=AA=E5=8A=A8=E9=A2=86=E5=8F=96?= =?UTF-8?q?=20=E5=B7=B2=E5=AE=8C=E6=88=90=E7=9A=84=E8=99=AB=E6=B4=9E?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BA=AC=E8=B1=86=E5=A5=96=E5=8A=B1(?= =?UTF-8?q?=E6=AF=8F=E4=B8=AA=E4=BB=BB=E5=8A=A1=E5=8F=AF=E5=BE=97100-300?= =?UTF-8?q?=E4=BA=AC=E8=B1=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_speed.js | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/jd_speed.js b/jd_speed.js index f9da4a9..305701c 100644 --- a/jd_speed.js +++ b/jd_speed.js @@ -1,12 +1,11 @@ /* 京东天天加速链接:https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js -更新时间:2020-11-03 +更新时间:2020-12-25 支持京东双账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 每天4京豆,再小的苍蝇也是肉 从 https://github.com/Zero-S1/JD_tools/blob/master/JD_speed.py 改写来的 建议3小时运行一次,打卡时间间隔是6小时 -注:如果使用Node.js, 需自行安装'crypto-js,got,http-server,tough-cookie'模块. 例: npm install crypto-js http-server tough-cookie got --save */ // quantumultx // [task_local] @@ -67,6 +66,7 @@ const JD_API_HOST = 'https://api.m.jd.com/' message = ''; subTitle = ''; await jDSpeedUp(); + await getMemBerList(); await showMsg(); } } @@ -85,7 +85,7 @@ function showMsg() { $.log(`\n${message}\n`); } } -function jDSpeedUp(sourceId, doubleKey) { +function jDSpeedUp(sourceId) { return new Promise((resolve) => { let body = {"source": "game"}; if (sourceId) { @@ -109,6 +109,7 @@ function jDSpeedUp(sourceId, doubleKey) { try { if (err) { console.log('京东天天-加速: 签到接口请求失败 ‼️‼️'); + console.log(`${JSON.stringify(err)}`) } else { if (data) { let res = JSON.parse(data); @@ -184,6 +185,7 @@ function spaceEventList() { try { if (err) { console.log("\n京东天天-加速: 查询太空特殊事件请求失败 ‼️‼️") + console.log(`${JSON.stringify(err)}`) } else { if (data) { const cc = JSON.parse(data); @@ -244,6 +246,7 @@ function spaceEventHandleEvent(spaceEventList) { try { if (err) { console.log("\n京东天天-加速: 处理太空特殊事件请求失败 ‼️‼️") + console.log(`${JSON.stringify(err)}`) } else { if (data) { const cc = JSON.parse(data); @@ -291,6 +294,7 @@ function energyPropList() { try { if (err) { console.log("\n京东天天-加速: 查询道具请求失败 ‼️‼️") + console.log(`${JSON.stringify(err)}`) } else { if (data) { const cc = JSON.parse(data) @@ -346,6 +350,7 @@ function receiveEnergyProp(CID) { try { if (error) { console.log("\n天天加速-领取道具请求失败 ‼️‼️") + console.log(`${JSON.stringify(error)}`) } else { if (data) { const cc = JSON.parse(data) @@ -390,6 +395,7 @@ function energyPropUsaleList(EID) { try { if (error) { console.log("\n天天加速-查询道具ID请求失败 ‼️‼️") + console.log(`${JSON.stringify(error)}`) } else { if (data) { const cc = JSON.parse(data); @@ -450,6 +456,7 @@ function useEnergy(PropID) { try { if (error) { console.log("\n天天加速-使用燃料请求失败 ‼️‼️") + console.log(`${JSON.stringify(error)}`) } else { if (data) { const cc = JSON.parse(data); @@ -476,6 +483,84 @@ function useEnergy(PropID) { } }) } +function getMemBerList() { + return new Promise((resolve) => { + const body = { "source": "game", "status": 0}; + const spaceEventUrl = { + url: `${JD_API_HOST}?appid=memberTaskCenter&functionId=member_list&body=${escape(JSON.stringify(body))}&_t=${Date.now()}`, + headers: { + Referer: 'https://h5.m.jd.com/babelDiy/Zeus/6yCQo2eDJPbyPXrC3eMCtMWZ9ey/index.html', + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + } + } + $.get(spaceEventUrl, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data && data.success) { + $.getRewardBeans = 0; + console.log(`\n检查是否可领虫洞京豆奖励`) + $.memBerList = data.data.filter(item => item['taskStatus'] === 2); + if ($.memBerList && $.memBerList.length > 0) { + for (let uuids of $.memBerList) { + await getReward(uuids['uuid']); + } + if ($.getRewardBeans > 0) { + $.msg(`${$.name}`, '', `${$.index} ${$.nickName}\n虫洞任务:获得${$.getRewardBeans}京豆`); + await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName}`, `${$.index} ${$.nickName}\n虫洞任务:获得${$.getRewardBeans}京豆`) + } + } else { + console.log(`暂无可领取的虫洞京豆奖励`) + } + } + } + } + } catch (e) { + $.msg("天天加速-查询太空特殊事件" + e.name + "‼️", JSON.stringify(e), e.message) + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function getReward(uuid) { + return new Promise((resolve) => { + const body = { "source": "game", uuid}; + const options = { + url: `${JD_API_HOST}?appid=memberTaskCenter&functionId=member_getReward&body=${escape(JSON.stringify(body))}&_t=${Date.now()}`, + headers: { + Referer: 'https://h5.m.jd.com/babelDiy/Zeus/6yCQo2eDJPbyPXrC3eMCtMWZ9ey/index.html', + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data && data.success) { + $.getRewardBeans += data.data.beans; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} function TotalBean() { return new Promise(async resolve => { const options = { @@ -527,5 +612,16 @@ function jsonParse(str) { } } } +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} // prettier-ignore function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,o)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),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}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{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=e&&e.timeout?e.timeout:o;const[r,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":r,Accept:"*/*"}};this.post(a,(t,e,i)=>s(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),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;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),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),o=JSON.stringify(this.data);s?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(e,o):this.fs.writeFileSync(t,o)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return s;return o}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),o=s?this.getval(s):"";if(o)try{const t=JSON.parse(o);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(e),r=this.getval(i),h=i?"null"===r?null:r||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,o,t),s=this.setval(JSON.stringify(e),i)}catch(e){const r={};this.lodash_set(r,o,t),s=this.setval(JSON.stringify(r),i)}}else s=this.setval(t,e);return s}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,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||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,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:o,body:r}=t;e(null,{status:s,statusCode:i,headers:o,body:r},r)},t=>e(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:o,body:r}=t;e(null,{status:s,statusCode:i,headers:o,body:r},r)},t=>e(t)))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:o,body:r}=t;e(null,{status:s,statusCode:i,headers:o,body:r},r)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:o,body:r}=t;e(null,{status:s,statusCode:i,headers:o,body:r},r)},t=>e(t))}}time(t){let e={"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 s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",o){const r=t=>{if(!t||!this.isLoon()&&this.isSurge())return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,r(o)):this.isQuanX()&&$notify(e,s,i,r(o)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file