From bd0230f3f06b638697ff574817d210397895aaa5 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 27 Aug 2020 03:21:34 +0800 Subject: [PATCH] luci-app-jd-dailybonus: bump to v0.8.4 --- .../ctcgfw/luci-app-jd-dailybonus/Makefile | 4 +- .../luasrc/model/cbi/jd-dailybonus/client.lua | 7 + .../po/zh-cn/jd-dailybonus.po | 3 + .../root/etc/config/jd-dailybonus | 5 +- .../root/etc/init.d/jd-dailybonus | 2 - .../usr/share/jd-dailybonus/JD_DailyBonus.js | 659 ++++++++++-------- .../root/usr/share/jd-dailybonus/newapp.sh | 14 +- 7 files changed, 387 insertions(+), 307 deletions(-) diff --git a/package/ctcgfw/luci-app-jd-dailybonus/Makefile b/package/ctcgfw/luci-app-jd-dailybonus/Makefile index 6072b71d11..17c8f546a5 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/Makefile +++ b/package/ctcgfw/luci-app-jd-dailybonus/Makefile @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-jd-dailybonus LUCI_PKGARCH:=all -PKG_VERSION:=0.8.3 -PKG_RELEASE:=20200804 +PKG_VERSION:=0.8.4 +PKG_RELEASE:=20200826 include $(INCLUDE_DIR)/package.mk diff --git a/package/ctcgfw/luci-app-jd-dailybonus/luasrc/model/cbi/jd-dailybonus/client.lua b/package/ctcgfw/luci-app-jd-dailybonus/luasrc/model/cbi/jd-dailybonus/client.lua index 4385ae7102..46295dee7c 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/luasrc/model/cbi/jd-dailybonus/client.lua +++ b/package/ctcgfw/luci-app-jd-dailybonus/luasrc/model/cbi/jd-dailybonus/client.lua @@ -13,6 +13,13 @@ o = s:option(DummyValue, "", "") o.rawhtml = true o.template = "jd-dailybonus/cookie_tools" +o = s:option(ListValue, "remote_url", translate("Source Update Url")) +o:value("https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js", translate("GitHub")) +o:value("https://gitee.com/jerrykuku/staff/raw/master/JD_DailyBonus.js", translate("Gitee")) +o.default = "nil" +o.rmempty = false +o.description = translate('当GitHub源无法更新时,可以选择使用国内Gitee源') + o = s:option(Value, "cookie", translate("First Cookie")) o.rmempty = false diff --git a/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po b/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po index 2f309b4d53..cfb449a0f4 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po +++ b/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po @@ -22,6 +22,9 @@ msgstr "基本设置" msgid "Cookie Tools" msgstr "Cookie 工具" +msgid "Source Update Url" +msgstr "更新源地址" + msgid "First Cookie" msgstr "主账号Cookie" diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus index 266cd79716..6c2266466a 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus @@ -1,8 +1,9 @@ config global - option version '1.37' + option version '1.47' option auto_run_time '1' option auto_run '1' option auto_update_time '1' option auto_update '1' option stop '0' - option failed '0' \ No newline at end of file + option failed '0' + option remote_url 'https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js' \ No newline at end of file diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/init.d/jd-dailybonus b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/init.d/jd-dailybonus index bb16fa803c..211e4837e5 100755 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/init.d/jd-dailybonus +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/init.d/jd-dailybonus @@ -11,8 +11,6 @@ START=25 NAME=jd-dailybonus CRON_FILE=/etc/crontabs/root -JD_SCRIPT=/usr/share/jd-dailybonus/JD_DailyBonus.js - del_cron() { diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js index 59e37bef03..a525fb7200 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js @@ -2,8 +2,8 @@ 京东多合一签到脚本 -更新时间: 2020.8.3 21:50 v1.37 (Beta) -有效接口: 24+ +更新时间: 2020.8.23 16:30 v1.47 (Beta) +有效接口: 29+ 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 电报频道: @NobyDa 问题反馈: @NobyDa_bot @@ -91,14 +91,17 @@ var LogDetails = false; //是否开启响应日志, true则开启 var stop = 0; //自定义延迟签到,单位毫秒. 默认分批并发无延迟. 延迟作用于每个签到接口, 如填入延迟则切换顺序签到(耗时较长), VPN重启或越狱用户建议填写1, Surge用户请注意在SurgeUI界面调整脚本超时 -var DeleteCookie = false; //是否清除Cookie, true则开启 +var DeleteCookie = false; //是否清除Cookie, true则开启. (该选项仅适用于QX,Surge,Loon,JsBox) + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 var $nobyda = nobyda(); async function all() { - await JingDongSpeedUp(stop); //京东天天加速 if (stop == 0) { await Promise.all([ JingDongBean(stop), //京东京豆 @@ -112,22 +115,29 @@ async function all() { JDMagicCube(stop), //京东小魔方 JingDongPrize(stop), //京东抽大奖 JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 JingDongShake(stop) //京东摇一摇 ]); await Promise.all([ - JDUserSignPre(stop, 'JDClocks', '京东商城-钟表'), //京东钟表馆 + JDUserSignPre(stop, 'JDTreasure', '京东商城-夺宝'), //京东夺宝岛 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码'), //京东数码电器馆 + JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴'), //京东晚市补贴金 JDUserSignPre(stop, 'JDDrug', '京东商城-医药'), //京东医药馆 - JDUserSignPre(stop, 'JDVege', '京东商城-菜场'), //京东菜场 - JDUserSignPre(stop, 'JDFood', '京东商城-美食'), //京东美食馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装'), //京东女装馆 + JDUserSignPre(stop, 'JDGStore', '京东商城-超市'), //京东超市 + JDUserSignPre(stop, 'JDBook', '京东商城-图书') //京东图书 + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDPet', '京东商城-宠物'), //京东宠物馆 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手'), //京东拍拍二手 JDUserSignPre(stop, 'JDClean', '京东商城-清洁'), //京东清洁馆 JDUserSignPre(stop, 'JDCare', '京东商城-个护'), //京东个人护理馆 JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝'), //京东珠宝馆 - JDUserSignPre(stop, 'JDShand', '京东拍拍-二手'), //京东拍拍二手 - JDUserSignPre(stop, 'JDWomen', '京东商城-女装'), //京东女装馆 - JDUserSignPre(stop, 'JDGStore', '京东商城-超市'), //京东超市 - JDUserSignPre(stop, 'JDPet', '京东商城-宠物'), //京东宠物馆 - JDUserSignPre(stop, 'JDBook', '京东商城-图书'), //京东图书 - JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆') //京东美妆馆 + JDUserSignPre(stop, 'JDClocks', '京东商城-钟表'), //京东钟表馆 + JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场'), //京东菜场 + JDUserSignPre(stop, 'JDFood', '京东商城-美食') //京东美食馆 ]); } else { await JingDongBean(stop); //京东京豆 @@ -135,28 +145,36 @@ async function all() { await JingRongDoll(stop); //金融抓娃娃 await JingRongSteel(stop); //金融钢镚 await JingDongTurn(stop); //京东转盘 + await JDFlashSale(stop); //京东闪购 + await JDOverseas(stop); //京东国际 + await JingDongCash(stop); //京东现金红包 + await JDMagicCube(stop); //京东小魔方 + await JingDongGetCash(stop); //京东领现金 + await JingDongPrize(stop); //京东抽大奖 + await JingDongSubsidy(stop); //京东金贴 + await JingDongShake(stop) //京东摇一摇 + await JDUserSignPre(stop, 'JDTreasure', '京东商城-夺宝'); //京东夺宝岛 + await JDUserSignPre(stop, 'JDBaby', '京东商城-母婴'); //京东母婴馆 + await JDUserSignPre(stop, 'JD3C', '京东商城-数码'); //京东数码电器馆 + await JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴'); //京东晚市补贴金 await JDUserSignPre(stop, 'JDClocks', '京东商城-钟表'); //京东钟表馆 await JDUserSignPre(stop, 'JDDrug', '京东商城-医药'); //京东医药馆 await JDUserSignPre(stop, 'JDGStore', '京东商城-超市'); //京东超市 await JDUserSignPre(stop, 'JDPet', '京东商城-宠物'); //京东宠物馆 - await JDFlashSale(stop); //京东闪购 - await JDOverseas(stop); //京东国际 await JDUserSignPre(stop, 'JDBook', '京东商城-图书'); //京东图书 await JDUserSignPre(stop, 'JDShand', '京东拍拍-二手'); //京东拍拍二手 await JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆'); //京东美妆馆 await JDUserSignPre(stop, 'JDWomen', '京东商城-女装'); //京东女装馆 await JDUserSignPre(stop, 'JDVege', '京东商城-菜场'); //京东菜场 - await JingDongCash(stop); //京东现金红包 await JDUserSignPre(stop, 'JDFood', '京东商城-美食'); //京东美食馆 await JDUserSignPre(stop, 'JDClean', '京东商城-清洁'); //京东清洁馆 await JDUserSignPre(stop, 'JDCare', '京东商城-个护'); //京东个人护理馆 await JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝'); //京东珠宝馆 - await JDMagicCube(stop); //京东小魔方 - await JingDongPrize(stop); //京东抽大奖 - await JingDongSubsidy(stop); //京东金贴 - await JingDongShake(stop) //京东摇一摇 } - await JRDoubleSign(stop); //金融双签 + await Promise.all([ + JingDongSpeedUp(stop), //京东天天加速 + JRDoubleSign(stop) //金融双签 + ]) await Promise.all([ TotalSteel(), //总钢镚查询 TotalCash(), //总红包查询 @@ -172,12 +190,14 @@ function notify() { var steel = 0; var success = 0; var fail = 0; + var err = 0; var notify = ''; for (var i in merge) { bean += Number(merge[i].bean) steel += Number(merge[i].steel) success += Number(merge[i].success) fail += Number(merge[i].fail) + err += Number(merge[i].error) notify += merge[i].notify ? "\n" + merge[i].notify : "" } var Cash = merge.JDCash.TCash ? merge.JDCash.TCash + "红包" : "" @@ -188,16 +208,17 @@ function notify() { var TSteel = steel ? steel + "钢镚" + (merge.JDCash.Cash ? ", " : "") : "" var TCash = merge.JDCash.Cash ? merge.JDCash.Cash + "红包" : "" var Tbsc = Tbean ? "\n" : TSteel ? "\n" : TCash ? "\n" : "获取失败\n" - var Ts = success ? "成功" + success + "个" + (fail ? ", " : "") : "" - var Tf = fail ? "失败" + fail + "个" : success ? "" : "获取失败" - var one = "【签到概览】: " + Ts + Tf + "\n" + var Ts = success ? "成功" + success + "个" + (fail || err ? ", " : "") : "" + var Tf = fail ? "失败" + fail + "个" + (err ? ", " : "") : "" + var Te = err ? "错误" + err + "个\n" : success ? "\n" : fail ? "\n" : "获取失败\n" + var one = "【签到概览】: " + Ts + Tf + Te var two = "【签到总计】: " + Tbean + TSteel + TCash + Tbsc var three = "【账号总计】: " + beans + Steel + Cash + bsc var four = "【左滑 '查看' 以显示签到详情】\n" + var disa = $nobyda.disable ? "\n检测到上次执行意外崩溃, 已为您自动禁用相关接口. 如需开启请前往BoxJs ‼️‼️\n" : "" var DName = merge.JDShake.nickname ? merge.JDShake.nickname : "获取失败" var Name = add ? DualAccount ? "【签到号一】: " + DName + "\n" : "【签到号二】: " + DName + "\n" : "" - console.log("\n" + Name + one + two + three + four + notify) - move(0, 0, 1) + console.log("\n" + Name + one + two + three + four + disa + notify) if ($nobyda.isJSBox) { if (add && DualAccount) { Shortcut = Name + one + two + three + "\n" @@ -207,7 +228,7 @@ function notify() { $intents.finish(Shortcut + Name + one + two + three) } } - if (!$nobyda.isNode) $nobyda.notify("", "", Name + one + two + three + four + notify); + if (!$nobyda.isNode) $nobyda.notify("", "", Name + one + two + three + four + disa + notify); if (DualAccount) { double(); } else { @@ -277,9 +298,11 @@ function ReadCookie() { } else if (Key || $nobyda.read("CookieJD")) { add = DualKey || $nobyda.read("CookieJD2") ? true : false KEY = Key ? Key : $nobyda.read("CookieJD") - out = $nobyda.read("JD_DailyBonusTimeOut") || out - stop = $nobyda.read("JD_DailyBonusDelay") || stop - LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" ? true : false || LogDetails + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out + stop = parseInt($nobyda.read("JD_DailyBonusDelay")) || stop + boxdis = $nobyda.read("JD_Crash_disable") === "false" ? false : boxdis + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" ? true : LogDetails + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : "" all() } else { $nobyda.notify("京东签到", "", "脚本终止, 未获取Cookie ‼️") @@ -320,8 +343,7 @@ function JingDongBean(s) { $nobyda.get(JDBUrl, function(error, response, data) { try { if (error) { - merge.JDBean.notify = "京东商城-京豆: 签到接口请求失败 ‼️‼️" - merge.JDBean.fail = 1 + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -329,50 +351,39 @@ function JingDongBean(s) { console.log("\n" + "京东商城-京豆Cookie失效 " + Details) merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" merge.JDBean.fail = 1 - } else { - if (data.match(/跳转至拼图/)) { - merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 需要拼图验证 ⚠️" - merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" } else { - if (data.match(/\"status\":\"?1\"?/)) { - console.log("\n" + "京东商城-京豆签到成功 " + Details) - if (data.match(/dailyAward/)) { - merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" - merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount - merge.JDBean.success = 1 - } else { - if (data.match(/continuityAward/)) { - merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" - merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount - merge.JDBean.success = 1 - } else { - if (data.match(/新人签到/)) { - const regex = /beanCount\":\"(\d+)\".+今天/; - const quantity = regex.exec(data)[1]; - merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + quantity + "京豆 🐶" - merge.JDBean.bean = quantity - merge.JDBean.success = 1 - } else { - merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" - merge.JDBean.fail = 1 - } - } - } - } else { - console.log("\n" + "京东商城-京豆签到失败 " + Details) - if (data.match(/(已签到|新人签到)/)) { - merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" - merge.JDBean.fail = 1 - } else { - merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" - merge.JDBean.fail = 1 - } - } + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" } } } } catch (eor) { - $nobyda.notify("京东商城-京豆" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-京豆", "JDBean", eor) } finally { resolve() } @@ -394,8 +405,7 @@ function JingDongTurn(s) { $nobyda.get(JDTUrl, async function(error, response, data) { try { if (error) { - merge.JDTurn.notify = "京东商城-转盘: 登录接口请求失败 ‼️‼️" - merge.JDTurn.fail = 1 + throw new Error(error) } else { const cc = JSON.parse(data).data.lotteryCode const Details = LogDetails ? "response:\n" + data : ''; @@ -409,7 +419,7 @@ function JingDongTurn(s) { } } } catch (eor) { - $nobyda.notify("京东转盘-登录" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东转盘-查询", "JDTurn", eor) } finally { reject() } @@ -432,8 +442,7 @@ function JingDongTurnSign(s, code) { $nobyda.get(JDTUrl, async function(error, response, data) { try { if (error) { - merge.JDTurn.notify += merge.JDTurn.notify ? "\n京东商城-转盘: 签到接口请求失败 ‼️‼️ (多次)" : "京东商城-转盘: 签到接口请求失败 ‼️‼️" - merge.JDTurn.fail += 1 + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -477,7 +486,7 @@ function JingDongTurnSign(s, code) { } } } catch (eor) { - $nobyda.notify("京东商城-转盘" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-转盘", "JDTurn", eor) } finally { resolve() } @@ -503,8 +512,7 @@ function JingRongBean(s) { $nobyda.post(login, async function(error, response, data) { try { if (error) { - merge.JRBean.notify = "京东金融-金贴: 登录接口请求失败 ‼️‼️" - merge.JRBean.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"login\":true/)) { @@ -522,7 +530,7 @@ function JingRongBean(s) { } } } catch (eor) { - $nobyda.notify("京东金融-金贴登录" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("金融金贴-登录", "JRBean", eor) } finally { resolve() } @@ -547,8 +555,7 @@ function JRBeanCheckin(s) { $nobyda.post(JRBUrl, function(error, response, data) { try { if (error) { - merge.JRBean.notify = "京东金融-金贴: 签到接口请求失败 ‼️‼️" - merge.JRBean.fail = 1 + throw new Error(error) } else { const c = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -564,7 +571,7 @@ function JRBeanCheckin(s) { } } else { console.log("\n" + "京东金融-金贴签到失败 " + Details) - if (data.match(/(发放失败|70111)/)) { + if (data.match(/发放失败|70111|10000/)) { merge.JRBean.notify = "京东金融-金贴: 失败, 原因: 已签过 ⚠️" merge.JRBean.fail = 1 } else { @@ -579,7 +586,7 @@ function JRBeanCheckin(s) { } } } catch (eor) { - $nobyda.notify("京东金融-金贴" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东金融-金贴", "JRBean", eor) } finally { resolve() } @@ -604,8 +611,7 @@ function JingRongSteel(s) { $nobyda.post(JRSUrl, function(error, response, data) { try { if (error) { - merge.JRSteel.notify = "京东金融-钢镚: 签到接口请求失败 ‼️‼️" - merge.JRSteel.fail = 1 + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -643,7 +649,7 @@ function JingRongSteel(s) { } } } catch (eor) { - $nobyda.notify("京东金融-钢镚" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor) } finally { resolve() } @@ -668,8 +674,7 @@ function JRDoubleSign(s) { $nobyda.post(JRDSUrl, function(error, response, data) { try { if (error) { - merge.JRDSign.notify = "京东金融-双签: 签到接口请求失败 ‼️‼️" - merge.JRDSign.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"resultCode\":0/)) { @@ -700,7 +705,7 @@ function JRDoubleSign(s) { } } } catch (eor) { - $nobyda.notify("京东金融-双签" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东金融-双签", "JRDSign", eor) } finally { resolve() } @@ -723,8 +728,7 @@ function JingDongShake(s) { $nobyda.get(JDSh, async function(error, response, data) { try { if (error) { - merge.JDShake.notify += merge.JDShake.notify ? "\n京东商城-摇摇: 签到接口请求失败 ‼️‼️ (多次)\n" + error : "京东商城-摇摇: 签到接口请求失败 ‼️‼️\n" + error - merge.JDShake.fail += 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) @@ -769,7 +773,7 @@ function JingDongShake(s) { } } } catch (eor) { - $nobyda.notify("京东商城-摇摇" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-摇摇", "JDShake", eor) } finally { resolve() } @@ -789,25 +793,24 @@ function JDUserSignPre(s, key, title) { } } -function JDUserSignPre1(s, key, title) { +function JDUserSignPre1(s, key, title, ask) { return new Promise((resolve, reject) => { if (disable(key, title, 1)) return reject() - //setTimeout(() => { const JDUrl = { url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', headers: { "Content-Type": "application/x-www-form-urlencoded", Cookie: KEY, }, - body: `body={"activityId":"${acData[key]}"}` + body: `body=${encodeURIComponent(`{"activityId":"${acData[key]}"${ask ? `,"paginationParam":"2",${ask}` : ``}}`)}` }; - $nobyda.post(JDUrl, function(error, response, data) { + $nobyda.post(JDUrl, async function(error, response, data) { try { if (error) { - merge[key].notify = `${title}: 签到活动获取失败 ‼️‼️` - merge[key].fail = 1 + throw new Error(error) } else { const turnTableId = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"\[\[.+?\]\]\"/) if (data.match(/enActK/)) { // 含有签到活动数据 const od = JSON.parse(data); let params = (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop(); @@ -817,87 +820,119 @@ function JDUserSignPre1(s, key, title) { .map(o => o.signInfos).pop(); if (signInfo) { if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` merge[key].fail = 1 - reject(); - return; } else { params = signInfo.params; } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 } } if (params) { - resolve({ + return resolve({ params: params }); // 执行签到处理 - return; } - } else if (turnTableId) { - reject(turnTableId[1]) - return; + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[0]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 } - merge[key].notify = `${title}: 失败, 原因: 不含活动数据 ⚠️` - merge[key].fail = 1 } + disable(key, title, 2) + reject() } catch (eor) { - $nobyda.notify(`${title}${eor.name} ‼️`, JSON.stringify(eor), eor.message) - } finally { + $nobyda.AnError(title, key, eor) + disable(key, title, 2) reject() } }) - //}, s) if (out) setTimeout(reject, out + s) }).then(data => { disable(key, title, 2) - return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); - }).catch(err => { - disable(key, title, 2) - if (err) return JDUserSign2(s, key, title, err) - }) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, data); + }, () => {}) } function JDUserSignPre2(s, key, title) { return new Promise((resolve, reject) => { if (disable(key, title, 1)) return reject() - //setTimeout(() => { const JDUrl = { url: `https://pro.m.jd.com/mall/active/${acData[key]}/index.html`, headers: { Cookie: KEY, } }; - $nobyda.get(JDUrl, function(error, response, data) { + $nobyda.get(JDUrl, async function(error, response, data) { try { if (error) { - merge[key].notify = `${title}: 签到活动获取失败 ‼️‼️` - merge[key].fail = 1 + throw new Error(error) } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) - if (data.match(/"params":"{\\"enActK\\".*?\\"}"/)) { // 含有签到活动数据 - resolve(`{${data.match(/"params":"{\\"enActK\\".*?\\"}"/)}}`); // 执行签到处理 - return; - } else if (turnTable) { - reject(turnTable[1]) - return; + const page = data.match(/\"paginationFlrs\":\"\[\[.+?\]\]\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[0]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 } - merge[key].notify = `${title}: 失败, 原因: 不含活动数据 ⚠️` - merge[key].fail = 1 } + disable(key, title, 2) + reject() } catch (eor) { - $nobyda.notify(`${title}${eor.name} ‼️`, JSON.stringify(eor), eor.message) - } finally { + $nobyda.AnError(title, key, eor) + disable(key, title, 2) reject() } }) - //}, s) if (out) setTimeout(reject, out + s) }).then(data => { disable(key, title, 2) - return JDUserSign1(s, key, title, encodeURIComponent(data)); - }).catch(err => { - disable(key, title, 2) - if (err) return JDUserSign2(s, key, title, err) - }) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, data) + }, () => {}) } function JDUserSign1(s, key, title, body) { @@ -914,8 +949,7 @@ function JDUserSign1(s, key, title, body) { $nobyda.post(JDUrl, function(error, response, data) { try { if (error) { - merge[key].notify = `${title}: 签到接口请求失败 ‼️‼️` - merge[key].fail = 1 + throw new Error(error) } else { const Details = LogDetails ? `response:\n${data}` : ''; const cc = JSON.parse(data) @@ -934,25 +968,18 @@ function JDUserSign1(s, key, title, body) { console.log(`\n${title}签到失败(1)${Details}`) if (data.match(/(已签到|已领取)/)) { merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` - merge[key].fail = 1 + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (cc.code == 3) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` } else { - if (data.match(/(不存在|已结束|未开始)/)) { - merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` - merge[key].fail = 1 - } else { - if (cc.code == 3) { - merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` - merge[key].fail = 1 - } else { - merge[key].notify = `${title}: 失败, 原因: 未知 ⚠️` - merge[key].fail = 1 - } - } + merge[key].notify = `${title}: 失败, 原因: 未知 ⚠️` } + merge[key].fail = 1 } } } catch (eor) { - $nobyda.notify(`${title}${eor.name} ‼️`, JSON.stringify(eor), eor.message) + $nobyda.AnError(title, key, eor) } finally { resolve() } @@ -962,7 +989,18 @@ function JDUserSign1(s, key, title, body) { }); } -function JDUserSign2(s, key, title, tid) { +async function JDUserSign2(s, key, title, tid) { + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); return new Promise(resolve => { setTimeout(() => { const JDUrl = { @@ -976,8 +1014,7 @@ function JDUserSign2(s, key, title, tid) { $nobyda.post(JDUrl, function(error, response, data) { try { if (error) { - merge[key].notify = `${title}: 签到接口请求失败 ‼️‼️` - merge[key].fail = 1 + throw new Error(error) } else { const Details = LogDetails ? `response:\n${data}` : ''; const cc = JSON.parse(data) @@ -1005,7 +1042,7 @@ function JDUserSign2(s, key, title, tid) { } } } catch (eor) { - $nobyda.notify(`${title}${eor.name} ‼️`, JSON.stringify(eor), eor.message) + $nobyda.AnError(title, key, eor) } finally { resolve() } @@ -1025,50 +1062,37 @@ function JDFlashSale(s) { "Content-Type": "application/x-www-form-urlencoded", Cookie: KEY, }, - body: "body=%7B%7D&client=apple&clientVersion=8.4.6&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=141ab5f9af92126bb46d50f3e8af758a&st=1579305780511&sv=102" + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" }; $nobyda.post(JDPETUrl, async function(error, response, data) { try { if (error) { - merge.JDFSale.notify = "京东商城-闪购: 签到接口请求失败 ‼️‼️" - merge.JDFSale.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) if (cc.result.code == 0) { console.log("\n" + "京东商城-闪购签到成功 " + Details) - if (data.match(/(\"count\":\d+)/)) { - merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + cc.result.count + "京豆 🐶" - merge.JDFSale.bean = cc.result.count - merge.JDFSale.success = 1 - } else { - merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: 无京豆 🐶" - merge.JDFSale.success = 1 - } + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 } else { + merge.JDFSale.fail = 1 console.log("\n" + "京东商城-闪购签到失败 " + Details) if (data.match(/(已签到|已领取|\"2005\")/)) { merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" - merge.JDFSale.fail = 1 + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + //merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 需瓜分 ⚠️" + await FlashSaleDivide(s) + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" } else { - if (data.match(/(不存在|已结束|\"2008\")/)) { - //merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 需瓜分 ⚠️" - //merge.JDFSale.fail = 1 - await FlashSaleDivide(s) - } else { - if (data.match(/(\"code\":\"3\"|\"1003\")/)) { - merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" - merge.JDFSale.fail = 1 - } else { - merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 未知 ⚠️" - merge.JDFSale.fail = 1 - } - } + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 未知 ⚠️" } } } } catch (eor) { - $nobyda.notify("京东商城-闪购" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-闪购", "JDFSale", eor) } finally { resolve() } @@ -1087,49 +1111,36 @@ function FlashSaleDivide(s) { "Content-Type": "application/x-www-form-urlencoded", Cookie: KEY, }, - body: "body=%7B%7D&client=apple&clientVersion=8.5.0&d_brand=apple&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=958ba0e805094b4b0f6216e86190ab51&st=1582042405636&sv=120&wifiBssid=unknown" + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" }; $nobyda.post(Url, function(error, response, data) { try { if (error) { - merge.JDFSale.notify = "京东闪购-瓜分: 签到接口请求失败 ‼️‼️" - merge.JDFSale.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" console.log("\n" + "京东闪购-瓜分签到成功 " + Details) - if (data.match(/(\"jdBeanNum\":\d+)/)) { - merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + cc.result.jdBeanNum + "京豆 🐶" - merge.JDFSale.bean = cc.result.jdBeanNum - merge.JDFSale.success = 1 - } else { - merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: 无京豆 🐶" - merge.JDFSale.success = 1 - } } else { + merge.JDFSale.fail = 1 console.log("\n" + "京东闪购-瓜分签到失败 " + Details) - if (data.match(/(已参与|已领取|\"2006\")/)) { + if (data.match(/已参与|已领取|\"2006\"/)) { merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" - merge.JDFSale.fail = 1 + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" } else { - if (data.match(/(不存在|已结束|未开始|\"2008\")/)) { - merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" - merge.JDFSale.fail = 1 - } else { - if (data.match(/(\"code\":\"1003\"|未获取)/)) { - merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" - merge.JDFSale.fail = 1 - } else { - merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 未知 ⚠️" - merge.JDFSale.fail = 1 - } - } + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 未知 ⚠️" } } } } catch (eor) { - $nobyda.notify("京东闪购-瓜分" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor) } finally { resolve() } @@ -1154,8 +1165,7 @@ function JingDongCash(s) { $nobyda.post(JDCAUrl, function(error, response, data) { try { if (error) { - merge.JDCash.notify = "京东现金-红包: 签到接口请求失败 ‼️‼️" - merge.JDCash.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) @@ -1191,7 +1201,7 @@ function JingDongCash(s) { } } } catch (eor) { - $nobyda.notify("京东现金-红包" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东现金-红包", "JDCash", eor) } finally { resolve() } @@ -1212,7 +1222,8 @@ function JDMagicCube(s) { }; $nobyda.get(JDUrl, function(error, response, data) { try { - if (!error && data.match(/\"interactionId\":\d+/)) { + if (error) throw new Error(error) + if (data.match(/\"interactionId\":\d+/)) { const Details = LogDetails ? "response:\n" + data : ''; merge.JDCube.key = data.match(/\"interactionId\":(\d+)/)[1] console.log("\n京东魔方-查询活动成功 " + Details) @@ -1220,7 +1231,7 @@ function JDMagicCube(s) { console.log("\n京东魔方-查询活动失败 ") } } catch (eor) { - $nobyda.notify("京东魔方-查询" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东魔方-查询", "JDCube", eor) } finally { resolve(merge.JDCube.key) } @@ -1243,8 +1254,7 @@ function JDMagicCubeSign(s, id) { $nobyda.get(JDMCUrl, function(error, response, data) { try { if (error) { - merge.JDCube.notify = "京东商城-魔方: 签到接口请求失败 ‼️‼️" - merge.JDCube.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) @@ -1280,7 +1290,7 @@ function JDMagicCubeSign(s, id) { } } } catch (eor) { - $nobyda.notify("京东商城-魔方" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-魔方", "JDCube", eor) } finally { resolve() } @@ -1304,14 +1314,13 @@ function JingDongPrize(s) { $nobyda.get(JDkey, async function(error, response, data) { try { if (error) { - merge.JDPrize.notify = "京东商城-大奖: 查询接口请求失败 ‼️‼️" - merge.JDPrize.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"raffleActKey\":\"[a-zA-z0-9]{3,}\"/)) { const cc = JSON.parse(data) merge.JDPrize.key = cc.data.floorInfoList[0].detail.raffleActKey - console.log("\n" + "京东商城-大奖查询KEY成功 " + Details) + console.log("\n" + "京东商城-大奖查询成功 " + Details) if (merge.JDPrize.key) { await JDPrizeCheckin(s) } else { @@ -1330,7 +1339,7 @@ function JingDongPrize(s) { } } } catch (eor) { - $nobyda.notify("京东商城-大奖查询KEY" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东大奖-查询", "JDPrize", eor) } finally { resolve() } @@ -1353,8 +1362,7 @@ function JDPrizeCheckin(s) { $nobyda.get(JDPUrl, function(error, response, data) { try { if (error) { - merge.JDPrize.notify = "京东商城-大奖: 签到接口请求失败 ‼️‼️" - merge.JDPrize.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; const c = JSON.parse(data) @@ -1381,22 +1389,20 @@ function JDPrizeCheckin(s) { } } else { console.log("\n" + "京东商城-大奖签到失败 " + Details) + merge.JDPrize.fail = 1 if (data.match(/(已用光|7000003)/)) { merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: 已签过 ⚠️" - merge.JDPrize.fail = 1 + } else if (data.match(/(未登录|\"101\")/)) { + merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: Cookie失效‼️" + } else if (data.match(/7000005/)) { + merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: 未中奖 ⚠️" } else { - if (data.match(/(未登录|\"101\")/)) { - merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: Cookie失效‼️" - merge.JDPrize.fail = 1 - } else { - merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: 未知 ⚠️" - merge.JDPrize.fail = 1 - } + merge.JDPrize.notify = "京东商城-大奖: 失败, 原因: 未知 ⚠️" } } } } catch (eor) { - $nobyda.notify("京东商城-大奖签到" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东大奖-签到", "JDPrize", eor) } finally { resolve() } @@ -1420,8 +1426,7 @@ function JingDongSpeedUp(s, id) { $nobyda.get(GameUrl, async function(error, response, data) { try { if (error) { - merge.SpeedUp.notify = "京东天天-加速: 签到接口请求失败 ‼️‼️" - merge.SpeedUp.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; var cc = JSON.parse(data) @@ -1470,7 +1475,7 @@ function JingDongSpeedUp(s, id) { } } } catch (eor) { - $nobyda.notify("京东天天-加速" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东天天-加速", "SpeedUp", eor) } finally { resolve() } @@ -1494,7 +1499,7 @@ function JDQueryTask(s) { $nobyda.get(QueryUrl, async function(error, response, data) { try { if (error) { - console.log("\n京东天天-加速: 查询道具请求失败 ‼️‼️") + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -1515,7 +1520,7 @@ function JDQueryTask(s) { } } } catch (eor) { - $nobyda.notify("天天加速-查询道具" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("查询道具-加速", "SpeedUp", eor) } finally { resolve(TaskID) } @@ -1543,7 +1548,7 @@ function JDReceiveTask(s, CID) { try { count++ if (error) { - console.log("\n天天加速-领取道具请求失败 ‼️‼️") + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -1554,7 +1559,7 @@ function JDReceiveTask(s, CID) { } } catch (eor) { - $nobyda.notify("天天加速-领取道具" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("领取道具-加速", "SpeedUp", eor) } finally { if (CID.length == count) { console.log("\n天天加速-已成功领取" + NumTask + "个道具") @@ -1586,7 +1591,7 @@ function JDQueryTaskID(s, EID) { $nobyda.get(EUrl, function(error, response, data) { try { if (error) { - console.log("\n天天加速-查询道具ID请求失败 ‼️‼️") + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -1607,7 +1612,7 @@ function JDQueryTaskID(s, EID) { } } } catch (eor) { - $nobyda.notify("天天加速-道具ID" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("查询号码-加速", "SpeedUp", eor) } finally { resolve(TaskCID) } @@ -1638,7 +1643,7 @@ function JDUseProps(s, PropID) { try { PropCount++ if (error) { - console.log("\n天天加速-使用道具请求失败 ‼️‼️") + throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -1649,7 +1654,7 @@ function JDUseProps(s, PropID) { } } catch (eor) { - $nobyda.notify("天天加速-使用道具" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("使用道具-加速", "SpeedUp", eor) } finally { if (PropID.length == PropCount) { console.log("\n天天加速-已成功使用" + PropNumTask + "个道具") @@ -1680,8 +1685,7 @@ function JingDongSubsidy(s) { $nobyda.get(subsidyUrl, function(error, response, data) { try { if (error) { - merge.subsidy.notify = "京东商城-金贴: 签到接口请求失败 ‼️‼️" - merge.subsidy.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"msg\":\"操作成功\"/)) { @@ -1706,7 +1710,7 @@ function JingDongSubsidy(s) { } } } catch (eor) { - $nobyda.notify("京东商城-金贴" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-金贴", "subsidy", eor) } finally { resolve() } @@ -1731,8 +1735,7 @@ function JingRongDoll(s, type, num) { $nobyda.post(DollUrl, async function(error, response, data) { try { if (error) { - merge.JRDoll.notify = "京东金融-娃娃: " + (type ? "签到" : "领取") + "接口请求失败 ‼️‼️" - merge.JRDoll.fail = 1 + throw new Error(error) } else { var cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; @@ -1773,7 +1776,7 @@ function JingRongDoll(s, type, num) { } } } catch (eor) { - $nobyda.notify("京东金融-娃娃" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东金融-娃娃", "JRDoll", eor) } finally { resolve() } @@ -1798,8 +1801,7 @@ function JDOverseas(s) { $nobyda.post(OverseasUrl, function(error, response, data) { try { if (error) { - merge.Overseas.notify = "京东商城-国际: 签到接口请求失败 ‼️‼️" - merge.Overseas.fail = 1 + throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"type\":\d+?,/)) { @@ -1824,7 +1826,56 @@ function JDOverseas(s) { } } } catch (eor) { - $nobyda.notify("京东商城-国际" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("京东商城-国际", "Overseas", eor) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + if (cc.data.result && cc.data.result.signCash) { + merge.JDGetCash.Cash = cc.data.result.signCash + merge.JDGetCash.notify = "京东商城-现金: 成功, 明细: " + merge.JDGetCash.Cash + "现金 💰" + } else { + merge.JDGetCash.notify = "京东商城-现金: 成功, 明细: 无现金 💰" + } + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor) } finally { resolve() } @@ -1855,10 +1906,10 @@ function TotalSteel() { console.log("\n" + "京东-总钢镚查询失败 " + Details) } } else { - console.log("\n" + "京东-总钢镚查询请求失败 ") + throw new Error(error) } } catch (eor) { - $nobyda.notify("钢镚接口" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("账户钢镚-查询", "JRSteel", eor) } finally { resolve() } @@ -1896,10 +1947,10 @@ function TotalBean() { merge.JDShake.nickname = ''; } } else { - console.log("\n" + "京东-总京豆查询请求失败 ") + throw new Error(error) } } catch (eor) { - $nobyda.notify("京豆接口" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("账户京豆-查询", "JDShake", eor) } finally { resolve() } @@ -1931,10 +1982,10 @@ function TotalCash() { console.log("\n" + "京东-总红包查询失败 " + Details) } } else { - console.log("\n" + "京东-总红包查询请求失败 ") + throw new Error(error) } } catch (eor) { - $nobyda.notify("红包接口" + eor.name + "‼️", JSON.stringify(eor), eor.message) + $nobyda.AnError("账户红包-查询", "JDCash", eor) } finally { resolve() } @@ -1946,50 +1997,30 @@ function TotalCash() { function disable(Val, name, way) { const read = $nobyda.read("JD_DailyBonusDisables") const annal = $nobyda.read("JD_Crash_" + Val) - const boxds = $nobyda.read("JD_Crash_disable") === "false" ? false : true - const old = (Val == "JDDrug" || Val == "JDClocks" || way == 2) ? false : move(Val, read, 0) - if (annal && way == 1 && boxds) { + if (annal && way == 1 && boxdis) { var Crash = $nobyda.write("", "JD_Crash_" + Val) if (read) { if (read.indexOf(Val) == -1) { var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") - $nobyda.notify("京东签到 ⚠️", "", `检测到上次执行"${name}"意外崩溃\n已为您自动禁用该接口, 如需开启请前往BoxJs`) + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 } } else { var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") - $nobyda.notify("京东签到 ⚠️", "", `检测到上次执行"${name}"意外崩溃\n已为您自动禁用该接口, 如需开启请前往BoxJs`) + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 } return true - } else if (way == 1 && boxds) { + } else if (way == 1 && boxdis) { var Crash = $nobyda.write(name, "JD_Crash_" + Val) } else if (way == 2 && annal) { var Crash = $nobyda.write("", "JD_Crash_" + Val) } - if (read && read.indexOf(Val) != -1 || old) { - return true - } else { - return false - } -} - -function move(ValKey, NewKey, DelOld) { - const OldKey = $nobyda.read("JD_DailyBonusDisable") - if (DelOld && OldKey) { - if (OldKey.split(",").length != 28) { - $nobyda.notify("京东签到", "BoxJs禁用迁移成功", "请更新京东BoxJs订阅以适配新版本") - } - var Crash = $nobyda.write("", "JD_DailyBonusDisable") - return true - } - if (OldKey && OldKey.indexOf(ValKey) == -1) { - console.log(`\nBoxJs禁用迁移成功 (${ValKey})`) - if (NewKey) { - if (NewKey.indexOf(ValKey) == -1) { - var Crash = $nobyda.write(`${NewKey},${ValKey}`, "JD_DailyBonusDisables") - } - } else { - var Crash = $nobyda.write(ValKey, "JD_DailyBonusDisables") - } + if (read && read.indexOf(Val) != -1) { return true } else { return false @@ -1999,6 +2030,14 @@ function move(ValKey, NewKey, DelOld) { function initial() { acData = { + // 京东商城-夺宝 + JDTreasure: '29xMZdGiiGYmMZ5CQcGmb7iPhN7n', + // 京东商城-母婴 + JDBaby: '3BbAVGQPDd6vTyHYjmAutXrKAos6', + // 京东商城-数码 + JD3C: '4SWjnZSCTHPYjE5T7j35rxxuMTb6', + // 京东晚市-补贴 + JDSubsidy: 'xK148m4kWj5hBcTPuJUNNXH3AkJ', // 京东商城-钟表 JDClocks: '2BcJPCVVzMEtMUynXkPscCSsx68W', // 京东商城-医药 @@ -2033,15 +2072,19 @@ function initial() { JDTurn: {}, JRDoll: {}, JRDSign: {}, - JDGStore: {}, + Overseas: {}, + JDFSale: {}, JDPet: {}, + JD3C: {}, + JDTreasure: {}, + JDBaby: {}, + JDSubsidy: {}, JDDrug: {}, JDClocks: {}, - JDFSale: {}, JDBook: {}, + JDGStore: {}, JDShand: {}, JDMakeup: {}, - Overseas: {}, JDWomen: {}, JDCare: {}, JDFood: {}, @@ -2054,11 +2097,13 @@ function initial() { JRBean: {}, subsidy: {}, JDCash: {}, + JDGetCash: {}, JDShake: {} } for (var i in merge) { merge[i].success = 0; merge[i].fail = 0; + merge[i].error = 0; merge[i].bean = 0; merge[i].steel = 0; merge[i].notify = ''; @@ -2125,7 +2170,7 @@ function GetCookie() { $nobyda.write("", "CookieJD") $nobyda.write("", "CookieJD2") $nobyda.notify("写入京东Cookie失败", "", '已尝试清空历史Cookie, 请重试 ⚠️') - console.log(JSON.stringify(eor) + "\n" + eor + "\n" + JSON.stringify($request.headers)) + console.log(`\n写入京东Cookie出现错误 ‼️\n${JSON.stringify(eor)}\n\n${eor}\n\n${JSON.stringify($request.headers)}\n`) } $nobyda.done() } @@ -2176,18 +2221,25 @@ function nobyda() { return response } const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' if (isQuanX) { if (typeof options == "string") options = { url: options } options["method"] = "GET" + options["opts"] = { + "hints": false + } $task.fetch(options).then(response => { callback(null, adapterStatus(response), response.body) }, reason => callback(reason.error, null, null)) } - if (isSurge) $httpClient.get(options, (error, response, body) => { - callback(error, adapterStatus(response), body) - }) + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } if (isNode) { node.request(options, (error, response, body) => { callback(error, adapterStatus(response), body) @@ -2209,16 +2261,21 @@ function nobyda() { } } const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' if (isQuanX) { if (typeof options == "string") options = { url: options } options["method"] = "POST" + options["opts"] = { + "hints": false + } $task.fetch(options).then(response => { callback(null, adapterStatus(response), response.body) }, reason => callback(reason.error, null, null)) } if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false $httpClient.post(options, (error, response, body) => { callback(error, adapterStatus(response), body) }) @@ -2244,15 +2301,25 @@ function nobyda() { } } const log = (message) => console.log(message) + const AnError = (name, key, er) => { + if (!merge[key].notify) { + merge[key].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[key].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[key].error = 1 + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/) ? `\n‼️行列: ${JSON.stringify(er)}` : ``}`) + } const time = () => { const end = ((Date.now() - start) / 1000).toFixed(2) return console.log('\n签到用时: ' + end + ' 秒') } const done = (value = {}) => { - if (isQuanX) isRequest ? $done(value) : null + if (isQuanX) return $done(value) if (isSurge) isRequest ? $done(value) : $done() } return { + AnError, isRequest, isJSBox, isSurge, diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh index c95116fc5f..0b14e2bc27 100755 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh @@ -10,7 +10,6 @@ # 0 更新成功 NAME=jd-dailybonus -REMOTE_SCRIPT=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js TEMP_SCRIPT=/tmp/JD_DailyBonus.js JD_SCRIPT=/usr/share/jd-dailybonus/JD_DailyBonus.js LOG_HTM=/www/JD_DailyBonus.htm @@ -18,7 +17,6 @@ CRON_FILE=/etc/crontabs/root usage() { cat <<-EOF Usage: app.sh [options] - Valid options are: -a Add Cron @@ -51,6 +49,8 @@ cancel() { exit 1 } +REMOTE_SCRIPT=$(uci_get_by_type global remote_url) + fill_cookie() { cookie1=$(uci_get_by_type global cookie) if [ ! "$cookie1" = "" ]; then @@ -77,7 +77,11 @@ fill_cookie() { fi } -remote_ver=$(cat $TEMP_SCRIPT | sed -n '/更新时间/p' | awk '{for (i=1;i<=NF;i++){if ($i ~/v/) {print $i}}}' | sed 's/v//') +if [ -e $TEMP_SCRIPT ]; then + remote_ver=$(cat $TEMP_SCRIPT | sed -n '/更新时间/p' | awk '{for (i=1;i<=NF;i++){if ($i ~/v/) {print $i}}}' | sed 's/v//') +else + remote_ver=$(cat $JD_SCRIPT | sed -n '/更新时间/p' | awk '{for (i=1;i<=NF;i++){if ($i ~/v/) {print $i}}}' | sed 's/v//') +fi local_ver=$(uci_get_by_type global version) add_cron() { @@ -97,11 +101,11 @@ serverchan() { grep "Cookie失效" /www/JD_DailyBonus.htm > /dev/null if [ $? -eq 0 ]; then title="$(date '+%Y年%m月%d日') 京东签到 Cookie 失效" - wget-ssl -q --post-data="text=$title~&desp=$desc" https://sc.ftqq.com/$sckey.send + wget-ssl -q --output-document=/dev/null --post-data="text=$title~&desp=$desc" https://sc.ftqq.com/$sckey.send fi else title="$(date '+%Y年%m月%d日') 京东签到" - wget-ssl -q --post-data="text=$title~&desp=$desc" https://sc.ftqq.com/$sckey.send + wget-ssl -q --output-document=/dev/null --post-data="text=$title~&desp=$desc" https://sc.ftqq.com/$sckey.send fi }