From 5d0dd7c7f4979cb2818f051f9a88de3d1146e30e Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:44:47 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_split.js => activity/jd_split.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_split.js => activity/jd_split.js (100%) diff --git a/jd_split.js b/activity/jd_split.js similarity index 100% rename from jd_split.js rename to activity/jd_split.js From b3d7639808cd97a50a3e9253d6c67092ef2c1026 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:46:43 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_digital_floor.js => activity/jd_digital_floor.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_digital_floor.js => activity/jd_digital_floor.js (100%) diff --git a/jd_digital_floor.js b/activity/jd_digital_floor.js similarity index 100% rename from jd_digital_floor.js rename to activity/jd_digital_floor.js From c5e0308cf3455e495ef74ea80756f030039748a0 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:47:46 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_live_redrain.js => activity/jd_live_redrain.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_live_redrain.js => activity/jd_live_redrain.js (100%) diff --git a/jd_live_redrain.js b/activity/jd_live_redrain.js similarity index 100% rename from jd_live_redrain.js rename to activity/jd_live_redrain.js From 88147504ab37ec9e6406251f1ce0de72032bb9b8 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:49:19 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_jxstory.js => activity/jd_jxstory.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_jxstory.js => activity/jd_jxstory.js (100%) diff --git a/jd_jxstory.js b/activity/jd_jxstory.js similarity index 100% rename from jd_jxstory.js rename to activity/jd_jxstory.js From 9090159cf5534afeb68f36b43aab71bfde8bb416 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:50:14 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_pubg.js => activity/jd_pubg.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_pubg.js => activity/jd_pubg.js (100%) diff --git a/jd_pubg.js b/activity/jd_pubg.js similarity index 100% rename from jd_pubg.js rename to activity/jd_pubg.js From cc3633b0d2ac5d759b86fdfb5681969ade537c49 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:51:14 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_818.js => activity/jd_818.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_818.js => activity/jd_818.js (100%) diff --git a/jd_818.js b/activity/jd_818.js similarity index 100% rename from jd_818.js rename to activity/jd_818.js From 3d4874d4ba50f2b750901cdbcd85dda64f1e322f Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:51:57 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jdJxStoryShareCodes.js => activity/jdJxStoryShareCodes.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jdJxStoryShareCodes.js => activity/jdJxStoryShareCodes.js (100%) diff --git a/jdJxStoryShareCodes.js b/activity/jdJxStoryShareCodes.js similarity index 100% rename from jdJxStoryShareCodes.js rename to activity/jdJxStoryShareCodes.js From f8464e7f2ee2cbe36a77c0d4609820be040672f5 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:53:21 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_collectProduceScore.js => activity/jd_collectProduceScore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename jd_collectProduceScore.js => activity/jd_collectProduceScore.js (99%) diff --git a/jd_collectProduceScore.js b/activity/jd_collectProduceScore.js similarity index 99% rename from jd_collectProduceScore.js rename to activity/jd_collectProduceScore.js index b34f2c51..b0304ca1 100644 --- a/jd_collectProduceScore.js +++ b/activity/jd_collectProduceScore.js @@ -133,4 +133,4 @@ function taskPostUrl(functionId, body = {}) { } } } -function Env(t, s) { return new class { constructor(t, s) { this.name = t, this.data = null, this.dataFile = "box.dat", this.logs = [], this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, s), this.log("", `\ud83d\udd14${this.name}, \u5f00\u59cb!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } getScript(t) { return new Promise(s => { $.get({ url: t }, (t, e, i) => s(i)) }) } runScript(t, s) { return new Promise(e => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let o = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); o = o ? 1 * o : 20, o = s && s.timeout ? s.timeout : o; const [h, a] = i.split("@"), r = { url: `http://${a}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: o }, headers: { "X-Key": h, Accept: "*/*" } }; $.post(r, (t, s, i) => e(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s); if (!e && !i) return {}; { const i = e ? t : s; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s), o = JSON.stringify(this.data); e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o) } } lodash_get(t, s, e) { const i = s.replace(/\[(\d+)\]/g, ".$1").split("."); let o = t; for (const t of i) if (o = Object(o)[t], void 0 === o) return e; return o } lodash_set(t, s, e) { return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), s.slice(0, -1).reduce((t, e, i) => Object(t[e]) === t[e] ? t[e] : t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {}, t)[s[s.length - 1]] = e, t) } getdata(t) { let s = this.getval(t); if (/^@/.test(t)) { const [, e, i] = /^@(.*?)\.(.*?)$/.exec(t), o = e ? this.getval(e) : ""; if (o) try { const t = JSON.parse(o); s = t ? this.lodash_get(t, i, "") : s } catch (t) { s = "" } } return s } setdata(t, s) { let e = !1; if (/^@/.test(s)) { const [, i, o] = /^@(.*?)\.(.*?)$/.exec(s), h = this.getval(i), a = i ? "null" === h ? null : h || "{}" : "{}"; try { const s = JSON.parse(a); this.lodash_set(s, o, t), e = this.setval(JSON.stringify(s), i) } catch (s) { const h = {}; this.lodash_set(h, o, t), e = this.setval(JSON.stringify(h), i) } } else e = $.setval(t, s); return e } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, s) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? (this.data = this.loaddata(), this.data[s] = t, this.writedata(), !0) : this.data && this.data[s] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, s = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) }) : this.isQuanX() ? $task.fetch(t).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, s) => { try { const e = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); this.ckjar.setCookieSync(e, null), s.cookieJar = this.ckjar } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t))) } post(t, s = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) $httpClient.post(t, (t, e, i) => { !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) }); else if (this.isQuanX()) t.method = "POST", $task.fetch(t).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: e, ...i } = t; this.got.post(e, i).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)) } } time(t) { let s = { "M+": (new Date).getMonth() + 1, "d+": (new Date).getDate(), "H+": (new Date).getHours(), "m+": (new Date).getMinutes(), "s+": (new Date).getSeconds(), "q+": Math.floor(((new Date).getMonth() + 3) / 3), S: (new Date).getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in s) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ("00" + s[e]).substr(("" + s[e]).length))); return t } msg(s = t, e = "", i = "", o) { const h = t => !t || !this.isLoon() && this.isSurge() ? t : "string" == typeof t ? this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : void 0 : "object" == typeof t && (t["open-url"] || t["media-url"]) ? this.isLoon() ? t["open-url"] : this.isQuanX() ? t : void 0 : void 0; this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o)), this.logs.push("", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="), this.logs.push(s), e && this.logs.push(e), i && this.logs.push(i) } log(...t) { t.length > 0 ? this.logs = [...this.logs, ...t] : console.log(this.logs.join(this.logSeparator)) } logErr(t, s) { const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); e ? $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t) } wait(t) { return new Promise(s => setTimeout(s, t)) } done(t = {}) { const s = (new Date).getTime(), e = (s - this.startTime) / 1e3; this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, s) } \ No newline at end of file +function Env(t, s) { return new class { constructor(t, s) { this.name = t, this.data = null, this.dataFile = "box.dat", this.logs = [], this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, s), this.log("", `\ud83d\udd14${this.name}, \u5f00\u59cb!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } getScript(t) { return new Promise(s => { $.get({ url: t }, (t, e, i) => s(i)) }) } runScript(t, s) { return new Promise(e => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let o = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); o = o ? 1 * o : 20, o = s && s.timeout ? s.timeout : o; const [h, a] = i.split("@"), r = { url: `http://${a}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: o }, headers: { "X-Key": h, Accept: "*/*" } }; $.post(r, (t, s, i) => e(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s); if (!e && !i) return {}; { const i = e ? t : s; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s), o = JSON.stringify(this.data); e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o) } } lodash_get(t, s, e) { const i = s.replace(/\[(\d+)\]/g, ".$1").split("."); let o = t; for (const t of i) if (o = Object(o)[t], void 0 === o) return e; return o } lodash_set(t, s, e) { return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), s.slice(0, -1).reduce((t, e, i) => Object(t[e]) === t[e] ? t[e] : t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {}, t)[s[s.length - 1]] = e, t) } getdata(t) { let s = this.getval(t); if (/^@/.test(t)) { const [, e, i] = /^@(.*?)\.(.*?)$/.exec(t), o = e ? this.getval(e) : ""; if (o) try { const t = JSON.parse(o); s = t ? this.lodash_get(t, i, "") : s } catch (t) { s = "" } } return s } setdata(t, s) { let e = !1; if (/^@/.test(s)) { const [, i, o] = /^@(.*?)\.(.*?)$/.exec(s), h = this.getval(i), a = i ? "null" === h ? null : h || "{}" : "{}"; try { const s = JSON.parse(a); this.lodash_set(s, o, t), e = this.setval(JSON.stringify(s), i) } catch (s) { const h = {}; this.lodash_set(h, o, t), e = this.setval(JSON.stringify(h), i) } } else e = $.setval(t, s); return e } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, s) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? (this.data = this.loaddata(), this.data[s] = t, this.writedata(), !0) : this.data && this.data[s] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, s = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) }) : this.isQuanX() ? $task.fetch(t).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, s) => { try { const e = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); this.ckjar.setCookieSync(e, null), s.cookieJar = this.ckjar } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t))) } post(t, s = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) $httpClient.post(t, (t, e, i) => { !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) }); else if (this.isQuanX()) t.method = "POST", $task.fetch(t).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: e, ...i } = t; this.got.post(e, i).then(t => { const { statusCode: e, statusCode: i, headers: o, body: h } = t; s(null, { status: e, statusCode: i, headers: o, body: h }, h) }, t => s(t)) } } time(t) { let s = { "M+": (new Date).getMonth() + 1, "d+": (new Date).getDate(), "H+": (new Date).getHours(), "m+": (new Date).getMinutes(), "s+": (new Date).getSeconds(), "q+": Math.floor(((new Date).getMonth() + 3) / 3), S: (new Date).getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in s) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ("00" + s[e]).substr(("" + s[e]).length))); return t } msg(s = t, e = "", i = "", o) { const h = t => !t || !this.isLoon() && this.isSurge() ? t : "string" == typeof t ? this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : void 0 : "object" == typeof t && (t["open-url"] || t["media-url"]) ? this.isLoon() ? t["open-url"] : this.isQuanX() ? t : void 0 : void 0; this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o)), this.logs.push("", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="), this.logs.push(s), e && this.logs.push(e), i && this.logs.push(i) } log(...t) { t.length > 0 ? this.logs = [...this.logs, ...t] : console.log(this.logs.join(this.logSeparator)) } logErr(t, s) { const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); e ? $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t) } wait(t) { return new Promise(s => setTimeout(s, t)) } done(t = {}) { const s = (new Date).getTime(), e = (s - this.startTime) / 1e3; this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, s) } From e037e0e995aafc47b878ebde84a01253a657e3f6 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:54:03 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_xtg.js => activity/jd_xtg.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jd_xtg.js => activity/jd_xtg.js (100%) diff --git a/jd_xtg.js b/activity/jd_xtg.js similarity index 100% rename from jd_xtg.js rename to activity/jd_xtg.js From df629902f4010b84d5bb88463e3b22eb39b038e7 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 10:55:23 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移活动脚本 --- jd_mohe.js => activity/jd_mohe.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename jd_mohe.js => activity/jd_mohe.js (99%) diff --git a/jd_mohe.js b/activity/jd_mohe.js similarity index 99% rename from jd_mohe.js rename to activity/jd_mohe.js index 600221c2..9849add8 100644 --- a/jd_mohe.js +++ b/activity/jd_mohe.js @@ -419,4 +419,4 @@ function taskurl(url) { } } // prettier-ignore -function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} \ No newline at end of file +function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} From 96fd25236f4d3b5f6cafcc8227629b5edf526b09 Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Sun, 13 Dec 2020 11:12:15 +0800 Subject: [PATCH 11/21] Delete jdJxStoryShareCodes.js --- activity/jdJxStoryShareCodes.js | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 activity/jdJxStoryShareCodes.js diff --git a/activity/jdJxStoryShareCodes.js b/activity/jdJxStoryShareCodes.js deleted file mode 100644 index 94534295..00000000 --- a/activity/jdJxStoryShareCodes.js +++ /dev/null @@ -1,30 +0,0 @@ -/* -京喜故事互助码 -此文件为Node.js专用。其他用户请忽略 -支持京东N个账号 - */ -//云服务器腾讯云函数等Node.js用户在此处填写京喜故事的好友码。 -// github action用户的好友互助码填写到Action->Settings->Secrets->new Secret里面(Name填写 JXSTORY_SHARECODES(此处的Name必须按此来写,不能随意更改),内容处填写互助码,填写规则如下) -// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 -// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 -let shareCodes = [ - '',//账号一的好友shareCode,不同好友中间用@符号隔开 - '',//账号二的好友shareCode -] -// 判断github action里面是否有京喜故事互助码 -if (process.env.JXSTORY_SHARECODES) {if (process.env.JXSTORY_SHARECODES.indexOf('&') > -1) { - console.log(`您的互助码选择的是用&隔开\n`) - shareCodes = process.env.JXSTORY_SHARECODES.split('&'); - } else if (process.env.JXSTORY_SHARECODES.indexOf('\n') > -1) { - console.log(`您的互助码选择的是用换行隔开\n`) - shareCodes = process.env.JXSTORY_SHARECODES.split('\n'); - } else { - shareCodes = process.env.JXSTORY_SHARECODES.split(); - } -} else if (process.env.JXSTORY_SHARECODES) { - console.log(`由于您secret里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) -} -for (let i = 0; i < shareCodes.length; i++) { - const index = (i + 1 === 1) ? '' : (i + 1); - exports['shareCodes' + index] = shareCodes[i]; -} From 9a58f486040ebb24e7a1ed577a25b1d50af08f8c Mon Sep 17 00:00:00 2001 From: any Date: Sun, 13 Dec 2020 18:39:20 +0800 Subject: [PATCH 12/21] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E7=9A=84=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/crontab_list.sh | 19 ++------- docker/crontab_list_ts.sh | 85 +++++++++++++++++---------------------- 2 files changed, 41 insertions(+), 63 deletions(-) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index eeb0fb49..d66f68d1 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -3,26 +3,15 @@ # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log - ##############短期活动############## -# 京喜故事(2020.12.12活动过期) -10 * * * * node /scripts/jd_jxstory.js >> /scripts/logs/jd_jxstory.log 2>&1 -# 金榜年终奖(2020.12.12活动过期) -10 7 * * * node /scripts/jd_split.js >> /scripts/logs/jd_split.log 2>&1 # 秒杀红包雨(2020.12.31活动过期) 40 8 * * * node /scripts/jd_ms_redrain.js >> /scripts/logs/jd_ms_redrain.log 2>&1 # 健康抽奖机(2020.12.31活动过期) 10 0 * * * node /scripts/jd_health.js >> /scripts/logs/jd_health.log 2>&1 -# 直播红包雨(2020.12.12活动过期) -0 0,9,11,13,15,17,19,20,21,23 * * * node /scripts/jd_live_redrain.js >> /scripts/logs/jd_live_redrain.log 2>&1 -# 数码加购京豆(2020.12.11活动过期) -8 0 * * * node /scripts/jd_digital_floor.js >> /scripts/logs/jd_digital_floor.log 2>&1 -# jd_apple_live -8 0,20 * * * node /scripts/jd_apple_live.js >> /scripts/logs/jd_apple_live.log 2>&1 -# jd_pubg +# PUBG游戏盛典(2020.12.13活动过期) 8 1,20 * * * node /scripts/jd_pubg.js >> /scripts/logs/jd_pubg.log 2>&1 -##############长期活动############## +##############长期活动############## # 签到 0 0,12,18 * * * cd /scripts && node jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 # 京小超兑换奖品 @@ -73,8 +62,8 @@ 16 6 * * * node /scripts/jd_small_home.js >> /scripts/logs/jd_small_home.log 2>&1 # 东东工厂 36 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 -#十元街 -36 8 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 +# 十元街 +36 8,18 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 # 京东代属(注:限校园用户可使用) 36 9 * * * node /scripts/jd_ds.js >> /scripts/logs/jd_ds.log 2>&1 # 京东快递签到 diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 44cc0c76..72139542 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -1,87 +1,76 @@ #必须要的默认定时任务请勿删除 -52 */1 * * * sh /scripts/docker/default_task.sh |ts >> /scripts/logs/default_task.log 2>&1 +52 */1 * * * sh /scripts/docker/default_task.sh | ts >> /scripts/logs/default_task.log 2>&1 # 每3天的23:50分清理一次日志 50 23 */3 * * rm -rf /scripts/logs/*.log - ##############短期活动############## -# 京喜故事(2020.12.12活动过期) -10 * * * * node /scripts/jd_jxstory.js |ts >> /scripts/logs/jd_jxstory.log 2>&1 -# 金榜年终奖(2020.12.12活动过期) -10 7 * * * node /scripts/jd_split.js |ts >> /scripts/logs/jd_split.log 2>&1 # 秒杀红包雨(2020.12.31活动过期) -40 8 * * * node /scripts/jd_ms_redrain.js |ts >> /scripts/logs/jd_ms_redrain.log 2>&1 +40 8 * * * node /scripts/jd_ms_redrain.js | ts >> /scripts/logs/jd_ms_redrain.log 2>&1 # 健康抽奖机(2020.12.31活动过期) -10 0 * * * node /scripts/jd_health.js |ts >> /scripts/logs/jd_health.log 2>&1 -# 直播红包雨(2020.12.12活动过期) -0 0,9,11,13,15,17,19,20,21,23 * * * node /scripts/jd_live_redrain.js |ts >> /scripts/logs/jd_live_redrain.log 2>&1 -# 数码加购京豆(2020.12.11活动过期) -8 0 * * * node /scripts/jd_digital_floor.js |ts >> /scripts/logs/jd_digital_floor.log 2>&1 -# jd_apple_live -8 0,20 * * * node /scripts/jd_apple_live.js |ts >> /scripts/logs/jd_apple_live.log 2>&1 -# jd_pubg -8 1,20 * * * node /scripts/jd_pubg.js |ts >> /scripts/logs/jd_pubg.log 2>&1 -##############长期活动############## +10 0 * * * node /scripts/jd_health.js | ts >> /scripts/logs/jd_health.log 2>&1 +# PUBG游戏盛典(2020.12.13活动过期) +8 1,20 * * * node /scripts/jd_pubg.js | ts >> /scripts/logs/jd_pubg.log 2>&1 +##############长期活动############## # 签到 -0 0,12,18 * * * cd /scripts && node jd_bean_sign.js |ts >> /scripts/logs/jd_bean_sign.log 2>&1 +0 0,12,18 * * * cd /scripts && node jd_bean_sign.js | ts >> /scripts/logs/jd_bean_sign.log 2>&1 # 京小超兑换奖品 -0 0 * * * node /scripts/jd_blueCoin.js |ts >> /scripts/logs/jd_blueCoin.log 2>&1 +0 0 * * * node /scripts/jd_blueCoin.js | ts >> /scripts/logs/jd_blueCoin.log 2>&1 # 摇京豆 -0 0 * * * node /scripts/jd_club_lottery.js |ts >> /scripts/logs/jd_club_lottery.log 2>&1 +0 0 * * * node /scripts/jd_club_lottery.js | ts >> /scripts/logs/jd_club_lottery.log 2>&1 # 东东农场 -5 6-18/6 * * * node /scripts/jd_fruit.js |ts >> /scripts/logs/jd_fruit.log 2>&1 +5 6-18/6 * * * node /scripts/jd_fruit.js | ts >> /scripts/logs/jd_fruit.log 2>&1 # 宠汪汪 -15 */2 * * * node /scripts/jd_joy.js |ts >> /scripts/logs/jd_joy.log 2>&1 +15 */2 * * * node /scripts/jd_joy.js | ts >> /scripts/logs/jd_joy.log 2>&1 # 宠汪汪喂食 -15 */1 * * * node /scripts/jd_joy_feedPets.js |ts >> /scripts/logs/jd_joy_feedPets.log 2>&1 +15 */1 * * * node /scripts/jd_joy_feedPets.js | ts >> /scripts/logs/jd_joy_feedPets.log 2>&1 # 宠汪汪积分兑换奖品 -0 0-16/8 * * * node /scripts/jd_joy_reward.js |ts >> /scripts/logs/jd_joy_reward.log 2>&1 +0 0-16/8 * * * node /scripts/jd_joy_reward.js | ts >> /scripts/logs/jd_joy_reward.log 2>&1 # 宠汪汪偷好友积分与狗粮 -0 0,6 * * * node /scripts/jd_joy_steal.js |ts >> /scripts/logs/jd_joy_steal.log 2>&1 +0 0,6 * * * node /scripts/jd_joy_steal.js | ts >> /scripts/logs/jd_joy_steal.log 2>&1 # 摇钱树 -0 */2 * * * node /scripts/jd_moneyTree.js |ts >> /scripts/logs/jd_moneyTree.log 2>&1 +0 */2 * * * node /scripts/jd_moneyTree.js | ts >> /scripts/logs/jd_moneyTree.log 2>&1 # 东东萌宠 -5 6-18/6 * * * node /scripts/jd_pet.js |ts >> /scripts/logs/jd_pet.log 2>&1 +5 6-18/6 * * * node /scripts/jd_pet.js | ts >> /scripts/logs/jd_pet.log 2>&1 # 京东种豆得豆 -0 7-22/1 * * * node /scripts/jd_plantBean.js |ts >> /scripts/logs/jd_plantBean.log 2>&1 +0 7-22/1 * * * node /scripts/jd_plantBean.js | ts >> /scripts/logs/jd_plantBean.log 2>&1 # 京东全民开红包 -1 1 * * * node /scripts/jd_redPacket.js |ts >> /scripts/logs/jd_redPacket.log 2>&1 +1 1 * * * node /scripts/jd_redPacket.js | ts >> /scripts/logs/jd_redPacket.log 2>&1 # 进店领豆 -10 0 * * * node /scripts/jd_shop.js |ts >> /scripts/logs/jd_shop.log 2>&1 +10 0 * * * node /scripts/jd_shop.js | ts >> /scripts/logs/jd_shop.log 2>&1 # 京东天天加速 -8 */3 * * * node /scripts/jd_speed.js |ts >> /scripts/logs/jd_speed.log 2>&1 +8 */3 * * * node /scripts/jd_speed.js | ts >> /scripts/logs/jd_speed.log 2>&1 # 东东超市 -11 1-23/5 * * * node /scripts/jd_superMarket.js |ts >> /scripts/logs/jd_superMarket.log 2>&1 +11 1-23/5 * * * node /scripts/jd_superMarket.js | ts >> /scripts/logs/jd_superMarket.log 2>&1 # 取关京东店铺商品 -55 23 * * * node /scripts/jd_unsubscribe.js |ts >> /scripts/logs/jd_unsubscribe.log 2>&1 +55 23 * * * node /scripts/jd_unsubscribe.js | ts >> /scripts/logs/jd_unsubscribe.log 2>&1 # 京豆变动通知 -0 10 * * * node /scripts/jd_bean_change.js |ts >> /scripts/logs/jd_bean_change.log 2>&1 +0 10 * * * node /scripts/jd_bean_change.js | ts >> /scripts/logs/jd_bean_change.log 2>&1 # 京东抽奖机 -11 1 * * * node /scripts/jd_lotteryMachine.js |ts >> /scripts/logs/jd_lotteryMachine.log 2>&1 +11 1 * * * node /scripts/jd_lotteryMachine.js | ts >> /scripts/logs/jd_lotteryMachine.log 2>&1 # 京东排行榜 -11 9 * * * node /scripts/jd_rankingList.js |ts >> /scripts/logs/jd_rankingList.log 2>&1 +11 9 * * * node /scripts/jd_rankingList.js | ts >> /scripts/logs/jd_rankingList.log 2>&1 # 天天提鹅 -18 * * * * node /scripts/jd_daily_egg.js |ts >> /scripts/logs/jd_daily_egg.log 2>&1 +18 * * * * node /scripts/jd_daily_egg.js | ts >> /scripts/logs/jd_daily_egg.log 2>&1 # 金融养猪 -12 * * * * node /scripts/jd_pigPet.js |ts >> /scripts/logs/jd_pigPet.log 2>&1 +12 * * * * node /scripts/jd_pigPet.js | ts >> /scripts/logs/jd_pigPet.log 2>&1 # 点点券 -20 0,20 * * * node /scripts/jd_necklace.js |ts >> /scripts/logs/jd_necklace.log 2>&1 +20 0,20 * * * node /scripts/jd_necklace.js | ts >> /scripts/logs/jd_necklace.log 2>&1 # 京喜工厂 -20 * * * * node /scripts/jd_dreamFactory.js |ts >> /scripts/logs/jd_dreamFactory.log 2>&1 +20 * * * * node /scripts/jd_dreamFactory.js | ts >> /scripts/logs/jd_dreamFactory.log 2>&1 # 东东小窝 -16 6 * * * node /scripts/jd_small_home.js |ts >> /scripts/logs/jd_small_home.log 2>&1 +16 6 * * * node /scripts/jd_small_home.js | ts >> /scripts/logs/jd_small_home.log 2>&1 # 东东工厂 -36 * * * * node /scripts/jd_jdfactory.js |ts >> /scripts/logs/jd_jdfactory.log 2>&1 +36 * * * * node /scripts/jd_jdfactory.js | ts >> /scripts/logs/jd_jdfactory.log 2>&1 # 十元街 -36 8,18 * * * node /scripts/jd_syj.js |ts >> /scripts/logs/jd_syj.log 2>&1 +36 8,18 * * * node /scripts/jd_syj.js | ts >> /scripts/logs/jd_syj.log 2>&1 # 京东代属(注:限校园用户可使用) -36 9 * * * node /scripts/jd_ds.js |ts >> /scripts/logs/jd_ds.log 2>&1 +36 9 * * * node /scripts/jd_ds.js | ts >> /scripts/logs/jd_ds.log 2>&1 # 京东快递签到 -23 1 * * * node /scripts/jd_kd.js |ts >> /scripts/logs/jd_kd.log 2>&1 +23 1 * * * node /scripts/jd_kd.js | ts >> /scripts/logs/jd_kd.log 2>&1 # 京东汽车(签到满500赛点可兑换500京豆) -33 2 * * * node /scripts/jd_car.js |ts >> /scripts/logs/jd_car.log 2>&1 +33 2 * * * node /scripts/jd_car.js | ts >> /scripts/logs/jd_car.log 2>&1 # 领京豆额外奖励(每日可获得3京豆) -33 4 * * * node /scripts/jd_bean_home.js |ts >> /scripts/logs/jd_bean_home.log 2>&1 +33 4 * * * node /scripts/jd_bean_home.js | ts >> /scripts/logs/jd_bean_home.log 2>&1 # 京东直播(每日18豆) -10-20/5 11 * * * node /scripts/jd_live.js |ts >> /scripts/logs/jd_live.log 2>&1 \ No newline at end of file +10-20/5 11 * * * node /scripts/jd_live.js | ts >> /scripts/logs/jd_live.log 2>&1 From 5446ec41088ff3a26803b08c74da10e090a96111 Mon Sep 17 00:00:00 2001 From: any Date: Sun, 13 Dec 2020 18:49:19 +0800 Subject: [PATCH 13/21] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=87=91=E8=9E=8D=E7=AD=BE=E5=88=B0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=EF=BC=9B2.=E5=B0=86=E9=83=A8=E5=88=86=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E7=9A=84=E8=84=9A=E6=9C=AC=E7=A7=BB=E5=8A=A8=E5=88=B0?= =?UTF-8?q?backUp=E6=96=87=E4=BB=B6=E5=A4=B9=EF=BC=9B3.=E4=B8=8A=E4=B8=AAc?= =?UTF-8?q?ommit=E9=94=99=E8=AF=AF=E5=88=A0=E9=99=A4=E4=BA=86=E8=8B=B9?= =?UTF-8?q?=E6=9E=9C=E8=B6=85=E5=93=81=E6=97=A5=E4=BA=92=E5=8A=A8=E6=8A=BD?= =?UTF-8?q?=E5=A5=96=EF=BC=8C=E8=BF=98=E5=8E=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/crontab_list.sh | 4 + docker/crontab_list_ts.sh | 4 + jd_818.js | 935 -------------------------------------- jd_jxstory.js | 670 --------------------------- jd_mohe.js | 422 ----------------- jd_xtg.js | 420 ----------------- 6 files changed, 8 insertions(+), 2447 deletions(-) delete mode 100644 jd_818.js delete mode 100644 jd_jxstory.js delete mode 100644 jd_mohe.js delete mode 100644 jd_xtg.js diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index d66f68d1..3e147612 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -10,6 +10,8 @@ 10 0 * * * node /scripts/jd_health.js >> /scripts/logs/jd_health.log 2>&1 # PUBG游戏盛典(2020.12.13活动过期) 8 1,20 * * * node /scripts/jd_pubg.js >> /scripts/logs/jd_pubg.log 2>&1 +# 苹果超品日互动抽奖机(2020.12.14活动过期) +8 0,20 * * * node /scripts/jd_apple_live.js >> /scripts/logs/jd_apple_live.log 2>&1 ##############长期活动############## # 签到 @@ -74,3 +76,5 @@ 33 4 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 # 京东直播(每日18豆) 10-20/5 11 * * * node /scripts/jd_live.js >> /scripts/logs/jd_live.log 2>&1 +# 京东金融签到 +10 6 * * * node /scripts/jr_sign.js >> /scripts/logs/jr_sign.log 2>&1 diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 72139542..82b8d358 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -10,6 +10,8 @@ 10 0 * * * node /scripts/jd_health.js | ts >> /scripts/logs/jd_health.log 2>&1 # PUBG游戏盛典(2020.12.13活动过期) 8 1,20 * * * node /scripts/jd_pubg.js | ts >> /scripts/logs/jd_pubg.log 2>&1 +# 苹果超品日互动抽奖机(2020.12.14活动过期) +8 0,20 * * * node /scripts/jd_apple_live.js | ts >> /scripts/logs/jd_apple_live.log 2>&1 ##############长期活动############## # 签到 @@ -74,3 +76,5 @@ 33 4 * * * node /scripts/jd_bean_home.js | ts >> /scripts/logs/jd_bean_home.log 2>&1 # 京东直播(每日18豆) 10-20/5 11 * * * node /scripts/jd_live.js | ts >> /scripts/logs/jd_live.log 2>&1 +# 京东金融签到 +10 6 * * * node /scripts/jr_sign.js | ts >> /scripts/logs/jr_sign.log 2>&1 diff --git a/jd_818.js b/jd_818.js deleted file mode 100644 index 3f7ff7ed..00000000 --- a/jd_818.js +++ /dev/null @@ -1,935 +0,0 @@ -/* - * @Author: lxk0301 https://github.com/lxk0301 - * @Date: 2020-11-03 09:25:47 - * @Last Modified by: lxk0301 - * @Last Modified time: 2020-11-23 12:27:07 - */ -/* -京东手机狂欢城活动,每日可获得30+以上京豆(其中20京豆是往期奖励,需第一天参加活动后,第二天才能拿到) -活动时间10.21日-11.12日结束,活动23天,保底最少可以拿到690京豆 -活动地址: https://rdcseason.m.jd.com/#/index - -其中有20京豆是往期奖励,需第一天参加活动后,第二天才能拿到!!!! - - -每天0/6/12/18点逛新品/店铺/会场可获得京豆,京豆先到先得 -往期奖励一般每天都能拿20京豆 - -注:脚本运行会给我提供的助力码助力,介意者可删掉脚本第48行helpCode里面的东西。留空即可(const helpCode = []); - -支持京东双账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -// quantumultx -[task_local] -#京东手机狂欢城 -1 0-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js, tag=京东手机狂欢城, enabled=true -// Loon -[Script] -cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js,tag=京东手机狂欢城 -// Surge -京东手机狂欢城 = type=cron,cronexp=1 0-18/6 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js - */ -const $ = new Env('京东手机狂欢城'); - -const notify = $.isNode() ? require('./sendNotify') : ''; -let jdNotify = false;//是否开启推送互助码 -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} - -const JD_API_HOST = 'https://rdcseason.m.jd.com/api/'; -const activeEndTime = '2020/11/11 23:59:59+08:00'; -const addUrl = 'http://jd.turinglabs.net/helpcode/create/'; -const printUrl = `http://jd.turinglabs.net/helpcode/print/20/`; -let helpCode = [] -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - $.temp = []; - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - 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。 - } - continue - } - await JD818(); - // await getHelp(); - // await doHelp(); - // await main(); - } - } - // console.log($.temp) -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function main() { - // await getHelp(); - await Promise.all([ - getHelp(), - listGoods(), - shopInfo(), - listMeeting(), - ]); - await $.wait(10000); - await Promise.all([ - listGoods(), - shopInfo(), - listMeeting(), - doHelp(), - myRank(), - ]); - await Promise.all([ - getListJbean(), - getListRank(), - getListIntegral(), - ]); - await showMsg() -} -async function JD818() { - await getHelp(); - await listGoods();//逛新品 - await shopInfo();//逛店铺 - await listMeeting();//逛会场 - await $.wait(10000); - //再次运行一次,避免出现遗漏的问题 - await listGoods();//逛新品 - await shopInfo();//逛店铺 - await listMeeting();//逛会场 - await doHelp(); - await myRank();//领取往期排名奖励 - await getListJbean(); - await getListRank(); - await getListIntegral(); - await showMsg() -} -function listMeeting() { - const options = { - 'url': `${JD_API_HOST}task/listMeeting?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise((resolve) => { - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - // console.log('ddd----ddd', data.code) - if (data.code === 200 && data.data.meetingList) { - let integralNum = 0, jdNum = 0; - for (let item of data.data.meetingList) { - let res = await browseMeeting(item.id); - if (res.code === 200) { - let res2 = await getMeetingPrize(item.id); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - // await browseMeeting('1596206323911'); - // await getMeetingPrize('1596206323911'); - } - console.log(`逛会场--获得积分:${integralNum}`) - console.log(`逛会场--获得京豆:${jdNum}`) - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function listGoods() { - const options = { - 'url': `${JD_API_HOST}task/listGoods?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise( (resolve) => { - $.get(options, async (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data.goodsList) { - let integralNum = 0, jdNum = 0; - for (let item of data.data.goodsList) { - let res = await browseGoods(item.id); - if (res.code === 200) { - let res2 = await getGoodsPrize(item.id); - // console.log('逛新品领取奖励res2', res2); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - } - console.log(`逛新品获得积分:${integralNum}`) - console.log(`逛新品获得京豆:${jdNum}`) - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }); -} -function shopInfo() { - const options = { - 'url': `${JD_API_HOST}task/shopInfo?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise( (resolve) => { - $.get(options, async (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data) { - let integralNum = 0, jdNum = 0; - for (let item of data.data) { - let res = await browseShop(item.shopId); - // console.log('res', res) - // res = JSON.parse(res); - // console.log('res', res.code) - if (res.code === 200) { - // console.log('---') - let res2 = await getShopPrize(item.shopId); - // console.log('res2', res2); - // res2 = JSON.parse(res2); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - } - console.log(`逛店铺获得积分:${integralNum}`) - console.log(`逛店铺获得京豆:${jdNum}`) - } - } - // console.log('data1', data); - } catch (e) { - $.logErr(e, resp); - } finally { - resolve() - } - }) - }) - -} -function browseGoods(id) { - const options = { - "url": `${JD_API_HOST}task/browseGoods?t=${Date.now()}&skuId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.get(options, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - // console.log('data1', data); - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function getGoodsPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getGoodsPrize?t=${Date.now()}&skuId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.get(options, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function browseShop(id) { - const options2 = { - "url": `${JD_API_HOST}task/browseShop`, - "body": `shopId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options2, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getShopPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getShopPrize`, - "body": `shopId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options, (err, resp, data) => { - try { - // console.log('getShopPrize', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function browseMeeting(id) { - const options2 = { - "url": `${JD_API_HOST}task/browseMeeting`, - "body": `meetingId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options2, (err, resp, data) => { - try { - // console.log('点击浏览会场', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getMeetingPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getMeetingPrize`, - "body": `meetingId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options, (err, resp, data) => { - try { - // console.log('getMeetingPrize', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function myRank() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/myRank?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.jbeanNum = ''; - $.get(options, async (err, resp, data) => { - try { - // console.log('查询获奖列表data', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data.myHis) { - for (let i = 0; i < data.data.myHis.length; i++) { - $.date = data.data.myHis[0].date; - if (data.data.myHis[i].status === '21') { - await $.wait(1000); - console.log('开始领奖') - let res = await saveJbean(data.data.myHis[i].id); - // console.log('领奖结果', res) - if (res.code === 200 && res.data.rsCode === 200) { - // $.jbeanNum += Number(res.data.jbeanNum); - console.log(`${data.data.myHis[i].date}日奖励领取成功${JSON.stringify(res.data.jbeanNum)}`) - } - } - if (i === 0 && data.data.myHis[i].status === '22') { - $.jbeanNum = data.data.myHis[i].prize; - } - } - // for (let item of data.data.myHis){ - // if (item.status === '21') { - // await $.wait(1000); - // console.log('开始领奖') - // let res = await saveJbean(item.id); - // // console.log('领奖结果', res) - // if (res.code === 200 && res.data.rsCode === 200) { - // $.jbeanNum += Number(res.data.jbeanNum); - // } - // } - // } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function saveJbean(id) { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/saveJbean`, - "body": `prizeId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.post(options, (err, resp, data) => { - try { - // console.log('领取京豆结果', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -async function doHelp() { - console.log(`脚本自带助力码数量:${helpCode.length}`) - let body = '', nowTime = Date.now(), tempCode = []; - const zone = new Date().getTimezoneOffset(); - if (zone === 0) { - nowTime += 28800000;//UTC-0时区加上8个小时 - } - await updateShareCodes(); - if (!$.updatePkActivityIdRes) await updateShareCodesCDN(); - tempCode = $.updatePkActivityIdRes.shareCodes; - console.log(`是否大于当天九点🕘:${nowTime > new Date(nowTime).setHours(9, 0, 0, 0)}`) - //当天大于9:00才从API里面取收集的助力码 - if (nowTime > new Date(nowTime).setHours(9, 0, 0, 0)) body = await printAPI();//访问收集的互助码 - if (body) { - console.log(`printAPI返回助力码数量:${body.replace(/"/g, '').split(',').length}`) - tempCode = tempCode.concat(body.replace(/"/g, '').split(',')) - } - console.log(`累计助力码数量:${tempCode.length}`) - //去掉重复的 - tempCode = [...new Set(tempCode)]; - console.log(`去重后总助力码数量:${tempCode.length}`) - for (let item of tempCode) { - if (!item) continue; - const helpRes = await toHelp(item.trim()); - if (helpRes.data.status === 5) { - console.log(`助力机会已耗尽,跳出助力`); - break; - } - } -} -function printAPI() { - return new Promise(resolve => { - $.get({url: `${printUrl}`}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function toHelp(code) { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/toHelp`, - "body": `shareId=${code}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Content-Type": "application/x-www-form-urlencoded", - "Origin": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br", - "Cookie": cookie, - "Connection": "keep-alive", - "Accept": "application/json, text/plain, */*", - "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"), - "Referer": "https://rdcseason.m.jd.com/", - "Content-Length": "44", - "Accept-Language": "zh-cn" - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`助力结果:${data}`); - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function getHelp() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/getHelp?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - console.log(`\n您的助力码shareId(互助码每天都是变化的)\n\n"${data.data.shareId}",\n`); - console.log(`每日9:00以后复制下面的URL链接在浏览器里面打开一次就能自动上车\n\n${addUrl}${data.data.shareId}\n`); - let ctrTemp; - if ($.isNode() && process.env.JD_818_SHAREID_NOTIFY) { - console.log(`环境变量JD_818_SHAREID_NOTIFY::${process.env.JD_818_SHAREID_NOTIFY}`) - ctrTemp = `${process.env.JD_818_SHAREID_NOTIFY}` === 'true'; - } else { - ctrTemp = `${jdNotify}` === 'true'; - } - console.log(`是否发送上车推送链接:${ctrTemp ? '是': '否'}`) - // 只在早晨9点钟触发一次 - let NowHours = new Date().getHours(); - const zone = new Date().getTimezoneOffset(); - if (zone === 0) { - NowHours += 8;//UTC-0时区加上8个小时 - } - if(ctrTemp && NowHours === 9 && $.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}互助码自动上车`, `[9:00之后上车]您的互助码上车链接是 ↓↓↓ \n\n ${addUrl}${data.data.shareId} \n\n ↑↑↑`, { - url: `${addUrl}${data.data.shareId}` - }) - // await $.http.get({url: `http://jd.turinglabs.net/helpcode/add/${data.data.shareId}/`}).then((resp) => { - // console.log(resp); - // return - // if (resp.statusCode === 200) { - // const { body } = resp; - // } - // }); - $.temp.push(data.data.shareId); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -//获取当前活动总京豆数量 -function getListJbean() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listJbean?pageNum=1`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - $.jbeanCount = data.data.jbeanCount; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -function getListIntegral() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listIntegral?pageNum=1`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - $.integralCount = data.data.integralCount; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -//查询今日累计积分与排名 -function getListRank() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listRank?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - if (data.data.my) { - $.integer = data.data.my.integer; - $.num = data.data.my.num; - } - if (data.data.last) { - $.lasNum = data.data.last.num; - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function updateShareCodes(url = 'https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json') { - return new Promise(resolve => { - //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json - //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json - $.get({url}, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - } else { - $.updatePkActivityIdRes = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function updateShareCodesCDN(url = 'https://raw.fastgit.org/lxk0301/updateTeam/master/jd_shareCodes.json') { - return new Promise(resolve => { - //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json - //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json - $.get({url}, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - $.updatePkActivityIdRes = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function showMsg() { - let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; - if (nowTime > new Date(activeEndTime).getTime()) { - $.msg($.name, '活动已结束', `该活动累计获得京豆:${$.jbeanCount}个\niOS用户请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\n https://github.com/lxk0301/jd_scripts`) - } else { - $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${$.jbeanCount ? `${$.integer ? `今日获得积分:${$.integer}个\n` : ''}${$.num ? `今日排名:${$.num}\n` : ''}今日参数人数:${$.lasNum}人\n累计获得京豆:${$.jbeanCount}个🐶\n` : ''}${$.jbeanCount ? `累计获得积分:${$.integralCount}个\n` : ''}${$.jbeanNum ? `${$.date}日奖品:${$.jbeanNum}\n` : ''}具体详情点击弹窗跳转后即可查看`, {"open-url": "https://rdcseason.m.jd.com/#/hame"}); - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/jd_jxstory.js b/jd_jxstory.js deleted file mode 100644 index 2e923e1f..00000000 --- a/jd_jxstory.js +++ /dev/null @@ -1,670 +0,0 @@ -/* -京喜故事 -活动入口 :京喜APP->首页浮动窗口去领钱/京喜工厂-金牌厂长 -每天运行一次即可 - - -已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -============Quantumultx=============== -[task_local] -#京喜故事 -10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, tag=京喜故事, enabled=true - -================Loon============== -[Script] -cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js,tag=京喜故事 - -===============Surge================= -京喜故事 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js - -============小火箭========= -京喜故事 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, cronexpr="10 * * * *", timeout=200, enable=true - - */ - - -const $ = new Env('京喜故事'); -const JD_API_HOST = 'https://m.jingxi.com'; - -const notify = $.isNode() ? require('./sendNotify') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = 3; -let cookiesArr = [], cookie = '', message = ''; -const inviteCodes = ['qSDHMwUOz7onHcMyaju4KmdSXWf0dlv7LVnTt1Wzemo=@iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=', 'iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=']; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -!(async () => { - await requireConfig(); - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - $.ele = 0; - 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。 - } - continue - } - await shareCodesFormat(); - await jdJxStory() - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - -async function jdJxStory() { - await userInfo() - await helpFriends() - await sign() - await taskList() - for(let i =0;i { - $.get(taskurl('SignIn', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`签到钞票:收取成功,获得 ${data['data']['rewardMoneyToday']}`) - message += `【签到钞票】:收取成功,获得 ${data['data']['rewardMoneyToday']}\n` - } else { - console.log(`签到钞票:收取失败,${data.msg}`) - message += `【签到钞票】收取失败,${data.msg}\n` - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 初始化任务 -function taskList() { - return new Promise(async resolve => { - $.get(newtasksysUrl('GetUserTaskStatusList'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - let userTaskStatusList = data['data']['userTaskStatusList']; - for (let i = 0; i < userTaskStatusList.length; i++) { - const vo = userTaskStatusList[i]; - if (vo['awardStatus'] !== 1) { - if (vo.completedTimes >= vo.targetTimes) { - console.log(`任务:${vo.description}可完成`) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - } else { - switch (vo.taskType) { - case 2: // 逛一逛任务 - case 6: // 浏览商品任务 - case 9: // 开宝箱 - for (let i = vo.completedTimes; i <= vo.configTargetTimes; ++i) { - console.log(`去做任务:${vo.taskName}`) - await doTask(vo.taskId) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - } - break - case 4: // 招工 - break - case 5: // 京喜工厂投入电力 - console.log(`去做任务:${vo.taskName}`) - await doTask(vo.taskId) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - break - case 1: // 登陆领奖 - default: - break - } - } - } - } - console.log(`完成任务:共领取${$.ele}钞票`) - message += `【每日任务】领奖成功,共计 ${$.ele} 钞票\n`; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 钞票翻倍任务 -async function cardList() { - for (let i = 0; i < 10; ++i) { - await readyCard(); - } -} -function readyCard() { - return new Promise(async resolve => { - $.get(taskurl('ReadyCard'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - - if(data['ret']===0 && data['data']['flopFinishNumber']{ - return { - "cardId" : vo['cardId'], - "cardPosition" : index+1, - "cardStatus" :0 - } - }) - cardInfo[0]['cardStatus'] = 1 - - await selectCard(cardInfo) - // await $.wait(1000); - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 选择卡片 -function selectCard(cardInfo) { - return new Promise(async resolve => { - $.get(taskurl('SelectCard',`cardInfo=${JSON.stringify({"cardInfo":cardInfo})}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret']===0){ - await $.wait(10000); - await finishCard(cardInfo[0]['cardId']) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 完成卡片 -function finishCard(cardId) { - return new Promise(async resolve => { - $.get(taskurl('FinishCard',`cardid=${cardId}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret']===0){ - let ratio = data['data']['cardInfo'].filter(vo=>vo['cardId']===cardId)[0]['cardRatio'] - console.log(`翻倍成功,获得${ratio}%,共计获得${data['data']['earnRatio']}%`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 升级 -function upgrade() { - return new Promise(async resolve => { - $.get(taskurl('UpgradeUserLevelDraw', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0&&data['data']['active']!=='') { - console.log(`升级成功,获得${JSON.stringify(data['data'])}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 点击 -function increase() { - return new Promise(async resolve => { - $.get(taskurl('IncreaseUserMoney'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`点击厂长成功,获得 ${data['data']['moneyNum']} 钞票`) - }else if(data['ret'] === 2005){ - // 点击上限 - $.click = false - }else{ - console.log(`点击厂长过快,休息25秒`) - await $.wait(25000); - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function helpFriends() { - for (let code of $.newShareCodes) { - if (code) { - if ($.shareId === code) { - console.log(`不能为自己助力,跳过`); - continue; - } - await assistFriend(code); - } - } -} -// 帮助用户 -function assistFriend(shareId) { - return new Promise(async resolve => { - $.get(taskurl('AssistFriend',`shareId=${escape(shareId)}`), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`助力朋友:${shareId}成功`) - } else { - console.log(`助力朋友[${shareId}]失败:${data.msg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 任务领奖 -function completeTask(taskId, taskName) { - return new Promise(async resolve => { - $.get(newtasksysUrl('Award', taskId), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - switch (data['data']['awardStatus']) { - case 1: - $.ele += Number(data['data']['prizeInfo'].replace('\\n', '')) - console.log(`领取${taskName}任务奖励成功,收获:${Number(data['data']['prizeInfo'].replace('\\n', ''))}钞票`); - break - case 1013: - case 0: - console.log(`领取${taskName}任务奖励失败,任务已领奖`); - break - default: - console.log(`领取${taskName}任务奖励失败,${data['msg']}`) - break - } - // if (data['ret'] === 0) { - // console.log("做任务完成!") - // } else { - // console.log(`异常:${JSON.stringify(data)}`) - // } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 完成任务 -function doTask(taskId) { - return new Promise(async resolve => { - $.get(newtasksysUrl('DoTask', taskId), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log("做任务完成!") - } else { - console.log(`异常:${JSON.stringify(data)}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 初始化个人信息 -function userInfo() { - return new Promise(async resolve => { - $.get(taskurl('GetUserInfo', ), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - data = data['data']; - $.shareId = data['shareId']; - console.log(`分享码: ${data['shareId']}`); - $.currentMoneyNum = data.currentMoneyNum; - } else { - console.log(`异常:${JSON.stringify(data)}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function showMsg() { - return new Promise(async resolve => { - let ctrTemp; - if ($.isNode() && process.env.JXSTORY_NOTIFY_CONTROL) { - ctrTemp = `${process.env.JXSTORY_NOTIFY_CONTROL}` === 'false'; - } else if ($.getdata('jdJxStory')) { - ctrTemp = $.getdata('jdJxStory') === 'false'; - } else { - ctrTemp = `${jdNotify}` === 'false'; - } - if (ctrTemp) { - $.msg($.name, '', message); - if ($.isNode()) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${message}`); - } - } else { - $.log(`\n${message}\n`); - } - resolve() - }) -} -function readShareCode() { - console.log(`开始`) - return new Promise(async resolve => { - $.get({url: `http://api.turinglabs.net/api/v1/jd/jxstory/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(2000); - // resolve() - }) -} -//格式化助力码 -function shareCodesFormat() { - return new Promise(async resolve => { - // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) - $.newShareCodes = []; - if ($.shareCodesArr[$.index - 1]) { - $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); - } else { - console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) - const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); - $.newShareCodes = inviteCodes[tempIndex].split('@'); - } - // const readShareCodeRes = await readShareCode(); - // if (readShareCodeRes && readShareCodeRes.code === 200) { - // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - // } - console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) - resolve(); - }) -} -function requireConfig() { - return new Promise(resolve => { - console.log(`开始获取${$.name}配置文件\n`); - //Node.js用户请在jdCookie.js处填写京东ck; - const shareCodes = $.isNode() ? require('./jdJxStoryShareCodes.js') : ''; - console.log(`共${cookiesArr.length}个京东账号\n`); - $.shareCodesArr = []; - if ($.isNode()) { - Object.keys(shareCodes).forEach((item) => { - if (shareCodes[item]) { - $.shareCodesArr.push(shareCodes[item]) - } - }) - } - // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); - console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); - resolve() - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} - -function taskurl(functionId, body = '') { - return { - url: `${JD_API_HOST}/jxstory/userinfo/${functionId}?bizcode=jxstory&${body}&_time=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1`, - headers: { - 'Cookie': cookie, - 'Host': 'm.jingxi.com', - 'Accept': '*/*', - 'Connection': 'keep-alive', - 'User-Agent': 'jdpingou;iPhone;3.15.2;14.2;ae75259f6ca8378672006fc41079cd8c90c53be8;network/wifi;model/iPhone10,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/158;pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', - 'Accept-Language': 'zh-cn', - 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html?ptag=138963.4.3', - 'Accept-Encoding': 'gzip, deflate, br', - } - } -} -function newtasksysUrl(functionId, taskId) { - let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=jxstory&bizCode=jxstory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`; - if (taskId) { - url += `&taskId=${taskId}`; - } - return { - url, - "headers": { - 'Cookie': cookie, - 'Host': 'm.jingxi.com', - 'Accept': '*/*', - 'Connection': 'keep-alive', - 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", - 'Accept-Language': 'zh-cn', - 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html', - 'Accept-Encoding': 'gzip, deflate, br', - } - } -} -Date.prototype.Format = function (fmt) { //author: meizz - var o = { - "M+": this.getMonth() + 1, //月份 - "d+": this.getDate(), //日 - "h+": this.getHours(), //小时 - "m+": this.getMinutes(), //分 - "s+": this.getSeconds(), //秒 - "q+": Math.floor((this.getMonth() + 3) / 3), //季度 - "S": this.getMilliseconds() //毫秒 - }; - if (/(y+)/.test(fmt)) - fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(fmt)) - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - return fmt; -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}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)} diff --git a/jd_mohe.js b/jd_mohe.js deleted file mode 100644 index 600221c2..00000000 --- a/jd_mohe.js +++ /dev/null @@ -1,422 +0,0 @@ -/* -热8超级盲盒,可抽奖获得京豆,建议在凌晨0点时运行脚本,白天抽奖基本没有京东 -活动地址: https://blindbox.jd.com -活动时间到18号 -支持京东双账号 -更新时间:2020-08-17 -脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js -// quantumultx -[task_local] -#热8超级盲盒 -1 0,1-23/3 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js, tag=热8超级盲盒, enabled=true -// Loon -[Script] -cron "1 0,1-23/3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js,tag=热8超级盲盒 -// Surge -热8超级盲盒 = type=cron,cronexp=1 0,1-23/3 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js - */ -const $ = new Env('热8超级盲盒'); -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - -//直接用NobyDa的jd cookie -let cookie = jdCookieNode.CookieJD ? jdCookieNode.CookieJD : $.getdata('CookieJD'); -const cookie2 = jdCookieNode.CookieJD2 ? jdCookieNode.CookieJD2 : $.getdata('CookieJD2'); -let UserName = ''; -const JD_API_HOST = 'https://blindbox.jd.com'; -let shareId = ''; -!(async () => { - if (!cookie) { - $.msg('【京东账号一】热8超级盲盒', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - } else { - UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); - // await shareUrl(); - // await addShare(); - await getCoin();//领取每三小时自动生产的热力值 - await Promise.all([ - task0(), - task1(), - ]) - await taskList(); - await getAward();//抽奖 - if ($.time('yyyy-MM-dd') === '2020-08-19') { - $.msg($.name, '活动已结束', `请禁用或删除脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts\n`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - } else { - $.msg($.name, '', `【京东账号一】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); - } - } - await $.wait(1000); - if (cookie2) { - cookie = cookie2; - UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); - console.log(`\n开始【京东账号二】${UserName}\n`) - await getCoin();//领取每三小时自动生产的热力值 - await Promise.all([ - task0(), - task1(), - ]) - await taskList(); - await getAward();//抽奖 - $.msg($.name, '', `【京东账号二】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - - -async function task0() { - const confRes = await conf(); - if (confRes.code === 200) { - const { brandList, skuList } = confRes.data; - if (skuList && skuList.length > 0) { - for (let item of skuList) { - if (item.state === 0) { - let homeGoBrowseRes = await homeGoBrowse(0, item.id); - console.log('商品', homeGoBrowseRes); - await $.wait(1000); - const taskHomeCoin0Res = await taskHomeCoin(0, item.id); - console.log('商品领取金币', taskHomeCoin0Res); - // if (homeGoBrowseRes.code === 200) { - // await $.wait(1000); - // await taskHomeCoin(0, item.id); - // } - } else { - console.log('精选好物任务已完成') - } - } - } - } -} -async function task1() { - const confRes = await conf(); - if (confRes.code === 200) { - const { brandList, skuList } = confRes.data; - if (brandList && brandList.length > 0) { - for (let item of brandList) { - if (item.state === 0) { - let homeGoBrowseRes = await homeGoBrowse(1, item.id); - // console.log('店铺', homeGoBrowseRes); - await $.wait(1000); - const taskHomeCoin1Res = await taskHomeCoin(1, item.id); - console.log('店铺领取金币', taskHomeCoin1Res); - // if (homeGoBrowseRes.code === 200) { - // await $.wait(1000); - // await taskHomeCoin(1, item.id); - // } - } else { - console.log('精选店铺-任务已完成') - } - } - } - } -} -function addShare(id) { - console.log(`shareId${shareId}`); - return new Promise((resolve) => { - const url = `addShare?shareId=${shareId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('ddd----ddd', data) - data = JSON.parse(data); - // console.log('ddd----ddd', data) - - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function conf() { - return new Promise((resolve) => { - const url = `conf`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('ddd----ddd', data) - data = JSON.parse(data); - // console.log('ddd----ddd', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function homeGoBrowse(type, id) { - return new Promise((resolve) => { - const url = `homeGoBrowse?type=${type}&id=${id}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function taskHomeCoin(type, id) { - return new Promise((resolve) => { - const url = `taskHomeCoin?type=${type}&id=${id}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getCoin() { - return new Promise((resolve) => { - const url = `getCoin?t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - if (data.code === 1001) { - console.log(data.msg); - $.msg($.name, '领取失败', `${data.msg}`); - $.done(); - } else { - console.log(`成功领取${data.data}热力值`) - resolve(data); - } - } catch (e) { - $.logErr(e, resp); - } - }) - }) -} -function taskList() { - return new Promise((resolve) => { - const url = `taskList?t=${Date.now()}`; - $.get(taskurl(url), async (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - console.log(`请继续等待,正在做任务,不要退出哦`) - // console.log(`成功领取${data.data}热力值`) - if (data.code === 200) { - const { task4, task6, task2, task1 } = data.data; - if (task4.finishNum < task4.totalNum) { - await browseProduct(task4.skuId); - await taskCoin(task4.type); - } - //浏览会场 - if (task1.finishNum < task1.totalNum) { - await strollActive((task1.finishNum + 1)); - await taskCoin(task1.type); - } - if (task2.finishNum < task2.totalNum) { - await strollShop(task2.shopId); - await taskCoin(task2.type); - } - if (task6.finishNum < task6.totalNum) { - await strollMember(task6.venderId); - await taskCoin(task6.type); - } - if (task4.state === 2 && task1.state === 2 && task2.state === 2 && task6.state === 2) { - console.log('taskList的任务全部做完了---') - } else { - await taskList(); - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//浏览商品(16个) -function browseProduct(skuId) { - return new Promise((resolve) => { - const url = `browseProduct?0=${skuId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -// 浏览会场(10个) -function strollActive(index) { - return new Promise((resolve) => { - const url = `strollActive?0=${index}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//关注或浏览店铺(9个) -function strollShop(shopId) { - return new Promise((resolve) => { - const url = `strollShop?shopId=${shopId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -// 加入会员(7) -function strollMember(venderId) { - return new Promise((resolve) => { - const url = `strollMember?venderId=${venderId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function taskCoin(type) { - return new Promise((resolve) => { - const url = `taskCoin?type=${type}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -async function getAward() { - const coinRes = await coin(); - if (coinRes.code === 200) { - const { total, need } = coinRes.data; - if (total > need) { - const times = Math.floor(total / need); - for (let i = 0; i < times; i++) { - await $.wait(2000); - let lotteryRes = await lottery(); - if (lotteryRes.code === 200) { - console.log(`====抽奖结果====,${JSON.stringify(lotteryRes.data)}`); - console.log(lotteryRes.data.name); - console.log(lotteryRes.data.beanNum); - } else if (lotteryRes.code === 4001) { - console.log(`抽奖失败,${lotteryRes.msg}`); - break; - } - } - } else { - console.log(`目前热力值${total},不够抽奖`) - } - } -} -//获取有多少热力值 -function coin() { - return new Promise((resolve) => { - const url = `coin?t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//抽奖API -function lottery() { - return new Promise((resolve) => { - const options = { - 'url': `${JD_API_HOST}/prize/lottery?t=${Date.now()}`, - 'headers': { - "accept": "*/*", - "accept-encoding": "gzip, deflate, br", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/x-www-form-urlencoded", - "cookie": cookie, - "referer": "https://blindbox.jd.com/", - "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, (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function taskurl(url) { - return { - 'url': `${JD_API_HOST}/active/${url}`, - 'headers': { - "accept": "*/*", - "accept-encoding": "gzip, deflate, br", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/x-www-form-urlencoded", - "cookie": cookie, - "referer": "https://blindbox.jd.com/", - "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") - } - } -} -// prettier-ignore -function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} \ No newline at end of file diff --git a/jd_xtg.js b/jd_xtg.js deleted file mode 100644 index 7646aae7..00000000 --- a/jd_xtg.js +++ /dev/null @@ -1,420 +0,0 @@ -/* - * @Author: lxk0301 - * @Date: 2020-10-21 17:04:04 - * @Last Modified by: lxk0301 - * @Last Modified time: 2020-11-05 00:35:04 - */ -/** - 星推官脚本 https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js - 星推官活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html - 活动时间:2020年10月21日 00:00:00-2020年11月11日 23:59:59 - 京豆先到先得!!!!!!!!!!! - 出现任务做完没领取的情况,就再运行一次脚本 - 能做完所有的任务,包括自动抽奖,脚本会给内置的shareId助力 - 一共23个活动,耗时比较久,surge请加大timeout时间 - 支持京东双账号 - 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js - // quantumultx - [task_local] - #京东星推官 - 2 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js, tag=京东星推官, enabled=true - // Loon - [Script] - cron "2 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js,tag=京东星推官 - // Surge - 京东星推官 = type=cron,cronexp=2 0 * * *,wake-system=1,timeout=320,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js - */ -const $ = new Env('京东星推官'); -const activeEndTime = '2020/11/11 23:59:59+08:00';//活动结束时间 -const notify = $.isNode() ? require('./sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -const starID = [ - 'bolangwutiaoren', - 'oulebyangzi', - 'meiditongliya', - 'chuangweimaobuyi', - 'quechaozhuyilong', - 'haierchenxiao', - 'feilipulixian', - 'feilipurenjialun', - 'feilipuwangziyi', - 'changhongsongyi', - 'jiuyangdenglun', - 'aokesilingengxin', - 'haixinchengguo', - 'fangtai', - 'lgyangzishan', - 'laobansongweilong', - 'haiermaoxiaotong', - "skgwangyibo", - "kongtiaozhangjike", - "sanxingningjing", - "xiaojiadianxiongziqi", - "heidianliyitong", - "oulebzhangyixing", -]; -const shareID = [ - 'e646c144-28a7-4b1b-8145-5b0dbff107ec', - 'b3fcb734-cbdd-4436-9f92-b13b445fc253', - 'e2d63b19-19d6-4a20-b2af-74b828e703d0', - 'a7a3b9b7-2872-4244-a627-3b82c271dee7', - 'f7b521e7-5306-4908-ba8a-df2d221bdd9d', - 'd17ec374-70d4-49d5-8673-7093e61f904c', - '915b9567-dc88-4389-8be9-ecc25588353a', - '7abdc8f4-d8f4-497f-8daa-cdab01cf645c', - '50ecc8de-1ee5-4420-bbb8-1136d86d80db', - 'fd0770e1-5007-45c1-8d69-402e02ff9a52', - 'cb9e9a59-a86b-4a0d-a308-4503fe5baaa4', - '93b3afeb-a18c-437c-b5ca-fbd9f389671d', - '8778793c-e9ad-4339-a709-723ae3ebde8e', - '921c376e-8cc5-4236-8242-ff8bb1b88a95', - '8b3ce203-4b10-4c36-a87d-da8c82efe362', - 'c8e1feb3-6ab1-4410-8444-1de8bd22e041', - "dd6b5270-3e5e-436d-be0f-295a8604cf47", - "7aef5700-4fa0-43b8-98fa-3a09f46ea47c", - "be0ec81c-bf26-4b7b-9527-d02b0286e5af", - "ecd890e0-db46-46c7-862e-cb9776c207dc", - "91ceb3eb-df84-471e-ad77-320cd95763ee", -]; -const JD_API_HOST = 'https://urvsaggpt.m.jd.com/guardianstar'; -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.beanCount = 0; - $.jdNum = 0; - $.isLogin = true; - $.nickName = ''; - const beforeTotal = 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。 - } - continue - } - console.log(`一共${starID.length}个${$.name}任务,耗时会很久,请提前知晓`) - $.beanCount = beforeTotal && beforeTotal['base'].jdNum; - for (let index = 0; index < starID.length; index ++) { - $.activeId = starID[index]; - $.j = index; - await JD_XTG(); - } - console.log(`\n等待8秒后,再去领取奖励\n`) - console.log(`做任务之前京豆总计:${$.beanCount}`) - await $.wait(8000); - for (let index = 0; index < starID.length; index ++) { - $.activeId = starID[index]; - $.j = index; - await JD_XTG(); - await doSupport(shareID[index]); - } - const afterTotal = await TotalBean(); - $.jdNum = afterTotal['base'].jdNum; - await showMsg(); - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function showMsg() { - console.log(`\n做任务之前京豆总计:${$.beanCount}`) - console.log(`做完任务后京豆总计:${$.jdNum}`); - console.log(`活动活动京豆数量:${$.jdNum - $.beanCount}`); - let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; - if (nowTime > new Date(activeEndTime).getTime()) { - $.msg($.name, '活动已结束', `请删除或禁用此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`) - } else { - $.msg($.name, `账号${$.index} ${$.nickName || $.UserName}`, `做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n活动地址点击弹窗跳转后即可查看\n注:如未获得京豆就是已被分完`, {"open-url": "https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html"}) - if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `账号${$.index} ${$.nickName || $.UserName}\n做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n注:如未获得京豆就是已被分完\n活动结束时间:2020年11月12日 23:59:59\n活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html`) - } -} -async function JD_XTG() { - await getHomePage(); - if ($.homeData && $.homeData.code === 200) { - const { shopList, venueList, productList, orderSkuList, shareId } = $.homeData.data[0]; - console.log(`\n===========活动${$.j + 1}-[${starID[$.j]}] 助力码==========\n${shareId}\n`); - for (let item of shopList) { - console.log(`\n任务一:关注${item['shopName']}`) - if (item['shopStatus'] === 4) { - console.log(`入会任务,假入会`); - await doTask('shop', item['shopId'], 0) - continue - } - if (item['shopStatus'] === 3) { - console.log(`此任务已做完,跳过`); - continue - } - console.log(`shopStatus:::${item['shopStatus']}`) - if (item['shopStatus'] !== 3 && item['shopStatus'] !== 4) { - await doTask('shop', item['shopId'], item['shopStatus']) - } - // if (item['shopStatus'] === 2) { - // await doTask('shop', item['shopId'], 2) - // } - // if (item['shopStatus'] === 4) { - // await doTask('shop', item['shopId'], 4) - // } - } - for (let item1 of venueList) { - console.log(`\n任务二:逛逛[${item1['venueName']}]-${item1['venueStatus'] !== 3 ? '' : '已做完'}`) - if (item1['venueStatus'] === 1) { - await doTask('venue', item1['venueId'], 1); - } - if (item1['venueStatus'] === 2) { - await doTask('venue', item1['venueId'], 2); - } - } - for (let item2 of productList) { - console.log(`\n任务三:逛逛[${item2['productName']}]-${item2['productStatus'] !== 3 ? '' : '已做完'}`) - if (item2['productStatus'] === 1) { - await doTask('product', item2['productId'], 1); - } - if (item2['productStatus'] === 2) { - await doTask('product', item2['productId'], 2); - } - } - //付定金 TODO - // for (let item3 of orderSkuList) { - // await doTask('order', item3['skuId'], 1); - // await doTask('order', item3['skuId'], 2); - // await doTask('order', item3['skuId'], 3); - // await doTask('order', item3['skuId'], 0); - // - // await doTask('order', item3['skuId'], 2); - // await doTask('order', item3['skuId'], 1); - // } - console.log(`\n开始抽奖\n`) - await getDayPrizeStatus(4, `${$.activeId}#1`, 3); - await getDayPrizeStatus(1, `${$.activeId}#2`, 3); - } else { - console.log(`京东服务器返回无数据!`) - } -} -function getHomePage() { - return new Promise(resolve => { - $.get(taskUrl('getHomePage'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - $.homeData = JSON.parse(data); - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function doTask(type, id, status) { - return new Promise(async resolve => { - $.post(taskPostUrl(type, id, status), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`做任务结果:${data}`); - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function doSupport(shareId) { - return new Promise(async resolve => { - const options = { - "url": `${JD_API_HOST}/doSupport`, - "body": `starId=${$.activeId}&shareId=${shareId}`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - // console.log(`\n助力结果:${data}`); - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function getDayPrizeStatus(prizeType, prizeId, status) { - return new Promise(async resolve => { - const options = { - "url": `${JD_API_HOST}/getDayPrizeStatus`, - "body": `starId=${$.activeId}&status=${status}&prizeType=${prizeType}&prizeId=${prizeId}`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`抽奖结果:${data}`); - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function taskPostUrl(type, id, status) { - return { - url: `${JD_API_HOST}/doTask`, - body: `starId=${$.activeId}&type=${type}&id=${id}&status=${status}`, - headers: { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -function taskUrl(function_id) { - return { - url: `${JD_API_HOST}/${function_id}?t=${Date.now()}&starId=${$.activeId}`, - headers: { - "Accept": "application/json,text/plain, */*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} From 67fb348547a29ecd1a0b0ad29a29f6ce9881e61c Mon Sep 17 00:00:00 2001 From: any Date: Sun, 13 Dec 2020 18:53:55 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E7=9A=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backUp/jd_818.js | 935 +++++++++++++++++++++++++++++++++++++++++++ backUp/jd_jxstory.js | 670 +++++++++++++++++++++++++++++++ backUp/jd_mohe.js | 422 +++++++++++++++++++ backUp/jd_xtg.js | 420 +++++++++++++++++++ 4 files changed, 2447 insertions(+) create mode 100644 backUp/jd_818.js create mode 100644 backUp/jd_jxstory.js create mode 100644 backUp/jd_mohe.js create mode 100644 backUp/jd_xtg.js diff --git a/backUp/jd_818.js b/backUp/jd_818.js new file mode 100644 index 00000000..c3495304 --- /dev/null +++ b/backUp/jd_818.js @@ -0,0 +1,935 @@ +/* + * @Author: lxk0301 https://github.com/lxk0301 + * @Date: 2020-11-03 09:25:47 + * @Last Modified by: lxk0301 + * @Last Modified time: 2020-11-23 12:27:07 + */ +/* +京东手机狂欢城活动,每日可获得30+以上京豆(其中20京豆是往期奖励,需第一天参加活动后,第二天才能拿到) +活动时间10.21日-11.12日结束,活动23天,保底最少可以拿到690京豆 +活动地址: https://rdcseason.m.jd.com/#/index + +其中有20京豆是往期奖励,需第一天参加活动后,第二天才能拿到!!!! + + +每天0/6/12/18点逛新品/店铺/会场可获得京豆,京豆先到先得 +往期奖励一般每天都能拿20京豆 + +注:脚本运行会给我提供的助力码助力,介意者可删掉脚本第48行helpCode里面的东西。留空即可(const helpCode = []); + +支持京东双账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +// quantumultx +[task_local] +#京东手机狂欢城 +1 0-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js, tag=京东手机狂欢城, enabled=true +// Loon +[Script] +cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js,tag=京东手机狂欢城 +// Surge +京东手机狂欢城 = type=cron,cronexp=1 0-18/6 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js + */ +const $ = new Env('京东手机狂欢城'); + +const notify = $.isNode() ? require('../sendNotify') : ''; +let jdNotify = false;//是否开启推送互助码 +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); +} + +const JD_API_HOST = 'https://rdcseason.m.jd.com/api/'; +const activeEndTime = '2020/11/11 23:59:59+08:00'; +const addUrl = 'http://jd.turinglabs.net/helpcode/create/'; +const printUrl = `http://jd.turinglabs.net/helpcode/print/20/`; +let helpCode = [] +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + $.temp = []; + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + 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。 + } + continue + } + await JD818(); + // await getHelp(); + // await doHelp(); + // await main(); + } + } + // console.log($.temp) +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + // await getHelp(); + await Promise.all([ + getHelp(), + listGoods(), + shopInfo(), + listMeeting(), + ]); + await $.wait(10000); + await Promise.all([ + listGoods(), + shopInfo(), + listMeeting(), + doHelp(), + myRank(), + ]); + await Promise.all([ + getListJbean(), + getListRank(), + getListIntegral(), + ]); + await showMsg() +} +async function JD818() { + await getHelp(); + await listGoods();//逛新品 + await shopInfo();//逛店铺 + await listMeeting();//逛会场 + await $.wait(10000); + //再次运行一次,避免出现遗漏的问题 + await listGoods();//逛新品 + await shopInfo();//逛店铺 + await listMeeting();//逛会场 + await doHelp(); + await myRank();//领取往期排名奖励 + await getListJbean(); + await getListRank(); + await getListIntegral(); + await showMsg() +} +function listMeeting() { + const options = { + 'url': `${JD_API_HOST}task/listMeeting?t=${Date.now()}`, + 'headers': { + 'Host': 'rdcseason.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Connection':' keep-alive', + '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"), + 'Accept-Language': 'zh-cn', + 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, + 'Accept-Encoding': 'gzip, deflate, br' + } + } + return new Promise((resolve) => { + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log('ddd----ddd', data.code) + if (data.code === 200 && data.data.meetingList) { + let integralNum = 0, jdNum = 0; + for (let item of data.data.meetingList) { + let res = await browseMeeting(item.id); + if (res.code === 200) { + let res2 = await getMeetingPrize(item.id); + integralNum += res2.data.integralNum * 1; + jdNum += res2.data.jdNum * 1; + } + // await browseMeeting('1596206323911'); + // await getMeetingPrize('1596206323911'); + } + console.log(`逛会场--获得积分:${integralNum}`) + console.log(`逛会场--获得京豆:${jdNum}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function listGoods() { + const options = { + 'url': `${JD_API_HOST}task/listGoods?t=${Date.now()}`, + 'headers': { + 'Host': 'rdcseason.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Connection':' keep-alive', + '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"), + 'Accept-Language': 'zh-cn', + 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, + 'Accept-Encoding': 'gzip, deflate, br' + } + } + return new Promise( (resolve) => { + $.get(options, async (err, resp, data) => { + try { + // console.log('data1', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200 && data.data.goodsList) { + let integralNum = 0, jdNum = 0; + for (let item of data.data.goodsList) { + let res = await browseGoods(item.id); + if (res.code === 200) { + let res2 = await getGoodsPrize(item.id); + // console.log('逛新品领取奖励res2', res2); + integralNum += res2.data.integralNum * 1; + jdNum += res2.data.jdNum * 1; + } + } + console.log(`逛新品获得积分:${integralNum}`) + console.log(`逛新品获得京豆:${jdNum}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); +} +function shopInfo() { + const options = { + 'url': `${JD_API_HOST}task/shopInfo?t=${Date.now()}`, + 'headers': { + 'Host': 'rdcseason.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Connection':' keep-alive', + '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"), + 'Accept-Language': 'zh-cn', + 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, + 'Accept-Encoding': 'gzip, deflate, br' + } + } + return new Promise( (resolve) => { + $.get(options, async (err, resp, data) => { + try { + // console.log('data1', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200 && data.data) { + let integralNum = 0, jdNum = 0; + for (let item of data.data) { + let res = await browseShop(item.shopId); + // console.log('res', res) + // res = JSON.parse(res); + // console.log('res', res.code) + if (res.code === 200) { + // console.log('---') + let res2 = await getShopPrize(item.shopId); + // console.log('res2', res2); + // res2 = JSON.parse(res2); + integralNum += res2.data.integralNum * 1; + jdNum += res2.data.jdNum * 1; + } + } + console.log(`逛店铺获得积分:${integralNum}`) + console.log(`逛店铺获得京豆:${jdNum}`) + } + } + // console.log('data1', data); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }) + +} +function browseGoods(id) { + const options = { + "url": `${JD_API_HOST}task/browseGoods?t=${Date.now()}&skuId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.get(options, (err, resp, data) => { + try { + // console.log('data1', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + // console.log('data1', data); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getGoodsPrize(id) { + const options = { + "url": `${JD_API_HOST}task/getGoodsPrize?t=${Date.now()}&skuId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.get(options, (err, resp, data) => { + try { + // console.log('data1', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function browseShop(id) { + const options2 = { + "url": `${JD_API_HOST}task/browseShop`, + "body": `shopId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.post(options2, (err, resp, data) => { + try { + // console.log('data1', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function getShopPrize(id) { + const options = { + "url": `${JD_API_HOST}task/getShopPrize`, + "body": `shopId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.post(options, (err, resp, data) => { + try { + // console.log('getShopPrize', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function browseMeeting(id) { + const options2 = { + "url": `${JD_API_HOST}task/browseMeeting`, + "body": `meetingId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.post(options2, (err, resp, data) => { + try { + // console.log('点击浏览会场', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function getMeetingPrize(id) { + const options = { + "url": `${JD_API_HOST}task/getMeetingPrize`, + "body": `meetingId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + return new Promise( (resolve) => { + $.post(options, (err, resp, data) => { + try { + // console.log('getMeetingPrize', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function myRank() { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/myRank?t=${Date.now()}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.jbeanNum = ''; + $.get(options, async (err, resp, data) => { + try { + // console.log('查询获奖列表data', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200 && data.data.myHis) { + for (let i = 0; i < data.data.myHis.length; i++) { + $.date = data.data.myHis[0].date; + if (data.data.myHis[i].status === '21') { + await $.wait(1000); + console.log('开始领奖') + let res = await saveJbean(data.data.myHis[i].id); + // console.log('领奖结果', res) + if (res.code === 200 && res.data.rsCode === 200) { + // $.jbeanNum += Number(res.data.jbeanNum); + console.log(`${data.data.myHis[i].date}日奖励领取成功${JSON.stringify(res.data.jbeanNum)}`) + } + } + if (i === 0 && data.data.myHis[i].status === '22') { + $.jbeanNum = data.data.myHis[i].prize; + } + } + // for (let item of data.data.myHis){ + // if (item.status === '21') { + // await $.wait(1000); + // console.log('开始领奖') + // let res = await saveJbean(item.id); + // // console.log('领奖结果', res) + // if (res.code === 200 && res.data.rsCode === 200) { + // $.jbeanNum += Number(res.data.jbeanNum); + // } + // } + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function saveJbean(id) { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/saveJbean`, + "body": `prizeId=${id}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, (err, resp, data) => { + try { + // console.log('领取京豆结果', data); + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function doHelp() { + console.log(`脚本自带助力码数量:${helpCode.length}`) + let body = '', nowTime = Date.now(), tempCode = []; + const zone = new Date().getTimezoneOffset(); + if (zone === 0) { + nowTime += 28800000;//UTC-0时区加上8个小时 + } + await updateShareCodes(); + if (!$.updatePkActivityIdRes) await updateShareCodesCDN(); + tempCode = $.updatePkActivityIdRes.shareCodes; + console.log(`是否大于当天九点🕘:${nowTime > new Date(nowTime).setHours(9, 0, 0, 0)}`) + //当天大于9:00才从API里面取收集的助力码 + if (nowTime > new Date(nowTime).setHours(9, 0, 0, 0)) body = await printAPI();//访问收集的互助码 + if (body) { + console.log(`printAPI返回助力码数量:${body.replace(/"/g, '').split(',').length}`) + tempCode = tempCode.concat(body.replace(/"/g, '').split(',')) + } + console.log(`累计助力码数量:${tempCode.length}`) + //去掉重复的 + tempCode = [...new Set(tempCode)]; + console.log(`去重后总助力码数量:${tempCode.length}`) + for (let item of tempCode) { + if (!item) continue; + const helpRes = await toHelp(item.trim()); + if (helpRes.data.status === 5) { + console.log(`助力机会已耗尽,跳出助力`); + break; + } + } +} +function printAPI() { + return new Promise(resolve => { + $.get({url: `${printUrl}`}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function toHelp(code) { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/toHelp`, + "body": `shareId=${code}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://rdcseason.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie, + "Connection": "keep-alive", + "Accept": "application/json, text/plain, */*", + "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"), + "Referer": "https://rdcseason.m.jd.com/", + "Content-Length": "44", + "Accept-Language": "zh-cn" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log(`助力结果:${data}`); + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getHelp() { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/getHelp?t=${Date.now()}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`\n您的助力码shareId(互助码每天都是变化的)\n\n"${data.data.shareId}",\n`); + console.log(`每日9:00以后复制下面的URL链接在浏览器里面打开一次就能自动上车\n\n${addUrl}${data.data.shareId}\n`); + let ctrTemp; + if ($.isNode() && process.env.JD_818_SHAREID_NOTIFY) { + console.log(`环境变量JD_818_SHAREID_NOTIFY::${process.env.JD_818_SHAREID_NOTIFY}`) + ctrTemp = `${process.env.JD_818_SHAREID_NOTIFY}` === 'true'; + } else { + ctrTemp = `${jdNotify}` === 'true'; + } + console.log(`是否发送上车推送链接:${ctrTemp ? '是': '否'}`) + // 只在早晨9点钟触发一次 + let NowHours = new Date().getHours(); + const zone = new Date().getTimezoneOffset(); + if (zone === 0) { + NowHours += 8;//UTC-0时区加上8个小时 + } + if(ctrTemp && NowHours === 9 && $.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}互助码自动上车`, `[9:00之后上车]您的互助码上车链接是 ↓↓↓ \n\n ${addUrl}${data.data.shareId} \n\n ↑↑↑`, { + url: `${addUrl}${data.data.shareId}` + }) + // await $.http.get({url: `http://jd.turinglabs.net/helpcode/add/${data.data.shareId}/`}).then((resp) => { + // console.log(resp); + // return + // if (resp.statusCode === 200) { + // const { body } = resp; + // } + // }); + $.temp.push(data.data.shareId); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//获取当前活动总京豆数量 +function getListJbean() { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/listJbean?pageNum=1`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200) { + $.jbeanCount = data.data.jbeanCount; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getListIntegral() { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/listIntegral?pageNum=1`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200) { + $.integralCount = data.data.integralCount; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//查询今日累计积分与排名 +function getListRank() { + return new Promise(resolve => { + const options = { + "url": `${JD_API_HOST}task/listRank?t=${Date.now()}`, + "headers": { + "Host": "rdcseason.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Connection": "keep-alive", + "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"), + "Accept-Language": "zh-cn", + "Referer": "https://rdcseason.m.jd.com", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 200) { + if (data.data.my) { + $.integer = data.data.my.integer; + $.num = data.data.my.num; + } + if (data.data.last) { + $.lasNum = data.data.last.num; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function updateShareCodes(url = 'https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json') { + return new Promise(resolve => { + //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json + //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json + $.get({url}, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + } else { + $.updatePkActivityIdRes = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function updateShareCodesCDN(url = 'https://raw.fastgit.org/lxk0301/updateTeam/master/jd_shareCodes.json') { + return new Promise(resolve => { + //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json + //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json + $.get({url}, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.updatePkActivityIdRes = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + $.nickName = data['base'].nickname; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function showMsg() { + let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; + if (nowTime > new Date(activeEndTime).getTime()) { + $.msg($.name, '活动已结束', `该活动累计获得京豆:${$.jbeanCount}个\niOS用户请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); + if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\n https://github.com/lxk0301/jd_scripts`) + } else { + $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${$.jbeanCount ? `${$.integer ? `今日获得积分:${$.integer}个\n` : ''}${$.num ? `今日排名:${$.num}\n` : ''}今日参数人数:${$.lasNum}人\n累计获得京豆:${$.jbeanCount}个🐶\n` : ''}${$.jbeanCount ? `累计获得积分:${$.integralCount}个\n` : ''}${$.jbeanNum ? `${$.date}日奖品:${$.jbeanNum}\n` : ''}具体详情点击弹窗跳转后即可查看`, {"open-url": "https://rdcseason.m.jd.com/#/hame"}); + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/backUp/jd_jxstory.js b/backUp/jd_jxstory.js new file mode 100644 index 00000000..842e0299 --- /dev/null +++ b/backUp/jd_jxstory.js @@ -0,0 +1,670 @@ +/* +京喜故事 +活动入口 :京喜APP->首页浮动窗口去领钱/京喜工厂-金牌厂长 +每天运行一次即可 + + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜故事 +10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, tag=京喜故事, enabled=true + +================Loon============== +[Script] +cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js,tag=京喜故事 + +===============Surge================= +京喜故事 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js + +============小火箭========= +京喜故事 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, cronexpr="10 * * * *", timeout=200, enable=true + + */ + + +const $ = new Env('京喜故事'); +const JD_API_HOST = 'https://m.jingxi.com'; + +const notify = $.isNode() ? require('../sendNotify') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const randomCount = 3; +let cookiesArr = [], cookie = '', message = ''; +const inviteCodes = ['qSDHMwUOz7onHcMyaju4KmdSXWf0dlv7LVnTt1Wzemo=@iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=', 'iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=']; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); +} +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ele = 0; + 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。 + } + continue + } + await shareCodesFormat(); + await jdJxStory() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdJxStory() { + await userInfo() + await helpFriends() + await sign() + await taskList() + for(let i =0;i { + $.get(taskurl('SignIn', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`签到钞票:收取成功,获得 ${data['data']['rewardMoneyToday']}`) + message += `【签到钞票】:收取成功,获得 ${data['data']['rewardMoneyToday']}\n` + } else { + console.log(`签到钞票:收取失败,${data.msg}`) + message += `【签到钞票】收取失败,${data.msg}\n` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 初始化任务 +function taskList() { + return new Promise(async resolve => { + $.get(newtasksysUrl('GetUserTaskStatusList'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let userTaskStatusList = data['data']['userTaskStatusList']; + for (let i = 0; i < userTaskStatusList.length; i++) { + const vo = userTaskStatusList[i]; + if (vo['awardStatus'] !== 1) { + if (vo.completedTimes >= vo.targetTimes) { + console.log(`任务:${vo.description}可完成`) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } else { + switch (vo.taskType) { + case 2: // 逛一逛任务 + case 6: // 浏览商品任务 + case 9: // 开宝箱 + for (let i = vo.completedTimes; i <= vo.configTargetTimes; ++i) { + console.log(`去做任务:${vo.taskName}`) + await doTask(vo.taskId) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } + break + case 4: // 招工 + break + case 5: // 京喜工厂投入电力 + console.log(`去做任务:${vo.taskName}`) + await doTask(vo.taskId) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + break + case 1: // 登陆领奖 + default: + break + } + } + } + } + console.log(`完成任务:共领取${$.ele}钞票`) + message += `【每日任务】领奖成功,共计 ${$.ele} 钞票\n`; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 钞票翻倍任务 +async function cardList() { + for (let i = 0; i < 10; ++i) { + await readyCard(); + } +} +function readyCard() { + return new Promise(async resolve => { + $.get(taskurl('ReadyCard'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + + if(data['ret']===0 && data['data']['flopFinishNumber']{ + return { + "cardId" : vo['cardId'], + "cardPosition" : index+1, + "cardStatus" :0 + } + }) + cardInfo[0]['cardStatus'] = 1 + + await selectCard(cardInfo) + // await $.wait(1000); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 选择卡片 +function selectCard(cardInfo) { + return new Promise(async resolve => { + $.get(taskurl('SelectCard',`cardInfo=${JSON.stringify({"cardInfo":cardInfo})}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret']===0){ + await $.wait(10000); + await finishCard(cardInfo[0]['cardId']) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 完成卡片 +function finishCard(cardId) { + return new Promise(async resolve => { + $.get(taskurl('FinishCard',`cardid=${cardId}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret']===0){ + let ratio = data['data']['cardInfo'].filter(vo=>vo['cardId']===cardId)[0]['cardRatio'] + console.log(`翻倍成功,获得${ratio}%,共计获得${data['data']['earnRatio']}%`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 升级 +function upgrade() { + return new Promise(async resolve => { + $.get(taskurl('UpgradeUserLevelDraw', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0&&data['data']['active']!=='') { + console.log(`升级成功,获得${JSON.stringify(data['data'])}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 点击 +function increase() { + return new Promise(async resolve => { + $.get(taskurl('IncreaseUserMoney'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`点击厂长成功,获得 ${data['data']['moneyNum']} 钞票`) + }else if(data['ret'] === 2005){ + // 点击上限 + $.click = false + }else{ + console.log(`点击厂长过快,休息25秒`) + await $.wait(25000); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function helpFriends() { + for (let code of $.newShareCodes) { + if (code) { + if ($.shareId === code) { + console.log(`不能为自己助力,跳过`); + continue; + } + await assistFriend(code); + } + } +} +// 帮助用户 +function assistFriend(shareId) { + return new Promise(async resolve => { + $.get(taskurl('AssistFriend',`shareId=${escape(shareId)}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`助力朋友:${shareId}成功`) + } else { + console.log(`助力朋友[${shareId}]失败:${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 任务领奖 +function completeTask(taskId, taskName) { + return new Promise(async resolve => { + $.get(newtasksysUrl('Award', taskId), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + switch (data['data']['awardStatus']) { + case 1: + $.ele += Number(data['data']['prizeInfo'].replace('\\n', '')) + console.log(`领取${taskName}任务奖励成功,收获:${Number(data['data']['prizeInfo'].replace('\\n', ''))}钞票`); + break + case 1013: + case 0: + console.log(`领取${taskName}任务奖励失败,任务已领奖`); + break + default: + console.log(`领取${taskName}任务奖励失败,${data['msg']}`) + break + } + // if (data['ret'] === 0) { + // console.log("做任务完成!") + // } else { + // console.log(`异常:${JSON.stringify(data)}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 完成任务 +function doTask(taskId) { + return new Promise(async resolve => { + $.get(newtasksysUrl('DoTask', taskId), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log("做任务完成!") + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化个人信息 +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('GetUserInfo', ), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.shareId = data['shareId']; + console.log(`分享码: ${data['shareId']}`); + $.currentMoneyNum = data.currentMoneyNum; + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function showMsg() { + return new Promise(async resolve => { + let ctrTemp; + if ($.isNode() && process.env.JXSTORY_NOTIFY_CONTROL) { + ctrTemp = `${process.env.JXSTORY_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdJxStory')) { + ctrTemp = $.getdata('jdJxStory') === 'false'; + } else { + ctrTemp = `${jdNotify}` === 'false'; + } + if (ctrTemp) { + $.msg($.name, '', message); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${message}`); + } + } else { + $.log(`\n${message}\n`); + } + resolve() + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `http://api.turinglabs.net/api/v1/jd/jxstory/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(2000); + // resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + const shareCodes = $.isNode() ? require('../jdJxStoryShareCodes.js') : ''; + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + $.nickName = data['base'].nickname; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function taskurl(functionId, body = '') { + return { + url: `${JD_API_HOST}/jxstory/userinfo/${functionId}?bizcode=jxstory&${body}&_time=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1`, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'jdpingou;iPhone;3.15.2;14.2;ae75259f6ca8378672006fc41079cd8c90c53be8;network/wifi;model/iPhone10,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/158;pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html?ptag=138963.4.3', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function newtasksysUrl(functionId, taskId) { + let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=jxstory&bizCode=jxstory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`; + if (taskId) { + url += `&taskId=${taskId}`; + } + return { + url, + "headers": { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +Date.prototype.Format = function (fmt) { //author: meizz + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "q+": Math.floor((this.getMonth() + 3) / 3), //季度 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) + fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}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)} diff --git a/backUp/jd_mohe.js b/backUp/jd_mohe.js new file mode 100644 index 00000000..c1711fd3 --- /dev/null +++ b/backUp/jd_mohe.js @@ -0,0 +1,422 @@ +/* +热8超级盲盒,可抽奖获得京豆,建议在凌晨0点时运行脚本,白天抽奖基本没有京东 +活动地址: https://blindbox.jd.com +活动时间到18号 +支持京东双账号 +更新时间:2020-08-17 +脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js +// quantumultx +[task_local] +#热8超级盲盒 +1 0,1-23/3 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js, tag=热8超级盲盒, enabled=true +// Loon +[Script] +cron "1 0,1-23/3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js,tag=热8超级盲盒 +// Surge +热8超级盲盒 = type=cron,cronexp=1 0,1-23/3 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js + */ +const $ = new Env('热8超级盲盒'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; + +//直接用NobyDa的jd cookie +let cookie = jdCookieNode.CookieJD ? jdCookieNode.CookieJD : $.getdata('CookieJD'); +const cookie2 = jdCookieNode.CookieJD2 ? jdCookieNode.CookieJD2 : $.getdata('CookieJD2'); +let UserName = ''; +const JD_API_HOST = 'https://blindbox.jd.com'; +let shareId = ''; +!(async () => { + if (!cookie) { + $.msg('【京东账号一】热8超级盲盒', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + } else { + UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + // await shareUrl(); + // await addShare(); + await getCoin();//领取每三小时自动生产的热力值 + await Promise.all([ + task0(), + task1(), + ]) + await taskList(); + await getAward();//抽奖 + if ($.time('yyyy-MM-dd') === '2020-08-19') { + $.msg($.name, '活动已结束', `请禁用或删除脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts\n`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); + } else { + $.msg($.name, '', `【京东账号一】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); + } + } + await $.wait(1000); + if (cookie2) { + cookie = cookie2; + UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + console.log(`\n开始【京东账号二】${UserName}\n`) + await getCoin();//领取每三小时自动生产的热力值 + await Promise.all([ + task0(), + task1(), + ]) + await taskList(); + await getAward();//抽奖 + $.msg($.name, '', `【京东账号二】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function task0() { + const confRes = await conf(); + if (confRes.code === 200) { + const { brandList, skuList } = confRes.data; + if (skuList && skuList.length > 0) { + for (let item of skuList) { + if (item.state === 0) { + let homeGoBrowseRes = await homeGoBrowse(0, item.id); + console.log('商品', homeGoBrowseRes); + await $.wait(1000); + const taskHomeCoin0Res = await taskHomeCoin(0, item.id); + console.log('商品领取金币', taskHomeCoin0Res); + // if (homeGoBrowseRes.code === 200) { + // await $.wait(1000); + // await taskHomeCoin(0, item.id); + // } + } else { + console.log('精选好物任务已完成') + } + } + } + } +} +async function task1() { + const confRes = await conf(); + if (confRes.code === 200) { + const { brandList, skuList } = confRes.data; + if (brandList && brandList.length > 0) { + for (let item of brandList) { + if (item.state === 0) { + let homeGoBrowseRes = await homeGoBrowse(1, item.id); + // console.log('店铺', homeGoBrowseRes); + await $.wait(1000); + const taskHomeCoin1Res = await taskHomeCoin(1, item.id); + console.log('店铺领取金币', taskHomeCoin1Res); + // if (homeGoBrowseRes.code === 200) { + // await $.wait(1000); + // await taskHomeCoin(1, item.id); + // } + } else { + console.log('精选店铺-任务已完成') + } + } + } + } +} +function addShare(id) { + console.log(`shareId${shareId}`); + return new Promise((resolve) => { + const url = `addShare?shareId=${shareId}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('ddd----ddd', data) + data = JSON.parse(data); + // console.log('ddd----ddd', data) + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function conf() { + return new Promise((resolve) => { + const url = `conf`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('ddd----ddd', data) + data = JSON.parse(data); + // console.log('ddd----ddd', data) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function homeGoBrowse(type, id) { + return new Promise((resolve) => { + const url = `homeGoBrowse?type=${type}&id=${id}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskHomeCoin(type, id) { + return new Promise((resolve) => { + const url = `taskHomeCoin?type=${type}&id=${id}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function getCoin() { + return new Promise((resolve) => { + const url = `getCoin?t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + if (data.code === 1001) { + console.log(data.msg); + $.msg($.name, '领取失败', `${data.msg}`); + $.done(); + } else { + console.log(`成功领取${data.data}热力值`) + resolve(data); + } + } catch (e) { + $.logErr(e, resp); + } + }) + }) +} +function taskList() { + return new Promise((resolve) => { + const url = `taskList?t=${Date.now()}`; + $.get(taskurl(url), async (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + console.log(`请继续等待,正在做任务,不要退出哦`) + // console.log(`成功领取${data.data}热力值`) + if (data.code === 200) { + const { task4, task6, task2, task1 } = data.data; + if (task4.finishNum < task4.totalNum) { + await browseProduct(task4.skuId); + await taskCoin(task4.type); + } + //浏览会场 + if (task1.finishNum < task1.totalNum) { + await strollActive((task1.finishNum + 1)); + await taskCoin(task1.type); + } + if (task2.finishNum < task2.totalNum) { + await strollShop(task2.shopId); + await taskCoin(task2.type); + } + if (task6.finishNum < task6.totalNum) { + await strollMember(task6.venderId); + await taskCoin(task6.type); + } + if (task4.state === 2 && task1.state === 2 && task2.state === 2 && task6.state === 2) { + console.log('taskList的任务全部做完了---') + } else { + await taskList(); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//浏览商品(16个) +function browseProduct(skuId) { + return new Promise((resolve) => { + const url = `browseProduct?0=${skuId}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +// 浏览会场(10个) +function strollActive(index) { + return new Promise((resolve) => { + const url = `strollActive?0=${index}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//关注或浏览店铺(9个) +function strollShop(shopId) { + return new Promise((resolve) => { + const url = `strollShop?shopId=${shopId}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +// 加入会员(7) +function strollMember(venderId) { + return new Promise((resolve) => { + const url = `strollMember?venderId=${venderId}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskCoin(type) { + return new Promise((resolve) => { + const url = `taskCoin?type=${type}&t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +async function getAward() { + const coinRes = await coin(); + if (coinRes.code === 200) { + const { total, need } = coinRes.data; + if (total > need) { + const times = Math.floor(total / need); + for (let i = 0; i < times; i++) { + await $.wait(2000); + let lotteryRes = await lottery(); + if (lotteryRes.code === 200) { + console.log(`====抽奖结果====,${JSON.stringify(lotteryRes.data)}`); + console.log(lotteryRes.data.name); + console.log(lotteryRes.data.beanNum); + } else if (lotteryRes.code === 4001) { + console.log(`抽奖失败,${lotteryRes.msg}`); + break; + } + } + } else { + console.log(`目前热力值${total},不够抽奖`) + } + } +} +//获取有多少热力值 +function coin() { + return new Promise((resolve) => { + const url = `coin?t=${Date.now()}`; + $.get(taskurl(url), (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//抽奖API +function lottery() { + return new Promise((resolve) => { + const options = { + 'url': `${JD_API_HOST}/prize/lottery?t=${Date.now()}`, + 'headers': { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "content-type": "application/x-www-form-urlencoded", + "cookie": cookie, + "referer": "https://blindbox.jd.com/", + "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, (err, resp, data) => { + try { + // console.log('homeGoBrowse', data) + data = JSON.parse(data); + // console.log('homeGoBrowse', data) + // console.log(`成功领取${data.data}热力值`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskurl(url) { + return { + 'url': `${JD_API_HOST}/active/${url}`, + 'headers': { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "content-type": "application/x-www-form-urlencoded", + "cookie": cookie, + "referer": "https://blindbox.jd.com/", + "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") + } + } +} +// prettier-ignore +function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} \ No newline at end of file diff --git a/backUp/jd_xtg.js b/backUp/jd_xtg.js new file mode 100644 index 00000000..a68fe6ba --- /dev/null +++ b/backUp/jd_xtg.js @@ -0,0 +1,420 @@ +/* + * @Author: lxk0301 + * @Date: 2020-10-21 17:04:04 + * @Last Modified by: lxk0301 + * @Last Modified time: 2020-11-05 00:35:04 + */ +/** + 星推官脚本 https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js + 星推官活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html + 活动时间:2020年10月21日 00:00:00-2020年11月11日 23:59:59 + 京豆先到先得!!!!!!!!!!! + 出现任务做完没领取的情况,就再运行一次脚本 + 能做完所有的任务,包括自动抽奖,脚本会给内置的shareId助力 + 一共23个活动,耗时比较久,surge请加大timeout时间 + 支持京东双账号 + 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + // quantumultx + [task_local] + #京东星推官 + 2 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js, tag=京东星推官, enabled=true + // Loon + [Script] + cron "2 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js,tag=京东星推官 + // Surge + 京东星推官 = type=cron,cronexp=2 0 * * *,wake-system=1,timeout=320,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js + */ +const $ = new Env('京东星推官'); +const activeEndTime = '2020/11/11 23:59:59+08:00';//活动结束时间 +const notify = $.isNode() ? require('../sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); +} +const starID = [ + 'bolangwutiaoren', + 'oulebyangzi', + 'meiditongliya', + 'chuangweimaobuyi', + 'quechaozhuyilong', + 'haierchenxiao', + 'feilipulixian', + 'feilipurenjialun', + 'feilipuwangziyi', + 'changhongsongyi', + 'jiuyangdenglun', + 'aokesilingengxin', + 'haixinchengguo', + 'fangtai', + 'lgyangzishan', + 'laobansongweilong', + 'haiermaoxiaotong', + "skgwangyibo", + "kongtiaozhangjike", + "sanxingningjing", + "xiaojiadianxiongziqi", + "heidianliyitong", + "oulebzhangyixing", +]; +const shareID = [ + 'e646c144-28a7-4b1b-8145-5b0dbff107ec', + 'b3fcb734-cbdd-4436-9f92-b13b445fc253', + 'e2d63b19-19d6-4a20-b2af-74b828e703d0', + 'a7a3b9b7-2872-4244-a627-3b82c271dee7', + 'f7b521e7-5306-4908-ba8a-df2d221bdd9d', + 'd17ec374-70d4-49d5-8673-7093e61f904c', + '915b9567-dc88-4389-8be9-ecc25588353a', + '7abdc8f4-d8f4-497f-8daa-cdab01cf645c', + '50ecc8de-1ee5-4420-bbb8-1136d86d80db', + 'fd0770e1-5007-45c1-8d69-402e02ff9a52', + 'cb9e9a59-a86b-4a0d-a308-4503fe5baaa4', + '93b3afeb-a18c-437c-b5ca-fbd9f389671d', + '8778793c-e9ad-4339-a709-723ae3ebde8e', + '921c376e-8cc5-4236-8242-ff8bb1b88a95', + '8b3ce203-4b10-4c36-a87d-da8c82efe362', + 'c8e1feb3-6ab1-4410-8444-1de8bd22e041', + "dd6b5270-3e5e-436d-be0f-295a8604cf47", + "7aef5700-4fa0-43b8-98fa-3a09f46ea47c", + "be0ec81c-bf26-4b7b-9527-d02b0286e5af", + "ecd890e0-db46-46c7-862e-cb9776c207dc", + "91ceb3eb-df84-471e-ad77-320cd95763ee", +]; +const JD_API_HOST = 'https://urvsaggpt.m.jd.com/guardianstar'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.jdNum = 0; + $.isLogin = true; + $.nickName = ''; + const beforeTotal = 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。 + } + continue + } + console.log(`一共${starID.length}个${$.name}任务,耗时会很久,请提前知晓`) + $.beanCount = beforeTotal && beforeTotal['base'].jdNum; + for (let index = 0; index < starID.length; index ++) { + $.activeId = starID[index]; + $.j = index; + await JD_XTG(); + } + console.log(`\n等待8秒后,再去领取奖励\n`) + console.log(`做任务之前京豆总计:${$.beanCount}`) + await $.wait(8000); + for (let index = 0; index < starID.length; index ++) { + $.activeId = starID[index]; + $.j = index; + await JD_XTG(); + await doSupport(shareID[index]); + } + const afterTotal = await TotalBean(); + $.jdNum = afterTotal['base'].jdNum; + await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function showMsg() { + console.log(`\n做任务之前京豆总计:${$.beanCount}`) + console.log(`做完任务后京豆总计:${$.jdNum}`); + console.log(`活动活动京豆数量:${$.jdNum - $.beanCount}`); + let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; + if (nowTime > new Date(activeEndTime).getTime()) { + $.msg($.name, '活动已结束', `请删除或禁用此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); + if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`) + } else { + $.msg($.name, `账号${$.index} ${$.nickName || $.UserName}`, `做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n活动地址点击弹窗跳转后即可查看\n注:如未获得京豆就是已被分完`, {"open-url": "https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html"}) + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `账号${$.index} ${$.nickName || $.UserName}\n做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n注:如未获得京豆就是已被分完\n活动结束时间:2020年11月12日 23:59:59\n活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html`) + } +} +async function JD_XTG() { + await getHomePage(); + if ($.homeData && $.homeData.code === 200) { + const { shopList, venueList, productList, orderSkuList, shareId } = $.homeData.data[0]; + console.log(`\n===========活动${$.j + 1}-[${starID[$.j]}] 助力码==========\n${shareId}\n`); + for (let item of shopList) { + console.log(`\n任务一:关注${item['shopName']}`) + if (item['shopStatus'] === 4) { + console.log(`入会任务,假入会`); + await doTask('shop', item['shopId'], 0) + continue + } + if (item['shopStatus'] === 3) { + console.log(`此任务已做完,跳过`); + continue + } + console.log(`shopStatus:::${item['shopStatus']}`) + if (item['shopStatus'] !== 3 && item['shopStatus'] !== 4) { + await doTask('shop', item['shopId'], item['shopStatus']) + } + // if (item['shopStatus'] === 2) { + // await doTask('shop', item['shopId'], 2) + // } + // if (item['shopStatus'] === 4) { + // await doTask('shop', item['shopId'], 4) + // } + } + for (let item1 of venueList) { + console.log(`\n任务二:逛逛[${item1['venueName']}]-${item1['venueStatus'] !== 3 ? '' : '已做完'}`) + if (item1['venueStatus'] === 1) { + await doTask('venue', item1['venueId'], 1); + } + if (item1['venueStatus'] === 2) { + await doTask('venue', item1['venueId'], 2); + } + } + for (let item2 of productList) { + console.log(`\n任务三:逛逛[${item2['productName']}]-${item2['productStatus'] !== 3 ? '' : '已做完'}`) + if (item2['productStatus'] === 1) { + await doTask('product', item2['productId'], 1); + } + if (item2['productStatus'] === 2) { + await doTask('product', item2['productId'], 2); + } + } + //付定金 TODO + // for (let item3 of orderSkuList) { + // await doTask('order', item3['skuId'], 1); + // await doTask('order', item3['skuId'], 2); + // await doTask('order', item3['skuId'], 3); + // await doTask('order', item3['skuId'], 0); + // + // await doTask('order', item3['skuId'], 2); + // await doTask('order', item3['skuId'], 1); + // } + console.log(`\n开始抽奖\n`) + await getDayPrizeStatus(4, `${$.activeId}#1`, 3); + await getDayPrizeStatus(1, `${$.activeId}#2`, 3); + } else { + console.log(`京东服务器返回无数据!`) + } +} +function getHomePage() { + return new Promise(resolve => { + $.get(taskUrl('getHomePage'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + $.homeData = JSON.parse(data); + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function doTask(type, id, status) { + return new Promise(async resolve => { + $.post(taskPostUrl(type, id, status), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log(`做任务结果:${data}`); + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doSupport(shareId) { + return new Promise(async resolve => { + const options = { + "url": `${JD_API_HOST}/doSupport`, + "body": `starId=${$.activeId}&shareId=${shareId}`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "urvsaggpt.m.jd.com", + "Referer": "https://urvsaggpt.m.jd.com/static/index.html", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(`\n助力结果:${data}`); + // data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + $.nickName = data['base'].nickname; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getDayPrizeStatus(prizeType, prizeId, status) { + return new Promise(async resolve => { + const options = { + "url": `${JD_API_HOST}/getDayPrizeStatus`, + "body": `starId=${$.activeId}&status=${status}&prizeType=${prizeType}&prizeId=${prizeId}`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "urvsaggpt.m.jd.com", + "Referer": "https://urvsaggpt.m.jd.com/static/index.html", + "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") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log(`抽奖结果:${data}`); + // data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskPostUrl(type, id, status) { + return { + url: `${JD_API_HOST}/doTask`, + body: `starId=${$.activeId}&type=${type}&id=${id}&status=${status}`, + headers: { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "urvsaggpt.m.jd.com", + "Referer": "https://urvsaggpt.m.jd.com/static/index.html", + "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") + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +function taskUrl(function_id) { + return { + url: `${JD_API_HOST}/${function_id}?t=${Date.now()}&starId=${$.activeId}`, + headers: { + "Accept": "application/json,text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "urvsaggpt.m.jd.com", + "Referer": "https://urvsaggpt.m.jd.com/static/index.html", + "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") + } + } +} +// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} From f0145411fd2c8536f4230bb5756f0be47358e295 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 09:26:49 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=B7=B2=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E7=9A=84=E7=9F=AD=E6=9C=9F=E6=B4=BB=E5=8A=A8=E8=87=B3?= =?UTF-8?q?activity=E6=96=87=E4=BB=B6=E5=A4=B9=E3=80=82=E5=88=A0=E9=99=A4t?= =?UTF-8?q?ask=E8=AE=A2=E9=98=85=E4=BB=A5=E5=8F=8Adocker=E9=87=8C=E9=9D=A2?= =?UTF-8?q?=E5=B7=B2=E8=BF=87=E6=9C=9F=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Loon/lxk0301_LoonTask.conf | 13 - QuantumultX/lxk0301_gallery.json | 70 +- activity/jd_818.js | 4 +- activity/jd_collectProduceScore.js | 2 +- activity/jd_digital_floor.js | 4 +- activity/jd_jxstory.js | 4 +- activity/jd_live_redrain.js | 4 +- {backUp => activity}/jd_live_redrain2.js | 0 activity/jd_mohe.js | 2 +- activity/jd_pubg.js | 4 +- activity/jd_split.js | 4 +- activity/jd_xtg.js | 4 +- backUp/jd_818.js | 935 ----------------------- backUp/jd_digital_floor.js | 427 ----------- backUp/jd_jxstory.js | 670 ---------------- backUp/jd_live_redrain.js | 244 ------ backUp/jd_mohe.js | 422 ---------- docker/crontab_list.sh | 2 - docker/crontab_list_ts.sh | 2 - jd_joy_steal.js | 8 +- 20 files changed, 55 insertions(+), 2770 deletions(-) rename {backUp => activity}/jd_live_redrain2.js (100%) delete mode 100644 backUp/jd_818.js delete mode 100644 backUp/jd_digital_floor.js delete mode 100644 backUp/jd_jxstory.js delete mode 100644 backUp/jd_live_redrain.js delete mode 100644 backUp/jd_mohe.js diff --git a/Loon/lxk0301_LoonTask.conf b/Loon/lxk0301_LoonTask.conf index 531150a6..b1374a1e 100644 --- a/Loon/lxk0301_LoonTask.conf +++ b/Loon/lxk0301_LoonTask.conf @@ -48,12 +48,6 @@ cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip #摇京豆 cron "5 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_club_lottery.js,tag=摇京豆 -# 京东手机狂欢城 -cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js, tag=京东手机狂欢城 - -# 京东星推官 -cron "0 0 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js, tag=京东星推官 - #京东全民开红包 cron "1 1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_redPacket.js, tag=京东全民开红包 @@ -75,10 +69,6 @@ cron "26 * * * *" script-path= https://raw.githubusercontent.com/lxk0301/jd_scri #东东工厂 cron "10 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js,tag=东东工厂 - -#京东全民营业领金币 -cron "20 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_collectProduceScore.js, tag=京东全民营业领金币 - #宠汪汪邀请助力与赛跑助力 cron "15 10 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_run.js, tag=宠汪汪邀请助力与赛跑助力 @@ -118,9 +108,6 @@ cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip # 京东秒杀红包雨 cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨 -# PUBG -cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pubg.js, tag=PUBG - # 京东直播 cron "10-20/5 12 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播 diff --git a/QuantumultX/lxk0301_gallery.json b/QuantumultX/lxk0301_gallery.json index e5c8feca..16a04b15 100644 --- a/QuantumultX/lxk0301_gallery.json +++ b/QuantumultX/lxk0301_gallery.json @@ -1,39 +1,35 @@ { - "name":"lxk0301 task gallery", - "description":"https://github.com/lxk0301/jd_scripts", - "task":[ - "5 6-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js , tag=东东农场 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png", - "20 7-19/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pet.js , tag=东东萌宠 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png", - "10 7-21/2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js , tag=京东种豆得豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png", - "15 */2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js , tag=宠汪汪 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", - "12 */1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js , tag=宠汪汪喂食 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", - "0 0,6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js , tag=宠汪汪偷好友积分与狗粮 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", - "1 0,8,12,16 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js , tag=宠汪汪积分兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", - "8 */3 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js , tag=京东天天加速 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdjs.png", - "15 */5 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_moneyTree.js , tag=京东摇钱树 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png", - "5 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_club_lottery.js , tag=摇京豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png", - "11 1-23/5 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_superMarket.js , tag=京小超 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", - "0 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_blueCoin.js , tag=京小超兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", - "55 23 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_unsubscribe.js , tag=取关京东店铺商品 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_shop.js , tag=进店领豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_shop.png", - "15 10 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_run.js , tag=宠汪汪邀请助力与赛跑助力 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", - "1 1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_redPacket.js , tag=京东全民开红包 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", - "2 9 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_change.js , tag=京豆变动通知 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "20 0,20 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js , tag=点点券 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png", - "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", - "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_split.js, tag=年终奖, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_car.png", - "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_kd.js, tag=京东快递签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_kd.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, tag=京东代属, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_ds.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js, tag=数码加购京豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", - "0 0,9,11,13,15,17,19,20,21,23 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js, tag=直播红包雨, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", - "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_apple_live.js, tag=苹果抽奖机, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", - "10 1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pubg.js, tag=PUBG, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", - "10-20/5 12 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_live_redrain.png", - "15 17 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/backUp/xmSports.js, tag=小米运动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/xmyd.png" - ] + "name": "lxk0301 task gallery", + "description": "https://github.com/lxk0301/jd_scripts", + "task": [ + "5 6-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js, tag=东东农场 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png", + "20 7-19/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pet.js, tag=东东萌宠 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png", + "10 7-21/2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js, tag=京东种豆得豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png", + "15 */2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js, tag=宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "12 */1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js, tag=宠汪汪喂食 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "0 0,6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js, tag=宠汪汪偷好友积分与狗粮 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "1 0,8,12,16 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js , tag=宠汪汪积分兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "8 */3 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js , tag=京东天天加速 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdjs.png", + "15 */5 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_moneyTree.js , tag=京东摇钱树 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png", + "5 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_club_lottery.js , tag=摇京豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png", + "11 1-23/5 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_superMarket.js , tag=京小超 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", + "0 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_blueCoin.js , tag=京小超兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", + "55 23 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_unsubscribe.js , tag=取关京东店铺商品 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", + "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_shop.js , tag=进店领豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_shop.png", + "15 10 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_run.js , tag=宠汪汪邀请助力与赛跑助力 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "1 1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_redPacket.js , tag=京东全民开红包 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", + "2 9 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_change.js , tag=京豆变动通知 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", + "20 0,20 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js , tag=点点券 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", + "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png", + "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png", + "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", + "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", + "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png", + "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_car.png", + "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_kd.js, tag=京东快递签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_kd.png", + "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, tag=京东代属, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_ds.png", + "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_apple_live.js, tag=苹果抽奖机, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", + "10-20/5 12 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_live_redrain.png", + "15 17 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/backUp/xmSports.js, tag=小米运动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/xmyd.png" + ] } diff --git a/activity/jd_818.js b/activity/jd_818.js index 3f7ff7ed..c3495304 100644 --- a/activity/jd_818.js +++ b/activity/jd_818.js @@ -31,10 +31,10 @@ cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_s */ const $ = new Env('京东手机狂欢城'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; let jdNotify = false;//是否开启推送互助码 //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; diff --git a/activity/jd_collectProduceScore.js b/activity/jd_collectProduceScore.js index b0304ca1..59577df5 100644 --- a/activity/jd_collectProduceScore.js +++ b/activity/jd_collectProduceScore.js @@ -7,7 +7,7 @@ */ const $ = new Env('京东全民营业领金币'); //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; diff --git a/activity/jd_digital_floor.js b/activity/jd_digital_floor.js index 6ca2a716..648c1e99 100644 --- a/activity/jd_digital_floor.js +++ b/activity/jd_digital_floor.js @@ -24,9 +24,9 @@ cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip */ const $ = new Env('数码加购京豆'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = $.isNode() ? 20 : 5; const inviteCodes = [`40cd108f-9eed-4897-b795-45a5b221cd6b@49efb480-d6d7-456b-a4e0-14b170b161e0@`,'9d4262a5-1a02-4ae7-8a86-8d070d531464@687b14e0-ce0a-45eb-bf46-71aa0da05f18']; diff --git a/activity/jd_jxstory.js b/activity/jd_jxstory.js index 2e923e1f..2f99b330 100644 --- a/activity/jd_jxstory.js +++ b/activity/jd_jxstory.js @@ -27,12 +27,12 @@ cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip const $ = new Env('京喜故事'); const JD_API_HOST = 'https://m.jingxi.com'; -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = 3; let cookiesArr = [], cookie = '', message = ''; const inviteCodes = ['qSDHMwUOz7onHcMyaju4KmdSXWf0dlv7LVnTt1Wzemo=@iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=', 'iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=']; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) diff --git a/activity/jd_live_redrain.js b/activity/jd_live_redrain.js index d7c901d8..be450278 100644 --- a/activity/jd_live_redrain.js +++ b/activity/jd_live_redrain.js @@ -22,9 +22,9 @@ cron "0 0,9,11,13,15,17,19,20,21,23 * * *" script-path=https://raw.githubusercon */ const $ = new Env('直播红包雨'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = $.isNode() ? 20 : 5; //IOS等用户直接用NobyDa的jd cookie diff --git a/backUp/jd_live_redrain2.js b/activity/jd_live_redrain2.js similarity index 100% rename from backUp/jd_live_redrain2.js rename to activity/jd_live_redrain2.js diff --git a/activity/jd_mohe.js b/activity/jd_mohe.js index 9849add8..454b18da 100644 --- a/activity/jd_mohe.js +++ b/activity/jd_mohe.js @@ -17,7 +17,7 @@ cron "1 0,1-23/3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd */ const $ = new Env('热8超级盲盒'); //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; //直接用NobyDa的jd cookie let cookie = jdCookieNode.CookieJD ? jdCookieNode.CookieJD : $.getdata('CookieJD'); diff --git a/activity/jd_pubg.js b/activity/jd_pubg.js index 241ca26a..e787e25c 100644 --- a/activity/jd_pubg.js +++ b/activity/jd_pubg.js @@ -118,9 +118,9 @@ const $ = new Env('PUBG'); $.md5 = A }(this); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = $.isNode() ? 20 : 5; //IOS等用户直接用NobyDa的jd cookie diff --git a/activity/jd_split.js b/activity/jd_split.js index aea6da5c..efaaf756 100644 --- a/activity/jd_split.js +++ b/activity/jd_split.js @@ -22,9 +22,9 @@ cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip */ const $ = new Env('金榜年终奖'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = $.isNode() ? 20 : 5; //IOS等用户直接用NobyDa的jd cookie diff --git a/activity/jd_xtg.js b/activity/jd_xtg.js index 7646aae7..a68fe6ba 100644 --- a/activity/jd_xtg.js +++ b/activity/jd_xtg.js @@ -26,9 +26,9 @@ */ const $ = new Env('京东星推官'); const activeEndTime = '2020/11/11 23:59:59+08:00';//活动结束时间 -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require('../sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; diff --git a/backUp/jd_818.js b/backUp/jd_818.js deleted file mode 100644 index c3495304..00000000 --- a/backUp/jd_818.js +++ /dev/null @@ -1,935 +0,0 @@ -/* - * @Author: lxk0301 https://github.com/lxk0301 - * @Date: 2020-11-03 09:25:47 - * @Last Modified by: lxk0301 - * @Last Modified time: 2020-11-23 12:27:07 - */ -/* -京东手机狂欢城活动,每日可获得30+以上京豆(其中20京豆是往期奖励,需第一天参加活动后,第二天才能拿到) -活动时间10.21日-11.12日结束,活动23天,保底最少可以拿到690京豆 -活动地址: https://rdcseason.m.jd.com/#/index - -其中有20京豆是往期奖励,需第一天参加活动后,第二天才能拿到!!!! - - -每天0/6/12/18点逛新品/店铺/会场可获得京豆,京豆先到先得 -往期奖励一般每天都能拿20京豆 - -注:脚本运行会给我提供的助力码助力,介意者可删掉脚本第48行helpCode里面的东西。留空即可(const helpCode = []); - -支持京东双账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -// quantumultx -[task_local] -#京东手机狂欢城 -1 0-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js, tag=京东手机狂欢城, enabled=true -// Loon -[Script] -cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js,tag=京东手机狂欢城 -// Surge -京东手机狂欢城 = type=cron,cronexp=1 0-18/6 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js - */ -const $ = new Env('京东手机狂欢城'); - -const notify = $.isNode() ? require('../sendNotify') : ''; -let jdNotify = false;//是否开启推送互助码 -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; - -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} - -const JD_API_HOST = 'https://rdcseason.m.jd.com/api/'; -const activeEndTime = '2020/11/11 23:59:59+08:00'; -const addUrl = 'http://jd.turinglabs.net/helpcode/create/'; -const printUrl = `http://jd.turinglabs.net/helpcode/print/20/`; -let helpCode = [] -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - $.temp = []; - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - 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。 - } - continue - } - await JD818(); - // await getHelp(); - // await doHelp(); - // await main(); - } - } - // console.log($.temp) -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function main() { - // await getHelp(); - await Promise.all([ - getHelp(), - listGoods(), - shopInfo(), - listMeeting(), - ]); - await $.wait(10000); - await Promise.all([ - listGoods(), - shopInfo(), - listMeeting(), - doHelp(), - myRank(), - ]); - await Promise.all([ - getListJbean(), - getListRank(), - getListIntegral(), - ]); - await showMsg() -} -async function JD818() { - await getHelp(); - await listGoods();//逛新品 - await shopInfo();//逛店铺 - await listMeeting();//逛会场 - await $.wait(10000); - //再次运行一次,避免出现遗漏的问题 - await listGoods();//逛新品 - await shopInfo();//逛店铺 - await listMeeting();//逛会场 - await doHelp(); - await myRank();//领取往期排名奖励 - await getListJbean(); - await getListRank(); - await getListIntegral(); - await showMsg() -} -function listMeeting() { - const options = { - 'url': `${JD_API_HOST}task/listMeeting?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise((resolve) => { - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - // console.log('ddd----ddd', data.code) - if (data.code === 200 && data.data.meetingList) { - let integralNum = 0, jdNum = 0; - for (let item of data.data.meetingList) { - let res = await browseMeeting(item.id); - if (res.code === 200) { - let res2 = await getMeetingPrize(item.id); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - // await browseMeeting('1596206323911'); - // await getMeetingPrize('1596206323911'); - } - console.log(`逛会场--获得积分:${integralNum}`) - console.log(`逛会场--获得京豆:${jdNum}`) - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function listGoods() { - const options = { - 'url': `${JD_API_HOST}task/listGoods?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise( (resolve) => { - $.get(options, async (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data.goodsList) { - let integralNum = 0, jdNum = 0; - for (let item of data.data.goodsList) { - let res = await browseGoods(item.id); - if (res.code === 200) { - let res2 = await getGoodsPrize(item.id); - // console.log('逛新品领取奖励res2', res2); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - } - console.log(`逛新品获得积分:${integralNum}`) - console.log(`逛新品获得京豆:${jdNum}`) - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }); -} -function shopInfo() { - const options = { - 'url': `${JD_API_HOST}task/shopInfo?t=${Date.now()}`, - 'headers': { - 'Host': 'rdcseason.m.jd.com', - 'Accept': 'application/json, text/plain, */*', - 'Connection':' keep-alive', - '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"), - 'Accept-Language': 'zh-cn', - 'Referer': `https://rdcseason.m.jd.com/?reloadWQPage=t_${Date.now()}`, - 'Accept-Encoding': 'gzip, deflate, br' - } - } - return new Promise( (resolve) => { - $.get(options, async (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data) { - let integralNum = 0, jdNum = 0; - for (let item of data.data) { - let res = await browseShop(item.shopId); - // console.log('res', res) - // res = JSON.parse(res); - // console.log('res', res.code) - if (res.code === 200) { - // console.log('---') - let res2 = await getShopPrize(item.shopId); - // console.log('res2', res2); - // res2 = JSON.parse(res2); - integralNum += res2.data.integralNum * 1; - jdNum += res2.data.jdNum * 1; - } - } - console.log(`逛店铺获得积分:${integralNum}`) - console.log(`逛店铺获得京豆:${jdNum}`) - } - } - // console.log('data1', data); - } catch (e) { - $.logErr(e, resp); - } finally { - resolve() - } - }) - }) - -} -function browseGoods(id) { - const options = { - "url": `${JD_API_HOST}task/browseGoods?t=${Date.now()}&skuId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.get(options, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - // console.log('data1', data); - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function getGoodsPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getGoodsPrize?t=${Date.now()}&skuId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.get(options, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function browseShop(id) { - const options2 = { - "url": `${JD_API_HOST}task/browseShop`, - "body": `shopId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options2, (err, resp, data) => { - try { - // console.log('data1', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getShopPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getShopPrize`, - "body": `shopId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options, (err, resp, data) => { - try { - // console.log('getShopPrize', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function browseMeeting(id) { - const options2 = { - "url": `${JD_API_HOST}task/browseMeeting`, - "body": `meetingId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options2, (err, resp, data) => { - try { - // console.log('点击浏览会场', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getMeetingPrize(id) { - const options = { - "url": `${JD_API_HOST}task/getMeetingPrize`, - "body": `meetingId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - return new Promise( (resolve) => { - $.post(options, (err, resp, data) => { - try { - // console.log('getMeetingPrize', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function myRank() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/myRank?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.jbeanNum = ''; - $.get(options, async (err, resp, data) => { - try { - // console.log('查询获奖列表data', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200 && data.data.myHis) { - for (let i = 0; i < data.data.myHis.length; i++) { - $.date = data.data.myHis[0].date; - if (data.data.myHis[i].status === '21') { - await $.wait(1000); - console.log('开始领奖') - let res = await saveJbean(data.data.myHis[i].id); - // console.log('领奖结果', res) - if (res.code === 200 && res.data.rsCode === 200) { - // $.jbeanNum += Number(res.data.jbeanNum); - console.log(`${data.data.myHis[i].date}日奖励领取成功${JSON.stringify(res.data.jbeanNum)}`) - } - } - if (i === 0 && data.data.myHis[i].status === '22') { - $.jbeanNum = data.data.myHis[i].prize; - } - } - // for (let item of data.data.myHis){ - // if (item.status === '21') { - // await $.wait(1000); - // console.log('开始领奖') - // let res = await saveJbean(item.id); - // // console.log('领奖结果', res) - // if (res.code === 200 && res.data.rsCode === 200) { - // $.jbeanNum += Number(res.data.jbeanNum); - // } - // } - // } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function saveJbean(id) { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/saveJbean`, - "body": `prizeId=${id}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com/", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.post(options, (err, resp, data) => { - try { - // console.log('领取京豆结果', data); - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -async function doHelp() { - console.log(`脚本自带助力码数量:${helpCode.length}`) - let body = '', nowTime = Date.now(), tempCode = []; - const zone = new Date().getTimezoneOffset(); - if (zone === 0) { - nowTime += 28800000;//UTC-0时区加上8个小时 - } - await updateShareCodes(); - if (!$.updatePkActivityIdRes) await updateShareCodesCDN(); - tempCode = $.updatePkActivityIdRes.shareCodes; - console.log(`是否大于当天九点🕘:${nowTime > new Date(nowTime).setHours(9, 0, 0, 0)}`) - //当天大于9:00才从API里面取收集的助力码 - if (nowTime > new Date(nowTime).setHours(9, 0, 0, 0)) body = await printAPI();//访问收集的互助码 - if (body) { - console.log(`printAPI返回助力码数量:${body.replace(/"/g, '').split(',').length}`) - tempCode = tempCode.concat(body.replace(/"/g, '').split(',')) - } - console.log(`累计助力码数量:${tempCode.length}`) - //去掉重复的 - tempCode = [...new Set(tempCode)]; - console.log(`去重后总助力码数量:${tempCode.length}`) - for (let item of tempCode) { - if (!item) continue; - const helpRes = await toHelp(item.trim()); - if (helpRes.data.status === 5) { - console.log(`助力机会已耗尽,跳出助力`); - break; - } - } -} -function printAPI() { - return new Promise(resolve => { - $.get({url: `${printUrl}`}, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function toHelp(code) { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/toHelp`, - "body": `shareId=${code}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Content-Type": "application/x-www-form-urlencoded", - "Origin": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br", - "Cookie": cookie, - "Connection": "keep-alive", - "Accept": "application/json, text/plain, */*", - "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"), - "Referer": "https://rdcseason.m.jd.com/", - "Content-Length": "44", - "Accept-Language": "zh-cn" - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`助力结果:${data}`); - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function getHelp() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/getHelp?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - console.log(`\n您的助力码shareId(互助码每天都是变化的)\n\n"${data.data.shareId}",\n`); - console.log(`每日9:00以后复制下面的URL链接在浏览器里面打开一次就能自动上车\n\n${addUrl}${data.data.shareId}\n`); - let ctrTemp; - if ($.isNode() && process.env.JD_818_SHAREID_NOTIFY) { - console.log(`环境变量JD_818_SHAREID_NOTIFY::${process.env.JD_818_SHAREID_NOTIFY}`) - ctrTemp = `${process.env.JD_818_SHAREID_NOTIFY}` === 'true'; - } else { - ctrTemp = `${jdNotify}` === 'true'; - } - console.log(`是否发送上车推送链接:${ctrTemp ? '是': '否'}`) - // 只在早晨9点钟触发一次 - let NowHours = new Date().getHours(); - const zone = new Date().getTimezoneOffset(); - if (zone === 0) { - NowHours += 8;//UTC-0时区加上8个小时 - } - if(ctrTemp && NowHours === 9 && $.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}互助码自动上车`, `[9:00之后上车]您的互助码上车链接是 ↓↓↓ \n\n ${addUrl}${data.data.shareId} \n\n ↑↑↑`, { - url: `${addUrl}${data.data.shareId}` - }) - // await $.http.get({url: `http://jd.turinglabs.net/helpcode/add/${data.data.shareId}/`}).then((resp) => { - // console.log(resp); - // return - // if (resp.statusCode === 200) { - // const { body } = resp; - // } - // }); - $.temp.push(data.data.shareId); - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -//获取当前活动总京豆数量 -function getListJbean() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listJbean?pageNum=1`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - $.jbeanCount = data.data.jbeanCount; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -function getListIntegral() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listIntegral?pageNum=1`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - $.integralCount = data.data.integralCount; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -//查询今日累计积分与排名 -function getListRank() { - return new Promise(resolve => { - const options = { - "url": `${JD_API_HOST}task/listRank?t=${Date.now()}`, - "headers": { - "Host": "rdcseason.m.jd.com", - "Accept": "application/json, text/plain, */*", - "Connection": "keep-alive", - "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"), - "Accept-Language": "zh-cn", - "Referer": "https://rdcseason.m.jd.com", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - if (data.code === 200) { - if (data.data.my) { - $.integer = data.data.my.integer; - $.num = data.data.my.num; - } - if (data.data.last) { - $.lasNum = data.data.last.num; - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function updateShareCodes(url = 'https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json') { - return new Promise(resolve => { - //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json - //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json - $.get({url}, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - } else { - $.updatePkActivityIdRes = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function updateShareCodesCDN(url = 'https://raw.fastgit.org/lxk0301/updateTeam/master/jd_shareCodes.json') { - return new Promise(resolve => { - //https://cdn.jsdelivr.net/gh/lxk0301/updateTeam@master/jd_shareCodes.json - //https://raw.githubusercontent.com/lxk0301/updateTeam/master/jd_shareCodes.json - $.get({url}, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - $.updatePkActivityIdRes = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function showMsg() { - let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; - if (nowTime > new Date(activeEndTime).getTime()) { - $.msg($.name, '活动已结束', `该活动累计获得京豆:${$.jbeanCount}个\niOS用户请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\ngithub action用户请删除.github/workflows/jd_818.yml文件\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\n https://github.com/lxk0301/jd_scripts`) - } else { - $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${$.jbeanCount ? `${$.integer ? `今日获得积分:${$.integer}个\n` : ''}${$.num ? `今日排名:${$.num}\n` : ''}今日参数人数:${$.lasNum}人\n累计获得京豆:${$.jbeanCount}个🐶\n` : ''}${$.jbeanCount ? `累计获得积分:${$.integralCount}个\n` : ''}${$.jbeanNum ? `${$.date}日奖品:${$.jbeanNum}\n` : ''}具体详情点击弹窗跳转后即可查看`, {"open-url": "https://rdcseason.m.jd.com/#/hame"}); - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/backUp/jd_digital_floor.js b/backUp/jd_digital_floor.js deleted file mode 100644 index 648c1e99..00000000 --- a/backUp/jd_digital_floor.js +++ /dev/null @@ -1,427 +0,0 @@ -/* -数码加购京豆 -脚本会给内置的码进行助力 -共计25京豆,一天运行一次即可 -活动时间:2020-12-4 到 2020-12-11 -活动入口:https://prodev.m.jd.com/mall/active/nKxVyPnuLwAsQSTfidZ9z4RKVZy/index.html#/ -更新地址:https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js -已支持IOS双京东账号, Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js -============Quantumultx=============== -[task_local] -#数码加购京豆 -10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js, tag=数码加购京豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true - -================Loon============== -[Script] -cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js, tag=数码加购京豆 - -===============Surge================= -数码加购京豆 = type=cron,cronexp="10 7 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js - -============小火箭========= -数码加购京豆 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_digital_floor.js, cronexpr="10 7 * * *", timeout=200, enable=true - */ -const $ = new Env('数码加购京豆'); - -const notify = $.isNode() ? require('../sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = $.isNode() ? 20 : 5; -const inviteCodes = [`40cd108f-9eed-4897-b795-45a5b221cd6b@49efb480-d6d7-456b-a4e0-14b170b161e0@`,'9d4262a5-1a02-4ae7-8a86-8d070d531464@687b14e0-ce0a-45eb-bf46-71aa0da05f18']; -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -const JD_API_HOST = 'https://digital-floor.m.jd.com/adf/index/'; -!(async () => { - await requireConfig() - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - 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。 - } - continue - } - await shareCodesFormat() - await jdDigitalFloor() - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function jdDigitalFloor() { - $.bean = 0 - await helpFriends() - await getUserInfo() - await getTaskList() - await showMsg() -} -async function helpFriends() { - for (let code of $.newShareCodes) { - if (!code) continue - let res = await doSupport(code); - await $.wait(500) - if (res===5) { - // 助力次数已用完 - break - } - } -} -function doSupport(shareId) { - return new Promise(resolve => { - $.post(taskPostUrl('doSupport',`shareId=${shareId}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - console.log(`助力好友${shareId}成功`) - await supportCheck(shareId) - }else{ - console.log(`助力好友失败,${data.msg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data.data); - } - }) - }) -} -function supportCheck(shareId) { - return new Promise(resolve => { - $.post(taskPostUrl('supportCheck',`shareId=${shareId}`), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - console.log(`检查助力,助力好友${shareId}成功`) - }else{ - console.log(`检查助力失败,${data.msg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function showMsg() { - return new Promise(resolve => { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); - resolve() - }) -} -function getUserInfo() { - return new Promise(resolve => { - $.get(taskUrl('shareInfo'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - $.shareId = data.data.shareId - console.log(`\n您的${$.name}好友助力邀请码:${data.data.shareId}\n`) - message += `\n您的${$.name}好友助力邀请码:${data.data.shareId}\n` - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function getTaskList() { - return new Promise(resolve => { - $.get(taskUrl('indexInfo'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - const tasks = data.data - for(let i = 0; i < tasks.length; ++i){ - const task = tasks[i] - console.log(`去加购物车:${task['skuName']}`) - await browseSku(task['skuId']) - } - message += `共获得${$.bean}个京豆\n` - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function getPrize(skuId) { - return new Promise(resolve => { - $.post(taskPostUrl('getPrize',`skuId=${skuId}`), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - $.bean += data.data - console.log(`任务领奖成功,获得${data.data}个京豆`) - }else{ - console.log(`任务领奖失败,${data.msg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function browseSku(skuId) { - return new Promise(resolve => { - $.post(taskPostUrl('browseSku',`skuId=${skuId}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.code === 200) { - console.log(`任务领取成功`) - await $.wait(5000) - await getPrize(skuId) - } else{ - console.log(data) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -//格式化助力码 -function shareCodesFormat() { - return new Promise(async resolve => { - // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) - $.newShareCodes = []; - if ($.shareCodesArr[$.index - 1]) { - $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); - } else { - console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) - const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); - $.newShareCodes = inviteCodes[tempIndex].split('@'); - } - const readShareCodeRes = null //await readShareCode(); - if (readShareCodeRes && readShareCodeRes.code === 200) { - $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - } - console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) - resolve(); - }) -} -function requireConfig() { - return new Promise(async resolve => { - await getAuthorShareCode() - console.log(`开始获取${$.name}配置文件\n`); - //Node.js用户请在jdCookie.js处填写京东ck; - const shareCodes = [] //$.isNode() ? require('./jdSplitShareCodes.js') : ''; - console.log(`共${cookiesArr.length}个京东账号\n`); - $.shareCodesArr = []; - if ($.isNode()) { - Object.keys(shareCodes).forEach((item) => { - if (shareCodes[item]) { - $.shareCodesArr.push(shareCodes[item]) - } - }) - } - console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); - resolve() - }) -} -function getAuthorShareCode() { - return new Promise(resolve => { - $.get({url: "https://cdn.jsdelivr.net/gh/shylocks/updateTeam@main/jd_digital_floor"}, async (err, resp, data) => { - try { - if (err) { - } else { - inviteCodes[0] = data.replace('\n', '') - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function taskPostUrl(function_id, body) { - return { - url: `${JD_API_HOST}${function_id}?t=${new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000}`, - body: body, - headers: { - 'Host': 'digital-floor.m.jd.com', - 'pragma': 'no-cache', - 'cache-control': 'no-cache', - 'accept': 'application/json, text/plain, */*', - 'dnt': '1', - 'content-type': 'application/x-www-form-urlencoded', - 'origin': 'https://pro.m.jd.com', - 'sec-fetch-site': 'same-site', - 'sec-fetch-mode': 'cors', - 'sec-fetch-dest': 'empty', - 'referer': 'https://pro.m.jd.com/', - 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', - 'Cookie': cookie, - 'user-agent': 'jdapp;iPhone;9.2.0;14.0;53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2;network/wifi;supportApplePay/3;hasUPPay/1;pushNoticeIsOpen/0;model/iPhone10,2;addressid/138413818;hasOCPay/0;appBuild/167408;supportBestPay/1;jdSupportDarkMode/0;pv/1710.16;apprpd/WorthBuy_List;ref/JDWebViewController;psq/2;ads/;psn/53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2|5870;jdv/0|kong|t_1000089893_|tuiguang|9a75f97593f344eb9c46b99e196608d2|1605846323;adk/;app_device/IOS;pap/JA2015_311210|9.2.0|IOS 14.0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',} - } -} -function taskUrl(function_id) { - return { - url: `${JD_API_HOST}${function_id}?t=${new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000}`, - headers: { - 'Host': 'digital-floor.m.jd.com', - 'pragma': 'no-cache', - 'cache-control': 'no-cache', - 'accept': 'application/json, text/plain, */*', - 'dnt': '1', - 'content-type': 'application/x-www-form-urlencoded', - 'origin': 'https://pro.m.jd.com', - 'sec-fetch-site': 'same-site', - 'sec-fetch-mode': 'cors', - 'sec-fetch-dest': 'empty', - 'referer': 'https://pro.m.jd.com/', - 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', - 'Cookie': cookie, - 'user-agent': 'jdapp;iPhone;9.2.0;14.0;53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2;network/wifi;supportApplePay/3;hasUPPay/1;pushNoticeIsOpen/0;model/iPhone10,2;addressid/138413818;hasOCPay/0;appBuild/167408;supportBestPay/1;jdSupportDarkMode/0;pv/1710.16;apprpd/WorthBuy_List;ref/JDWebViewController;psq/2;ads/;psn/53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2|5870;jdv/0|kong|t_1000089893_|tuiguang|9a75f97593f344eb9c46b99e196608d2|1605846323;adk/;app_device/IOS;pap/JA2015_311210|9.2.0|IOS 14.0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',} - } -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/backUp/jd_jxstory.js b/backUp/jd_jxstory.js deleted file mode 100644 index 842e0299..00000000 --- a/backUp/jd_jxstory.js +++ /dev/null @@ -1,670 +0,0 @@ -/* -京喜故事 -活动入口 :京喜APP->首页浮动窗口去领钱/京喜工厂-金牌厂长 -每天运行一次即可 - - -已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -============Quantumultx=============== -[task_local] -#京喜故事 -10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, tag=京喜故事, enabled=true - -================Loon============== -[Script] -cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js,tag=京喜故事 - -===============Surge================= -京喜故事 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js - -============小火箭========= -京喜故事 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jxstory.js, cronexpr="10 * * * *", timeout=200, enable=true - - */ - - -const $ = new Env('京喜故事'); -const JD_API_HOST = 'https://m.jingxi.com'; - -const notify = $.isNode() ? require('../sendNotify') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = 3; -let cookiesArr = [], cookie = '', message = ''; -const inviteCodes = ['qSDHMwUOz7onHcMyaju4KmdSXWf0dlv7LVnTt1Wzemo=@iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=', 'iuGNoGYvk9YdEImUAz25Wyzm7oeggrm0JSIYgZdHJGI=']; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -!(async () => { - await requireConfig(); - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - $.ele = 0; - 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。 - } - continue - } - await shareCodesFormat(); - await jdJxStory() - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - -async function jdJxStory() { - await userInfo() - await helpFriends() - await sign() - await taskList() - for(let i =0;i { - $.get(taskurl('SignIn', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`签到钞票:收取成功,获得 ${data['data']['rewardMoneyToday']}`) - message += `【签到钞票】:收取成功,获得 ${data['data']['rewardMoneyToday']}\n` - } else { - console.log(`签到钞票:收取失败,${data.msg}`) - message += `【签到钞票】收取失败,${data.msg}\n` - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 初始化任务 -function taskList() { - return new Promise(async resolve => { - $.get(newtasksysUrl('GetUserTaskStatusList'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - let userTaskStatusList = data['data']['userTaskStatusList']; - for (let i = 0; i < userTaskStatusList.length; i++) { - const vo = userTaskStatusList[i]; - if (vo['awardStatus'] !== 1) { - if (vo.completedTimes >= vo.targetTimes) { - console.log(`任务:${vo.description}可完成`) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - } else { - switch (vo.taskType) { - case 2: // 逛一逛任务 - case 6: // 浏览商品任务 - case 9: // 开宝箱 - for (let i = vo.completedTimes; i <= vo.configTargetTimes; ++i) { - console.log(`去做任务:${vo.taskName}`) - await doTask(vo.taskId) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - } - break - case 4: // 招工 - break - case 5: // 京喜工厂投入电力 - console.log(`去做任务:${vo.taskName}`) - await doTask(vo.taskId) - await completeTask(vo.taskId, vo.taskName) - await $.wait(1000);//延迟等待一秒 - break - case 1: // 登陆领奖 - default: - break - } - } - } - } - console.log(`完成任务:共领取${$.ele}钞票`) - message += `【每日任务】领奖成功,共计 ${$.ele} 钞票\n`; - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 钞票翻倍任务 -async function cardList() { - for (let i = 0; i < 10; ++i) { - await readyCard(); - } -} -function readyCard() { - return new Promise(async resolve => { - $.get(taskurl('ReadyCard'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - - if(data['ret']===0 && data['data']['flopFinishNumber']{ - return { - "cardId" : vo['cardId'], - "cardPosition" : index+1, - "cardStatus" :0 - } - }) - cardInfo[0]['cardStatus'] = 1 - - await selectCard(cardInfo) - // await $.wait(1000); - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 选择卡片 -function selectCard(cardInfo) { - return new Promise(async resolve => { - $.get(taskurl('SelectCard',`cardInfo=${JSON.stringify({"cardInfo":cardInfo})}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret']===0){ - await $.wait(10000); - await finishCard(cardInfo[0]['cardId']) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 完成卡片 -function finishCard(cardId) { - return new Promise(async resolve => { - $.get(taskurl('FinishCard',`cardid=${cardId}`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret']===0){ - let ratio = data['data']['cardInfo'].filter(vo=>vo['cardId']===cardId)[0]['cardRatio'] - console.log(`翻倍成功,获得${ratio}%,共计获得${data['data']['earnRatio']}%`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 升级 -function upgrade() { - return new Promise(async resolve => { - $.get(taskurl('UpgradeUserLevelDraw', `date=${new Date().Format("yyyyMMdd")}&type=0`), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0&&data['data']['active']!=='') { - console.log(`升级成功,获得${JSON.stringify(data['data'])}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -// 点击 -function increase() { - return new Promise(async resolve => { - $.get(taskurl('IncreaseUserMoney'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`点击厂长成功,获得 ${data['data']['moneyNum']} 钞票`) - }else if(data['ret'] === 2005){ - // 点击上限 - $.click = false - }else{ - console.log(`点击厂长过快,休息25秒`) - await $.wait(25000); - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function helpFriends() { - for (let code of $.newShareCodes) { - if (code) { - if ($.shareId === code) { - console.log(`不能为自己助力,跳过`); - continue; - } - await assistFriend(code); - } - } -} -// 帮助用户 -function assistFriend(shareId) { - return new Promise(async resolve => { - $.get(taskurl('AssistFriend',`shareId=${escape(shareId)}`), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log(`助力朋友:${shareId}成功`) - } else { - console.log(`助力朋友[${shareId}]失败:${data.msg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 任务领奖 -function completeTask(taskId, taskName) { - return new Promise(async resolve => { - $.get(newtasksysUrl('Award', taskId), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - switch (data['data']['awardStatus']) { - case 1: - $.ele += Number(data['data']['prizeInfo'].replace('\\n', '')) - console.log(`领取${taskName}任务奖励成功,收获:${Number(data['data']['prizeInfo'].replace('\\n', ''))}钞票`); - break - case 1013: - case 0: - console.log(`领取${taskName}任务奖励失败,任务已领奖`); - break - default: - console.log(`领取${taskName}任务奖励失败,${data['msg']}`) - break - } - // if (data['ret'] === 0) { - // console.log("做任务完成!") - // } else { - // console.log(`异常:${JSON.stringify(data)}`) - // } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 完成任务 -function doTask(taskId) { - return new Promise(async resolve => { - $.get(newtasksysUrl('DoTask', taskId), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - console.log("做任务完成!") - } else { - console.log(`异常:${JSON.stringify(data)}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -// 初始化个人信息 -function userInfo() { - return new Promise(async resolve => { - $.get(taskurl('GetUserInfo', ), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['ret'] === 0) { - data = data['data']; - $.shareId = data['shareId']; - console.log(`分享码: ${data['shareId']}`); - $.currentMoneyNum = data.currentMoneyNum; - } else { - console.log(`异常:${JSON.stringify(data)}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -async function showMsg() { - return new Promise(async resolve => { - let ctrTemp; - if ($.isNode() && process.env.JXSTORY_NOTIFY_CONTROL) { - ctrTemp = `${process.env.JXSTORY_NOTIFY_CONTROL}` === 'false'; - } else if ($.getdata('jdJxStory')) { - ctrTemp = $.getdata('jdJxStory') === 'false'; - } else { - ctrTemp = `${jdNotify}` === 'false'; - } - if (ctrTemp) { - $.msg($.name, '', message); - if ($.isNode()) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${message}`); - } - } else { - $.log(`\n${message}\n`); - } - resolve() - }) -} -function readShareCode() { - console.log(`开始`) - return new Promise(async resolve => { - $.get({url: `http://api.turinglabs.net/api/v1/jd/jxstory/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(2000); - // resolve() - }) -} -//格式化助力码 -function shareCodesFormat() { - return new Promise(async resolve => { - // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) - $.newShareCodes = []; - if ($.shareCodesArr[$.index - 1]) { - $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); - } else { - console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) - const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); - $.newShareCodes = inviteCodes[tempIndex].split('@'); - } - // const readShareCodeRes = await readShareCode(); - // if (readShareCodeRes && readShareCodeRes.code === 200) { - // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - // } - console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) - resolve(); - }) -} -function requireConfig() { - return new Promise(resolve => { - console.log(`开始获取${$.name}配置文件\n`); - //Node.js用户请在jdCookie.js处填写京东ck; - const shareCodes = $.isNode() ? require('../jdJxStoryShareCodes.js') : ''; - console.log(`共${cookiesArr.length}个京东账号\n`); - $.shareCodesArr = []; - if ($.isNode()) { - Object.keys(shareCodes).forEach((item) => { - if (shareCodes[item]) { - $.shareCodesArr.push(shareCodes[item]) - } - }) - } - // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); - console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); - resolve() - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} - -function taskurl(functionId, body = '') { - return { - url: `${JD_API_HOST}/jxstory/userinfo/${functionId}?bizcode=jxstory&${body}&_time=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1`, - headers: { - 'Cookie': cookie, - 'Host': 'm.jingxi.com', - 'Accept': '*/*', - 'Connection': 'keep-alive', - 'User-Agent': 'jdpingou;iPhone;3.15.2;14.2;ae75259f6ca8378672006fc41079cd8c90c53be8;network/wifi;model/iPhone10,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/158;pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', - 'Accept-Language': 'zh-cn', - 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html?ptag=138963.4.3', - 'Accept-Encoding': 'gzip, deflate, br', - } - } -} -function newtasksysUrl(functionId, taskId) { - let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=jxstory&bizCode=jxstory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`; - if (taskId) { - url += `&taskId=${taskId}`; - } - return { - url, - "headers": { - 'Cookie': cookie, - 'Host': 'm.jingxi.com', - 'Accept': '*/*', - 'Connection': 'keep-alive', - 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", - 'Accept-Language': 'zh-cn', - 'Referer': 'https://st.jingxi.com/pingou/jx_factory_story/index.html', - 'Accept-Encoding': 'gzip, deflate, br', - } - } -} -Date.prototype.Format = function (fmt) { //author: meizz - var o = { - "M+": this.getMonth() + 1, //月份 - "d+": this.getDate(), //日 - "h+": this.getHours(), //小时 - "m+": this.getMinutes(), //分 - "s+": this.getSeconds(), //秒 - "q+": Math.floor((this.getMonth() + 3) / 3), //季度 - "S": this.getMilliseconds() //毫秒 - }; - if (/(y+)/.test(fmt)) - fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(fmt)) - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - return fmt; -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}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)} diff --git a/backUp/jd_live_redrain.js b/backUp/jd_live_redrain.js deleted file mode 100644 index be450278..00000000 --- a/backUp/jd_live_redrain.js +++ /dev/null @@ -1,244 +0,0 @@ -/* -直播红包雨 -每天0,9,11,13,15,17,19,20,21,23可领,每日上限未知 -活动时间:2020-12-7 到 2020-12-12 -更新地址:https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js -已支持IOS双京东账号, Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js -============Quantumultx=============== -[task_local] -#直播红包雨 -0 0,9,11,13,15,17,19,20,21,23 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js, tag=直播红包雨, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true - -================Loon============== -[Script] -cron "0 0,9,11,13,15,17,19,20,21,23 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js, tag=直播红包雨 - -===============Surge================= -直播红包雨 = type=cron,cronexp="0 0,9,11,13,15,17,19,20,21,23 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js - -============小火箭========= -直播红包雨 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live_redrain.js, cronexpr="0 0,9,11,13,15,17,19,20,21,23 * * *", timeout=200, enable=true - */ -const $ = new Env('直播红包雨'); - -const notify = $.isNode() ? require('../sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = $.isNode() ? 20 : 5; -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -const JD_API_HOST = 'https://api.m.jd.com/api'; -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - await getRedRain(); - if(!$.activityId) return - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - 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。 - } - continue - } - let nowTs = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 - // console.log(nowTs, $.startTime, $.endTime) - if ($.startTime <= nowTs && nowTs < $.endTime) { - await receiveRedRain(); - } else { - console.log(`不在红包雨时间之内`) - message += `不在红包雨时间之内` - } - await showMsg(); - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - -function showMsg() { - return new Promise(resolve => { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); - resolve() - }) -} - -function getRedRain() { - return new Promise(resolve => { - $.get({ - url: "https://gitee.com/shylocks/updateTeam/raw/main/jd_live_redRain.json", - headers:{ - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" - }}, (err, resp, data) => { - try { - if (err) { - console.log(`1111${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - $.activityId = data.activityId - $.startTime = data.startTime - $.endTime = data.endTime - console.log(`下一场红包雨开始时间:${new Date(data.startTime)}`) - console.log(`下一场红包雨结束时间:${new Date(data.endTime)}`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function receiveRedRain() { - return new Promise(resolve => { - const body = {"actId": $.activityId}; - $.get(taskUrl('noahRedRainLottery', body), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.subCode === '0') { - console.log(`领取成功,获得${JSON.stringify(data.lotteryResult)}`) - // message+= `领取成功,获得${JSON.stringify(data.lotteryResult)}\n` - message += `${data.lotteryResult.jPeasList[0].ext}:${(data.lotteryResult.jPeasList[0].quantity)}京豆\n` - - } else if (data.subCode === '8') { - console.log(`今日次数已满`) - message += `领取失败,今日已签到\n`; - } else { - console.log(`异常:${JSON.stringify(data)}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function taskUrl(function_id, body = {}) { - return { - url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, - headers: { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Content-Type": "application/x-www-form-urlencoded", - "Host": "api.m.jd.com", - "Referer": "https://h5.m.jd.com/active/redrain/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"), - } - } -} - -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/backUp/jd_mohe.js b/backUp/jd_mohe.js deleted file mode 100644 index c1711fd3..00000000 --- a/backUp/jd_mohe.js +++ /dev/null @@ -1,422 +0,0 @@ -/* -热8超级盲盒,可抽奖获得京豆,建议在凌晨0点时运行脚本,白天抽奖基本没有京东 -活动地址: https://blindbox.jd.com -活动时间到18号 -支持京东双账号 -更新时间:2020-08-17 -脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js -// quantumultx -[task_local] -#热8超级盲盒 -1 0,1-23/3 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js, tag=热8超级盲盒, enabled=true -// Loon -[Script] -cron "1 0,1-23/3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js,tag=热8超级盲盒 -// Surge -热8超级盲盒 = type=cron,cronexp=1 0,1-23/3 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_mohe.js - */ -const $ = new Env('热8超级盲盒'); -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; - -//直接用NobyDa的jd cookie -let cookie = jdCookieNode.CookieJD ? jdCookieNode.CookieJD : $.getdata('CookieJD'); -const cookie2 = jdCookieNode.CookieJD2 ? jdCookieNode.CookieJD2 : $.getdata('CookieJD2'); -let UserName = ''; -const JD_API_HOST = 'https://blindbox.jd.com'; -let shareId = ''; -!(async () => { - if (!cookie) { - $.msg('【京东账号一】热8超级盲盒', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - } else { - UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); - // await shareUrl(); - // await addShare(); - await getCoin();//领取每三小时自动生产的热力值 - await Promise.all([ - task0(), - task1(), - ]) - await taskList(); - await getAward();//抽奖 - if ($.time('yyyy-MM-dd') === '2020-08-19') { - $.msg($.name, '活动已结束', `请禁用或删除脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts\n`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - } else { - $.msg($.name, '', `【京东账号一】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); - } - } - await $.wait(1000); - if (cookie2) { - cookie = cookie2; - UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); - console.log(`\n开始【京东账号二】${UserName}\n`) - await getCoin();//领取每三小时自动生产的热力值 - await Promise.all([ - task0(), - task1(), - ]) - await taskList(); - await getAward();//抽奖 - $.msg($.name, '', `【京东账号二】${UserName}\n任务已做完.\n 抽奖详情查看 https://blindbox.jd.com\n`, {"open-url": "https://blindbox.jd.com"}); - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) - - -async function task0() { - const confRes = await conf(); - if (confRes.code === 200) { - const { brandList, skuList } = confRes.data; - if (skuList && skuList.length > 0) { - for (let item of skuList) { - if (item.state === 0) { - let homeGoBrowseRes = await homeGoBrowse(0, item.id); - console.log('商品', homeGoBrowseRes); - await $.wait(1000); - const taskHomeCoin0Res = await taskHomeCoin(0, item.id); - console.log('商品领取金币', taskHomeCoin0Res); - // if (homeGoBrowseRes.code === 200) { - // await $.wait(1000); - // await taskHomeCoin(0, item.id); - // } - } else { - console.log('精选好物任务已完成') - } - } - } - } -} -async function task1() { - const confRes = await conf(); - if (confRes.code === 200) { - const { brandList, skuList } = confRes.data; - if (brandList && brandList.length > 0) { - for (let item of brandList) { - if (item.state === 0) { - let homeGoBrowseRes = await homeGoBrowse(1, item.id); - // console.log('店铺', homeGoBrowseRes); - await $.wait(1000); - const taskHomeCoin1Res = await taskHomeCoin(1, item.id); - console.log('店铺领取金币', taskHomeCoin1Res); - // if (homeGoBrowseRes.code === 200) { - // await $.wait(1000); - // await taskHomeCoin(1, item.id); - // } - } else { - console.log('精选店铺-任务已完成') - } - } - } - } -} -function addShare(id) { - console.log(`shareId${shareId}`); - return new Promise((resolve) => { - const url = `addShare?shareId=${shareId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('ddd----ddd', data) - data = JSON.parse(data); - // console.log('ddd----ddd', data) - - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function conf() { - return new Promise((resolve) => { - const url = `conf`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('ddd----ddd', data) - data = JSON.parse(data); - // console.log('ddd----ddd', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function homeGoBrowse(type, id) { - return new Promise((resolve) => { - const url = `homeGoBrowse?type=${type}&id=${id}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function taskHomeCoin(type, id) { - return new Promise((resolve) => { - const url = `taskHomeCoin?type=${type}&id=${id}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function getCoin() { - return new Promise((resolve) => { - const url = `getCoin?t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - if (data.code === 1001) { - console.log(data.msg); - $.msg($.name, '领取失败', `${data.msg}`); - $.done(); - } else { - console.log(`成功领取${data.data}热力值`) - resolve(data); - } - } catch (e) { - $.logErr(e, resp); - } - }) - }) -} -function taskList() { - return new Promise((resolve) => { - const url = `taskList?t=${Date.now()}`; - $.get(taskurl(url), async (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - console.log(`请继续等待,正在做任务,不要退出哦`) - // console.log(`成功领取${data.data}热力值`) - if (data.code === 200) { - const { task4, task6, task2, task1 } = data.data; - if (task4.finishNum < task4.totalNum) { - await browseProduct(task4.skuId); - await taskCoin(task4.type); - } - //浏览会场 - if (task1.finishNum < task1.totalNum) { - await strollActive((task1.finishNum + 1)); - await taskCoin(task1.type); - } - if (task2.finishNum < task2.totalNum) { - await strollShop(task2.shopId); - await taskCoin(task2.type); - } - if (task6.finishNum < task6.totalNum) { - await strollMember(task6.venderId); - await taskCoin(task6.type); - } - if (task4.state === 2 && task1.state === 2 && task2.state === 2 && task6.state === 2) { - console.log('taskList的任务全部做完了---') - } else { - await taskList(); - } - } - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//浏览商品(16个) -function browseProduct(skuId) { - return new Promise((resolve) => { - const url = `browseProduct?0=${skuId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -// 浏览会场(10个) -function strollActive(index) { - return new Promise((resolve) => { - const url = `strollActive?0=${index}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//关注或浏览店铺(9个) -function strollShop(shopId) { - return new Promise((resolve) => { - const url = `strollShop?shopId=${shopId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -// 加入会员(7) -function strollMember(venderId) { - return new Promise((resolve) => { - const url = `strollMember?venderId=${venderId}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} - -function taskCoin(type) { - return new Promise((resolve) => { - const url = `taskCoin?type=${type}&t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -async function getAward() { - const coinRes = await coin(); - if (coinRes.code === 200) { - const { total, need } = coinRes.data; - if (total > need) { - const times = Math.floor(total / need); - for (let i = 0; i < times; i++) { - await $.wait(2000); - let lotteryRes = await lottery(); - if (lotteryRes.code === 200) { - console.log(`====抽奖结果====,${JSON.stringify(lotteryRes.data)}`); - console.log(lotteryRes.data.name); - console.log(lotteryRes.data.beanNum); - } else if (lotteryRes.code === 4001) { - console.log(`抽奖失败,${lotteryRes.msg}`); - break; - } - } - } else { - console.log(`目前热力值${total},不够抽奖`) - } - } -} -//获取有多少热力值 -function coin() { - return new Promise((resolve) => { - const url = `coin?t=${Date.now()}`; - $.get(taskurl(url), (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -//抽奖API -function lottery() { - return new Promise((resolve) => { - const options = { - 'url': `${JD_API_HOST}/prize/lottery?t=${Date.now()}`, - 'headers': { - "accept": "*/*", - "accept-encoding": "gzip, deflate, br", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/x-www-form-urlencoded", - "cookie": cookie, - "referer": "https://blindbox.jd.com/", - "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, (err, resp, data) => { - try { - // console.log('homeGoBrowse', data) - data = JSON.parse(data); - // console.log('homeGoBrowse', data) - // console.log(`成功领取${data.data}热力值`) - } catch (e) { - $.logErr(e, resp); - } finally { - resolve(data); - } - }) - }) -} -function taskurl(url) { - return { - 'url': `${JD_API_HOST}/active/${url}`, - 'headers': { - "accept": "*/*", - "accept-encoding": "gzip, deflate, br", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-type": "application/x-www-form-urlencoded", - "cookie": cookie, - "referer": "https://blindbox.jd.com/", - "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") - } - } -} -// prettier-ignore -function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} \ No newline at end of file diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index 3e147612..2de5a48e 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -8,8 +8,6 @@ 40 8 * * * node /scripts/jd_ms_redrain.js >> /scripts/logs/jd_ms_redrain.log 2>&1 # 健康抽奖机(2020.12.31活动过期) 10 0 * * * node /scripts/jd_health.js >> /scripts/logs/jd_health.log 2>&1 -# PUBG游戏盛典(2020.12.13活动过期) -8 1,20 * * * node /scripts/jd_pubg.js >> /scripts/logs/jd_pubg.log 2>&1 # 苹果超品日互动抽奖机(2020.12.14活动过期) 8 0,20 * * * node /scripts/jd_apple_live.js >> /scripts/logs/jd_apple_live.log 2>&1 diff --git a/docker/crontab_list_ts.sh b/docker/crontab_list_ts.sh index 82b8d358..20371191 100644 --- a/docker/crontab_list_ts.sh +++ b/docker/crontab_list_ts.sh @@ -8,8 +8,6 @@ 40 8 * * * node /scripts/jd_ms_redrain.js | ts >> /scripts/logs/jd_ms_redrain.log 2>&1 # 健康抽奖机(2020.12.31活动过期) 10 0 * * * node /scripts/jd_health.js | ts >> /scripts/logs/jd_health.log 2>&1 -# PUBG游戏盛典(2020.12.13活动过期) -8 1,20 * * * node /scripts/jd_pubg.js | ts >> /scripts/logs/jd_pubg.log 2>&1 # 苹果超品日互动抽奖机(2020.12.14活动过期) 8 0,20 * * * node /scripts/jd_apple_live.js | ts >> /scripts/logs/jd_apple_live.log 2>&1 diff --git a/jd_joy_steal.js b/jd_joy_steal.js index c17d16d9..9dc3d77b 100644 --- a/jd_joy_steal.js +++ b/jd_joy_steal.js @@ -29,8 +29,12 @@ if ($.isNode()) { }) if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { - cookiesArr.push($.getdata('CookieJD')); - cookiesArr.push($.getdata('CookieJD2')); + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); } let message = '', subTitle = ''; From 6b68135ad3186d523474b48f80d8ff0361d72cab Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 10:43:45 +0800 Subject: [PATCH 16/21] =?UTF-8?q?jd=5Fjoy.js=E5=AE=A0=E6=B1=AA=E6=B1=AA?= =?UTF-8?q?=E5=8F=82=E5=8A=A0=E8=B5=9B=E8=B7=91=E7=BA=A7=E5=88=AB=E5=8F=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=8D=E5=90=8C=E8=B4=A6=E5=8F=B7=E5=8F=82?= =?UTF-8?q?=E5=8A=A0=E4=B8=8D=E5=90=8C=E7=9A=84=E7=BA=A7=E5=88=AB=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E8=8B=A5=E6=83=B3=E8=AE=BE=E7=BD=AE=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=8F=82=E5=8A=A0=E4=B8=8D=E5=90=8C=E7=B1=BB?= =?UTF-8?q?=E5=88=AB=E7=9A=84=E6=AF=94=E8=B5=9B=E5=88=99=E7=94=A8&?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E5=8D=B3=E5=8F=AF(=E5=A6=82=EF=BC=9A`2&10&50?= =?UTF-8?q?`)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backUp/iepngs.boxjs.json | 33 --- backUp/jd_split.js | 315 ----------------------------- backUp/jd_xtg.js | 420 --------------------------------------- githubAction.md | 2 +- jd_joy.js | 26 +-- 5 files changed, 14 insertions(+), 782 deletions(-) delete mode 100644 backUp/iepngs.boxjs.json delete mode 100644 backUp/jd_split.js delete mode 100644 backUp/jd_xtg.js diff --git a/backUp/iepngs.boxjs.json b/backUp/iepngs.boxjs.json deleted file mode 100644 index 7f072185..00000000 --- a/backUp/iepngs.boxjs.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "id": "iepngs.app.sub", - "name": "iepngs脚本订阅(自用,非作者本人的订阅)", - "author": "@iepngs", - "icon": "https://avatars2.githubusercontent.com/u/10695382?s=460&u=efc97d623c7c21170e6794f367fa80a97253f87b&v=4", - "repo": "https://github.com/iepngs/Script", - "apps": [ - { - "id": "lxhealth", - "name": "乐心健康", - "keys": [ - "lxhealthCookie", - "lxhealthStep" - ], - "settings": [ - { - "id": "lxhealthStep", - "name": "运动步数", - "val": "", - "type": "text", - "desc": "修改乐心健康运动步数" - } - ], - "author": "@iepngs", - "repo": "https://github.com/iepngs/Script", - "script": "https://raw.githubusercontent.com/iepngs/Script/master/lxhealth/index.js", - "icons": [ - "https://avatars2.githubusercontent.com/u/10695382?s=460&u=efc97d623c7c21170e6794f367fa80a97253f87b&v=4", - "https://avatars2.githubusercontent.com/u/10695382?s=460&u=efc97d623c7c21170e6794f367fa80a97253f87b&v=4" - ] - } - ] -} \ No newline at end of file diff --git a/backUp/jd_split.js b/backUp/jd_split.js deleted file mode 100644 index efaaf756..00000000 --- a/backUp/jd_split.js +++ /dev/null @@ -1,315 +0,0 @@ -/* -金榜年终奖 -脚本会给内置的码进行助力 -活动时间:2020-12-12日结束 -活动入口:京东APP首页右边浮动飘窗 -已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -============Quantumultx=============== -[task_local] -#金榜年终奖 -10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_split.js, tag=年终奖, enabled=true - -================Loon============== -[Script] -cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_split.js,tag=年终奖 - -===============Surge================= -金榜年终奖 = type=cron,cronexp="10 0 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_split.js - -============小火箭========= -金榜年终奖 = type=cron,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_split.js, cronexpr="10 0 * * *", timeout=200, enable=true - */ -const $ = new Env('金榜年终奖'); - -const notify = $.isNode() ? require('../sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 -const randomCount = $.isNode() ? 20 : 5; -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -const JD_API_HOST = 'https://api.m.jd.com/client.action'; -$.newShareCodes = [`P04z54XCjVUnIaW5nJcXCCyoR8C6p8txXBH`, 'P04z54XCjVUnIaW5m9cZ2T6jChKki0Hfndla5k', 'P04z54XCjVUnIaW5u2ak7ZCdan1BT0NlbBGZ1-rnMYj', 'P04z54XCjVUnIaW5m9cZ2ariXVJwI64DaVTNXQ']; -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - message = ''; - 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。 - } - continue - } - await jdSplit() - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function jdSplit() { - await helpFriends(); - await jdsplit_getTaskDetail(); - await doTask(); - await showMsg(); -} -function showMsg() { - return new Promise(resolve => { - message += `任务已做完:具体奖品去发活动页面查看\n活动入口:京东APP首页右边浮动飘窗`; - $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); - resolve() - }) -} -async function helpFriends() { - for (let code of $.newShareCodes) { - if (!code) continue - const helpRes = await jdsplit_collectScore(code,6,null); - if (helpRes.code === 0 && helpRes.data.bizCode === -7) { - console.log(`助力机会已耗尽,跳出`); - break - } - } -} -async function doTask() { - for (let item of $.taskVos) { - if (item.taskType === 8) { - //看看商品任务 - if (item.status === 1) { - console.log(`准备做此任务:${item.taskName}`); - for (let task of item.productInfoVos) { - if (task.status === 1) { - await jdsplit_collectScore(task.taskToken,item.taskId,task.itemId,1); - await $.wait(4000) - await jdsplit_collectScore(task.taskToken,item.taskId,task.itemId,0); - } - } - await jdsplit_getLottery(item.taskId) - } else if(item.status!==4){ - await jdsplit_getLottery(item.taskId) - console.log(`${item.taskName}已做完`) - } - } - if (item.taskType === 9) { - //逛会场任务 - if (item.status === 1) { - console.log(`准备做此任务:${item.taskName}`); - for (let task of item.shoppingActivityVos) { - if (task.status === 1) { - await jdsplit_collectScore(task.taskToken,item.taskId,task.itemId,1); - await $.wait(4000) - await jdsplit_collectScore(task.taskToken,item.taskId,task.itemId,0); - } - } - await jdsplit_getLottery(item.taskId) - } else if(item.status!==4){ - await jdsplit_getLottery(item.taskId) - console.log(`${item.taskName}已做完`) - } - } - } -} - -//领取做完任务的奖励 -function jdsplit_collectScore(taskToken, taskId, itemId, actionType=0) { - return new Promise(resolve => { - let body = { "appId":"1EFRTwA","taskToken":taskToken,"taskId":taskId,"itemId":itemId,"actionType":actionType } - $.post(taskPostUrl("harmony_collectScore", body), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if(data.data.bizCode === 1){ - console.log(`任务领取成功`); - } - else if (data.data.bizCode === 0) { - if(data.data.result.taskType===6){ - console.log(`助力好友:${data.data.result.itemId}成功!`) - }else - console.log(`任务完成成功`); - } else { - console.log(`${data.data.bizMsg}`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -// 抽奖 -function jdsplit_getLottery(taskId) { - return new Promise(resolve => { - let body = { "appId":"1EFRTwA","taskId":taskId} - $.post(taskPostUrl("splitHongbao_getLotteryResult", body), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.data.bizCode === 0) { - console.log(`红包领取结果:${data.data.result.userAwardsCacheDto.redPacketVO.name}`); - } else { - console.log(JSON.stringify(data)) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} - -function jdsplit_getTaskDetail() { - return new Promise(resolve => { - $.post(taskPostUrl("splitHongbao_getHomeData", {"appId":"1EFRTwA","taskToken":""}, ), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data.data.bizCode === 0) { - $.taskVos = data.data.result.taskVos;//任务列表 - $.taskVos.map(item => { - if (item.taskType === 6) { - console.log(`\n您的${$.name}好友助力邀请码:${item.assistTaskDetailVo.taskToken}\n`) - } - }) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function taskPostUrl(function_id, body = {}, function_id2) { - let url = `${JD_API_HOST}`; - if (function_id2) { - url += `?functionId=${function_id2}`; - } - return { - url, - body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, - headers: { - "Cookie": cookie, - "origin": "https://h5.m.jd.com", - "referer": "https://h5.m.jd.com/", - 'Content-Type': 'application/x-www-form-urlencoded', - "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"), - } - } -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/backUp/jd_xtg.js b/backUp/jd_xtg.js deleted file mode 100644 index a68fe6ba..00000000 --- a/backUp/jd_xtg.js +++ /dev/null @@ -1,420 +0,0 @@ -/* - * @Author: lxk0301 - * @Date: 2020-10-21 17:04:04 - * @Last Modified by: lxk0301 - * @Last Modified time: 2020-11-05 00:35:04 - */ -/** - 星推官脚本 https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js - 星推官活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html - 活动时间:2020年10月21日 00:00:00-2020年11月11日 23:59:59 - 京豆先到先得!!!!!!!!!!! - 出现任务做完没领取的情况,就再运行一次脚本 - 能做完所有的任务,包括自动抽奖,脚本会给内置的shareId助力 - 一共23个活动,耗时比较久,surge请加大timeout时间 - 支持京东双账号 - 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js - // quantumultx - [task_local] - #京东星推官 - 2 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js, tag=京东星推官, enabled=true - // Loon - [Script] - cron "2 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js,tag=京东星推官 - // Surge - 京东星推官 = type=cron,cronexp=2 0 * * *,wake-system=1,timeout=320,script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js - */ -const $ = new Env('京东星推官'); -const activeEndTime = '2020/11/11 23:59:59+08:00';//活动结束时间 -const notify = $.isNode() ? require('../sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('../jdCookie.js') : ''; - -//IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - let cookiesData = $.getdata('CookiesJD') || "[]"; - cookiesData = jsonParse(cookiesData); - cookiesArr = cookiesData.map(item => item.cookie); - cookiesArr.reverse(); - cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); - cookiesArr.reverse(); -} -const starID = [ - 'bolangwutiaoren', - 'oulebyangzi', - 'meiditongliya', - 'chuangweimaobuyi', - 'quechaozhuyilong', - 'haierchenxiao', - 'feilipulixian', - 'feilipurenjialun', - 'feilipuwangziyi', - 'changhongsongyi', - 'jiuyangdenglun', - 'aokesilingengxin', - 'haixinchengguo', - 'fangtai', - 'lgyangzishan', - 'laobansongweilong', - 'haiermaoxiaotong', - "skgwangyibo", - "kongtiaozhangjike", - "sanxingningjing", - "xiaojiadianxiongziqi", - "heidianliyitong", - "oulebzhangyixing", -]; -const shareID = [ - 'e646c144-28a7-4b1b-8145-5b0dbff107ec', - 'b3fcb734-cbdd-4436-9f92-b13b445fc253', - 'e2d63b19-19d6-4a20-b2af-74b828e703d0', - 'a7a3b9b7-2872-4244-a627-3b82c271dee7', - 'f7b521e7-5306-4908-ba8a-df2d221bdd9d', - 'd17ec374-70d4-49d5-8673-7093e61f904c', - '915b9567-dc88-4389-8be9-ecc25588353a', - '7abdc8f4-d8f4-497f-8daa-cdab01cf645c', - '50ecc8de-1ee5-4420-bbb8-1136d86d80db', - 'fd0770e1-5007-45c1-8d69-402e02ff9a52', - 'cb9e9a59-a86b-4a0d-a308-4503fe5baaa4', - '93b3afeb-a18c-437c-b5ca-fbd9f389671d', - '8778793c-e9ad-4339-a709-723ae3ebde8e', - '921c376e-8cc5-4236-8242-ff8bb1b88a95', - '8b3ce203-4b10-4c36-a87d-da8c82efe362', - 'c8e1feb3-6ab1-4410-8444-1de8bd22e041', - "dd6b5270-3e5e-436d-be0f-295a8604cf47", - "7aef5700-4fa0-43b8-98fa-3a09f46ea47c", - "be0ec81c-bf26-4b7b-9527-d02b0286e5af", - "ecd890e0-db46-46c7-862e-cb9776c207dc", - "91ceb3eb-df84-471e-ad77-320cd95763ee", -]; -const JD_API_HOST = 'https://urvsaggpt.m.jd.com/guardianstar'; -!(async () => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) - $.index = i + 1; - $.beanCount = 0; - $.jdNum = 0; - $.isLogin = true; - $.nickName = ''; - const beforeTotal = 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。 - } - continue - } - console.log(`一共${starID.length}个${$.name}任务,耗时会很久,请提前知晓`) - $.beanCount = beforeTotal && beforeTotal['base'].jdNum; - for (let index = 0; index < starID.length; index ++) { - $.activeId = starID[index]; - $.j = index; - await JD_XTG(); - } - console.log(`\n等待8秒后,再去领取奖励\n`) - console.log(`做任务之前京豆总计:${$.beanCount}`) - await $.wait(8000); - for (let index = 0; index < starID.length; index ++) { - $.activeId = starID[index]; - $.j = index; - await JD_XTG(); - await doSupport(shareID[index]); - } - const afterTotal = await TotalBean(); - $.jdNum = afterTotal['base'].jdNum; - await showMsg(); - } - } -})() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) -async function showMsg() { - console.log(`\n做任务之前京豆总计:${$.beanCount}`) - console.log(`做完任务后京豆总计:${$.jdNum}`); - console.log(`活动活动京豆数量:${$.jdNum - $.beanCount}`); - let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; - if (nowTime > new Date(activeEndTime).getTime()) { - $.msg($.name, '活动已结束', `请删除或禁用此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`, {"open-url": "https://github.com/lxk0301/jd_scripts"}); - if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\n如果帮助到您可以点下🌟STAR鼓励我一下,谢谢\n咱江湖再见\nhttps://github.com/lxk0301/jd_scripts`) - } else { - $.msg($.name, `账号${$.index} ${$.nickName || $.UserName}`, `做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n活动地址点击弹窗跳转后即可查看\n注:如未获得京豆就是已被分完`, {"open-url": "https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html"}) - if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `账号${$.index} ${$.nickName || $.UserName}\n做任务之前京豆总计:${$.beanCount}\n做完任务后京豆总计:${$.jdNum}\n${($.jdNum - $.beanCount) > 0 ? `获得京豆:${$.jdNum - $.beanCount}京豆 🐶(仅供参考)\n` : ''}京豆先到先得\n注:如未获得京豆就是已被分完\n活动结束时间:2020年11月12日 23:59:59\n活动地址:https://prodev.m.jd.com/mall/active/3gSzKSnvrrhYushciUpzHcDnkYE3/index.html`) - } -} -async function JD_XTG() { - await getHomePage(); - if ($.homeData && $.homeData.code === 200) { - const { shopList, venueList, productList, orderSkuList, shareId } = $.homeData.data[0]; - console.log(`\n===========活动${$.j + 1}-[${starID[$.j]}] 助力码==========\n${shareId}\n`); - for (let item of shopList) { - console.log(`\n任务一:关注${item['shopName']}`) - if (item['shopStatus'] === 4) { - console.log(`入会任务,假入会`); - await doTask('shop', item['shopId'], 0) - continue - } - if (item['shopStatus'] === 3) { - console.log(`此任务已做完,跳过`); - continue - } - console.log(`shopStatus:::${item['shopStatus']}`) - if (item['shopStatus'] !== 3 && item['shopStatus'] !== 4) { - await doTask('shop', item['shopId'], item['shopStatus']) - } - // if (item['shopStatus'] === 2) { - // await doTask('shop', item['shopId'], 2) - // } - // if (item['shopStatus'] === 4) { - // await doTask('shop', item['shopId'], 4) - // } - } - for (let item1 of venueList) { - console.log(`\n任务二:逛逛[${item1['venueName']}]-${item1['venueStatus'] !== 3 ? '' : '已做完'}`) - if (item1['venueStatus'] === 1) { - await doTask('venue', item1['venueId'], 1); - } - if (item1['venueStatus'] === 2) { - await doTask('venue', item1['venueId'], 2); - } - } - for (let item2 of productList) { - console.log(`\n任务三:逛逛[${item2['productName']}]-${item2['productStatus'] !== 3 ? '' : '已做完'}`) - if (item2['productStatus'] === 1) { - await doTask('product', item2['productId'], 1); - } - if (item2['productStatus'] === 2) { - await doTask('product', item2['productId'], 2); - } - } - //付定金 TODO - // for (let item3 of orderSkuList) { - // await doTask('order', item3['skuId'], 1); - // await doTask('order', item3['skuId'], 2); - // await doTask('order', item3['skuId'], 3); - // await doTask('order', item3['skuId'], 0); - // - // await doTask('order', item3['skuId'], 2); - // await doTask('order', item3['skuId'], 1); - // } - console.log(`\n开始抽奖\n`) - await getDayPrizeStatus(4, `${$.activeId}#1`, 3); - await getDayPrizeStatus(1, `${$.activeId}#2`, 3); - } else { - console.log(`京东服务器返回无数据!`) - } -} -function getHomePage() { - return new Promise(resolve => { - $.get(taskUrl('getHomePage'), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - $.homeData = JSON.parse(data); - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function doTask(type, id, status) { - return new Promise(async resolve => { - $.post(taskPostUrl(type, id, status), (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`做任务结果:${data}`); - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} - -function doSupport(shareId) { - return new Promise(async resolve => { - const options = { - "url": `${JD_API_HOST}/doSupport`, - "body": `starId=${$.activeId}&shareId=${shareId}`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - // console.log(`\n助力结果:${data}`); - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - $.nickName = data['base'].nickname; - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function getDayPrizeStatus(prizeType, prizeId, status) { - return new Promise(async resolve => { - const options = { - "url": `${JD_API_HOST}/getDayPrizeStatus`, - "body": `starId=${$.activeId}&status=${status}&prizeType=${prizeType}&prizeId=${prizeId}`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - console.log(`抽奖结果:${data}`); - // data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function taskPostUrl(type, id, status) { - return { - url: `${JD_API_HOST}/doTask`, - body: `starId=${$.activeId}&type=${type}&id=${id}&status=${status}`, - headers: { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -function taskUrl(function_id) { - return { - url: `${JD_API_HOST}/${function_id}?t=${Date.now()}&starId=${$.activeId}`, - headers: { - "Accept": "application/json,text/plain, */*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Host": "urvsaggpt.m.jd.com", - "Referer": "https://urvsaggpt.m.jd.com/static/index.html", - "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") - } - } -} -// 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,r)=>{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.isNeedRewrite=!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 r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,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),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}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),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),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()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}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())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$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",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},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:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}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="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));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)} diff --git a/githubAction.md b/githubAction.md index acc3bd21..8f694840 100644 --- a/githubAction.md +++ b/githubAction.md @@ -97,7 +97,7 @@ | `JOY_FEED_COUNT` | 宠汪汪喂食数量 | 非必须 | 控制jd_joy_feedPets.js脚本喂食数量 ,可以填的数字10,20,40,80 , 其他数字不可. | | `JOY_HELP_FEED` | 宠汪汪帮好友喂食 | 非必须 | 控制jd_joy_steal.js脚本是否给好友喂食,`false`为否,`true`为是(给好友喂食) | | `JOY_RUN_FLAG` | 宠汪汪是否赛跑 | 非必须 | 控制jd_joy.js脚本是否参加赛跑(默认参加双人赛跑),`false`为否,`true`为是,脚本默认是`true` | -| `JOY_TEAM_LEVEL` | 宠汪汪参加什么级别的赛跑 | 非必须 | 控制jd_joy.js脚本参加几人的赛跑,可选数字为`2`,`10`,`50`,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛(注:此项功能在`JOY_RUN_FLAG`为true的时候才生效) | +| `JOY_TEAM_LEVEL` | 宠汪汪参加什么级别的赛跑 | 非必须 | 控制jd_joy.js脚本参加几人的赛跑,可选数字为`2`,`10`,`50`,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛(注:此项功能在`JOY_RUN_FLAG`为true的时候才生效),如若想设置不同账号参加不同类别的比赛则用&区分即可(如下三个账号:`2&10&50`) | | `JD_JOY_REWARD_NAME` | 宠汪汪积分兑换多少京豆 | 非必须 | 目前可填值为`20`或者`500`,脚本默认`20`,`0`表示不兑换京豆 | | `MARKET_COIN_TO_BEANS` | 京小超兑换京豆数量 | 非必须 | 控制jd_blueCoin.js兑换京豆数量,可输入值为`20`或者`1000`的数字或者其他商品的名称,例如`碧浪洗衣凝珠` | | `MARKET_REWARD_NOTIFY` | 京小超兑换奖品推送开关 | 非必须 | 控制jd_blueCoin.js兑换奖品成功后是否静默运行, `false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) | diff --git a/jd_joy.js b/jd_joy.js index f06e5a09..d10c0ca1 100644 --- a/jd_joy.js +++ b/jd_joy.js @@ -2,13 +2,11 @@ jd宠汪汪 搬的https://github.com/uniqueque/QuantumultX/blob/4c1572d93d4d4f883f483f907120a75d925a693e/Script/jd_joy.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js IOS用户支持京东双账号,NodeJs用户支持N个京东账号 -更新时间:2020-12-06 +更新时间:2020-12-14 建议先凌晨0点运行jd_joy.js脚本获取狗粮后,再运行此脚本(jd_joy_steal.js)可偷好友积分,6点运行可偷好友狗粮 feedCount:自定义 每次喂养数量; 等级只和喂养次数有关,与数量无关 -推荐每次投喂10个,积累狗粮,然后去聚宝盆赌每小时的幸运奖,据观察,投入3000-6000中奖概率大,超过7000基本上注定亏本,即使是第一名 +推荐每次投喂10个,积累狗粮,然后去玩聚宝盆赌 Combine from Zero-S1/JD_tools(https://github.com/Zero-S1/JD_tools) -更新时间:2020-10-20 -注:如果使用Node.js, 需自行安装'crypto-js,got,http-server,tough-cookie'模块. 例: npm install crypto-js http-server tough-cookie got --save */ // quantumultx // [task_local] @@ -41,7 +39,7 @@ if ($.isNode()) { } let message = '', subTitle = ''; let FEED_NUM = ($.getdata('joyFeedCount') * 1) || 10; //每次喂养数量 [10,20,40,80] -let teamLevel = 2;//参加多少人的赛跑比赛,默认是双人赛跑,可选2,10,50。其他不可选,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛 +let teamLevel = 2;//参加多少人的赛跑比赛,默认是双人赛跑,可选2,10,50。其他不可选,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛,如若想设置不同账号参加不同类别的比赛则用&区分即可(如:`2&10&50`) //是否参加宠汪汪双人赛跑(据目前观察,参加双人赛跑不消耗狗粮,如需参加其他多人赛跑,请关闭) // 默认 'true' 参加双人赛跑,如需关闭 ,请改成 'false'; let joyRunFlag = true; @@ -135,19 +133,21 @@ async function joinTwoPeopleRun() { joyRunFlag = process.env.JOY_RUN_FLAG; } if (`${joyRunFlag}` === 'true') { - teamLevel = $.isNode() ? (process.env.JOY_TEAM_LEVEL ? process.env.JOY_TEAM_LEVEL : teamLevel) : ($.getdata('JOY_TEAM_LEVEL') ? $.getdata('JOY_TEAM_LEVEL') : teamLevel); - console.log(`\n===========以下是${teamLevel}人赛跑信息========\n`) + 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(); if ($.petRaceResult) { let petRaceResult = $.petRaceResult.data.petRaceResult; // let raceUsers = $.petRaceResult.data.raceUsers; console.log(`赛跑状态:${petRaceResult}\n`); if (petRaceResult === 'not_participate') { - console.log(`暂未参赛,现在为您参加${teamLevel}人赛跑`); - await runMatch(teamLevel * 1); + console.log(`暂未参赛,现在为您参加${teamLevelTemp}人赛跑`); + await runMatch(teamLevelTemp * 1); if ($.runMatchResult.success) { - console.log(`${teamLevel}人赛跑参加成功\n`); - message += `${teamLevel}人赛跑:成功参加\n`; + console.log(`${teamLevelTemp}人赛跑参加成功\n`); + message += `${teamLevelTemp}人赛跑:成功参加\n`; await getPetRace(); petRaceResult = $.petRaceResult.data.petRaceResult; await getRankList(); @@ -172,8 +172,8 @@ async function joinTwoPeopleRun() { await receiveJoyRunAward(); console.log(`领取赛跑奖励结果:${JSON.stringify($.receiveJoyRunAwardRes)}`) if ($.receiveJoyRunAwardRes.success) { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${teamLevel}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); - if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n${teamLevel}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n太棒了,${teamLevelTemp}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`); + if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}${$.nickName}\n${teamLevelTemp}人赛跑取得获胜\n恭喜您已获得${winCoin}积分奖励`) } } if (petRaceResult === 'participate') { From f6de373ca3817d91172a05eee83ac3e44d656737 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 11:29:06 +0800 Subject: [PATCH 17/21] fix --- jd_joy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jd_joy.js b/jd_joy.js index d10c0ca1..e2379382 100644 --- a/jd_joy.js +++ b/jd_joy.js @@ -39,7 +39,7 @@ if ($.isNode()) { } let message = '', subTitle = ''; let FEED_NUM = ($.getdata('joyFeedCount') * 1) || 10; //每次喂养数量 [10,20,40,80] -let teamLevel = 2;//参加多少人的赛跑比赛,默认是双人赛跑,可选2,10,50。其他不可选,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛,如若想设置不同账号参加不同类别的比赛则用&区分即可(如:`2&10&50`) +let teamLevel = `2`;//参加多少人的赛跑比赛,默认是双人赛跑,可选2,10,50。其他不可选,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛,如若想设置不同账号参加不同类别的比赛则用&区分即可(如:`2&10&50`) //是否参加宠汪汪双人赛跑(据目前观察,参加双人赛跑不消耗狗粮,如需参加其他多人赛跑,请关闭) // 默认 'true' 参加双人赛跑,如需关闭 ,请改成 'false'; let joyRunFlag = true; @@ -184,7 +184,7 @@ async function joinTwoPeopleRun() { console.log(`您当前里程:${$.raceUsers[index].distance}KM\n当前排名:第${$.raceUsers[index].rank}名\n将获得积分:${$.raceUsers[index].coin}\n`); // message += `您当前里程:${$.raceUsers[index].distance}km\n`; } else { - console.log(`对手当前里程:${$.raceUsers[index].distance}KM`); + console.log(`对手 ${$.raceUsers[index].nickName} 当前里程:${$.raceUsers[index].distance}KM`); // message += `对手当前里程:${$.raceUsers[index].distance}km\n`; } } From a2100cff95c16ca72dd7b710f07da64c34f0d075 Mon Sep 17 00:00:00 2001 From: JunzhouLiu Date: Mon, 14 Dec 2020 15:31:35 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E8=B5=84=E6=BA=90=E7=BA=A6=E6=9D=9F=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Readme.md | 4 ++-- docker/example/custom-append.yml | 6 ++++++ docker/example/custom-overwrite.yml | 6 ++++++ docker/example/default.yml | 6 ++++++ docker/example/multi.yml | 6 ++++++ docker/example/use-tg-bot.yml | 6 ++++++ 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/docker/Readme.md b/docker/Readme.md index 26cb2033..a76c5842 100644 --- a/docker/Readme.md +++ b/docker/Readme.md @@ -60,8 +60,8 @@ jd_scripts ``` > 定时任务命之后,也就是 `>>` 符号之前加上 `|ts` 可在日志每一行前面显示时间,如下图: > ![image](https://user-images.githubusercontent.com/6993269/99031839-09e04b00-25b3-11eb-8e47-0b6515a282bb.png) -- 目录文件配置好之后在 `jd_scripts`目录执行 - `docker-compose up -d` 启动; +- 目录文件配置好之后在 `jd_scripts`目录执行。 + `docker-compose up -d` 启动(修改docker-compose.yml后需要使用此命令使更改生效); `docker-compose logs` 打印日志; `docker-compose pull` 更新镜像; `docker-compose stop` 停止容器; diff --git a/docker/example/custom-append.yml b/docker/example/custom-append.yml index f2618e40..492d501d 100644 --- a/docker/example/custom-append.yml +++ b/docker/example/custom-append.yml @@ -1,5 +1,11 @@ jd_scripts: image: akyakya/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M container_name: jd_scripts restart: always volumes: diff --git a/docker/example/custom-overwrite.yml b/docker/example/custom-overwrite.yml index 5099b9fd..3ffc7a6f 100644 --- a/docker/example/custom-overwrite.yml +++ b/docker/example/custom-overwrite.yml @@ -1,5 +1,11 @@ jd_scripts: image: akyakya/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M container_name: jd_scripts restart: always volumes: diff --git a/docker/example/default.yml b/docker/example/default.yml index bdc6c60b..e9782a3d 100644 --- a/docker/example/default.yml +++ b/docker/example/default.yml @@ -1,5 +1,11 @@ jd_scripts: image: akyakya/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M container_name: jd_scripts restart: always volumes: diff --git a/docker/example/multi.yml b/docker/example/multi.yml index 8b2faa59..bf7a6347 100644 --- a/docker/example/multi.yml +++ b/docker/example/multi.yml @@ -2,6 +2,12 @@ version: "3" services: jd_scripts1: #默认 image: akyakya/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过 0.2(单核的20%) + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M restart: always container_name: jd_scripts1 tty: true diff --git a/docker/example/use-tg-bot.yml b/docker/example/use-tg-bot.yml index 87068588..13a88d96 100644 --- a/docker/example/use-tg-bot.yml +++ b/docker/example/use-tg-bot.yml @@ -1,5 +1,11 @@ jd_scripts: image: akyakya/jd_scripts:supportbot + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M container_name: jd_scripts restart: always volumes: From 207e7a12b58522ab29b6168277a9cc269168b78a Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 15:54:44 +0800 Subject: [PATCH 19/21] =?UTF-8?q?=E6=9B=B4=E6=96=B0Surge=E7=9A=84Task?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=A8=A1=E5=9D=97=20=E5=9C=B0=E5=9D=80:=20ht?= =?UTF-8?q?tps://raw.githubusercontent.com/lxk0301/jd=5Fscripts/master/Sur?= =?UTF-8?q?ge/lxk0301=5FTask.sgmodule.sgmodule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QuantumultX/lxk0301_gallery.json | 10 +++--- Surge/lxk0301_Task.sgmodule.sgmodule | 50 +++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/QuantumultX/lxk0301_gallery.json b/QuantumultX/lxk0301_gallery.json index 16a04b15..1a10b310 100644 --- a/QuantumultX/lxk0301_gallery.json +++ b/QuantumultX/lxk0301_gallery.json @@ -22,12 +22,12 @@ "20 0,20 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js , tag=点点券 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png", "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_car.png", + "0 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", + "15 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", + "10 6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png", + "20 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_car.png", "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_kd.js, tag=京东快递签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_kd.png", - "10 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, tag=京东代属, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_ds.png", + "30 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, tag=京东代属, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_ds.png", "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_apple_live.js, tag=苹果抽奖机, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", "10-20/5 12 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_live_redrain.png", "15 17 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/backUp/xmSports.js, tag=小米运动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/xmyd.png" diff --git a/Surge/lxk0301_Task.sgmodule.sgmodule b/Surge/lxk0301_Task.sgmodule.sgmodule index 68fbcc78..74748baf 100644 --- a/Surge/lxk0301_Task.sgmodule.sgmodule +++ b/Surge/lxk0301_Task.sgmodule.sgmodule @@ -9,25 +9,57 @@ # Surge的Task脚本模块地址: https://raw.githubusercontent.com/lxk0301/jd_scripts/master/Surge/lxk0301_Task.sgmodule.sgmodule [Script] - +#东东农场 cron "5 6-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js,timeout=530, wake-system=1, tag=东东农场 +#东东萌宠 cron "20 7-19/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pet.js,timeout=530, wake-system=1, tag=东东萌宠 +#京东种豆得豆 cron "10 7-21/2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js,timeout=630, wake-system=1, tag=京东种豆得豆 +#宠汪汪 cron "15 */2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js,timeout=330, wake-system=1, tag=宠汪汪 +#宠汪汪喂食 cron "12 */1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js,timeout=30, wake-system=1, tag=宠汪汪喂食 -cron "0 0,6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js,timeout=420, wake-system=1, tag=宠汪汪偷好友积分与狗粮 -cron "1 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,timeout=30, wake-system=1, tag=宠汪汪积分兑换奖品 +#宠汪汪偷好友积分与狗粮 +cron "0 0,6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js,timeout=1420, wake-system=1, tag=宠汪汪偷好友积分与狗粮 +#宠汪汪积分兑换奖品 +cron "1 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,timeout=130, wake-system=1, tag=宠汪汪积分兑换奖品 +#京东天天加速 cron "8 */3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js,timeout=130, wake-system=1, tag=京东天天加速 +#京东摇钱树 cron "15 */5 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_moneyTree.js,timeout=130, wake-system=1, tag=京东摇钱树 +#摇京豆 cron "5 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_club_lottery.js, timeout=50, wake-system=1, tag=摇京豆 +#京小超 cron "11 1-23/5 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_superMarket.js,timeout=530, wake-system=1, tag=京小超 -cron "0 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_blueCoin.js,timeout=30, wake-system=1, tag=京小超领蓝币(兑换京豆) +京小超兑换奖品 +cron "0 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_blueCoin.js,timeout=130, wake-system=1, tag=京小超兑换奖品 +#取关京东店铺商品 cron "55 23 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_unsubscribe.js,timeout=250, wake-system=1, tag=取关京东店铺商品 -cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_shop.js,timeout=30, wake-system=1, tag=进店领豆 -# cron "1 0-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_818.js, timeout=150, wake-system=1, tag=京东手机狂欢城 -cron "15 10 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_run.js, timeout=30, wake-system=1, tag=宠汪汪邀请助力与赛跑助力 +#进店领豆 +cron "10 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_shop.js,timeout=130, wake-system=1, tag=进店领豆 +#宠汪汪邀请助力与赛跑助力 +cron "15 10 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_run.js, timeout=230, wake-system=1, tag=宠汪汪邀请助力与赛跑助力 +#京东全民开红包 cron "1 1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_redPacket.js, wake-system=1, tag=京东全民开红包 -# cron "0 0 0 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_xtg.js, timeout=550, wake-system=1, tag=京东星推官 +#京豆变动通知 cron "2 9 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_change.js, timeout=650, wake-system=1, tag=京豆变动通知 +#点点券 cron "20 0,20 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js, timeout=650, wake-system=1, tag=点点券 -# cron "20 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_collectProduceScore.js, wake-system=1, tag=京东全民营业领金币 +#京喜工厂 +cron "24 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, timeout=650, wake-system=1, tag=京喜工厂 +#东东工厂 +cron "40 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, timeout=650, wake-system=1, tag=东东工厂 +#十元街 +cron "40 8 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, timeout=650, wake-system=1, tag=十元街 +#京东代属(仅京东学生认证用户可用) +cron "30 8 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, timeout=650, wake-system=1, tag=京东代属 +#领京豆额外奖励 +cron "30 10 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_home.js, timeout=750, wake-system=1, tag=领京豆额外奖励 +#京东汽车 +cron "30 11 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_car.js, timeout=750, wake-system=1, tag=京东汽车 +#京东快递签到 +cron "20 11 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_kd.js, timeout=750, wake-system=1, tag=京东快递签到 +#京东直播 +cron "20 12 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, timeout=750, wake-system=1, tag=京东直播 +#秒杀红包雨 +cron "20 9 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, timeout=750, wake-system=1, tag=秒杀红包雨 From bb9a79c95864fdd459a565d771bf8ce1a863b24e Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 16:11:46 +0800 Subject: [PATCH 20/21] update --- Loon/lxk0301_LoonTask.conf | 6 +++--- QuantumultX/lxk0301_gallery.json | 2 +- Surge/lxk0301_Task.sgmodule.sgmodule | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Loon/lxk0301_LoonTask.conf b/Loon/lxk0301_LoonTask.conf index b1374a1e..d5daed2d 100644 --- a/Loon/lxk0301_LoonTask.conf +++ b/Loon/lxk0301_LoonTask.conf @@ -16,7 +16,7 @@ cron "10 7-19/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_ cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js,tag=京东种豆得豆 # 宠汪汪(主要是日常任务,不过里面也有喂食和领取三餐狗粮) -cron "15 */2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js,tag=宠汪汪 +cron "15 1,7,9,12,18,21 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js,tag=宠汪汪 # 宠汪汪喂食 cron "12 */1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js,tag=宠汪汪喂食 @@ -25,13 +25,13 @@ cron "12 */1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scr cron "0 0,6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js,tag=宠汪汪偷好友积分与狗粮 # 宠汪汪积分兑换奖品 -cron "1 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,tag=宠汪汪积分兑换奖品 +cron "0 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,tag=宠汪汪积分兑换奖品 # 京东天天加速 cron "8 */3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js,tag=京东天天加速 # 京东摇钱树 -cron "3 */3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_moneyTree.js,tag=京东摇钱树 +cron "3 */5 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_moneyTree.js,tag=京东摇钱树 # 京小超 cron "11 1-23/2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_superMarket.js,tag=京小超 diff --git a/QuantumultX/lxk0301_gallery.json b/QuantumultX/lxk0301_gallery.json index 1a10b310..c2a72005 100644 --- a/QuantumultX/lxk0301_gallery.json +++ b/QuantumultX/lxk0301_gallery.json @@ -5,7 +5,7 @@ "5 6-18/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js, tag=东东农场 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png", "20 7-19/6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pet.js, tag=东东萌宠 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png", "10 7-21/2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js, tag=京东种豆得豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png", - "15 */2 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js, tag=宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", + "15 1,7,9,12,18,21 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js, tag=宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", "12 */1 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js, tag=宠汪汪喂食 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", "0 0,6 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js, tag=宠汪汪偷好友积分与狗粮 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", "1 0,8,12,16 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js , tag=宠汪汪积分兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", diff --git a/Surge/lxk0301_Task.sgmodule.sgmodule b/Surge/lxk0301_Task.sgmodule.sgmodule index 74748baf..beb733d7 100644 --- a/Surge/lxk0301_Task.sgmodule.sgmodule +++ b/Surge/lxk0301_Task.sgmodule.sgmodule @@ -1,4 +1,4 @@ -#!name=lxk0301 iOS Tasks&Cookies Module +#!name=lxk0301 iOS Tasks Module #!desc=iOS Tasks 模块配置 #!system=ios @@ -10,19 +10,19 @@ [Script] #东东农场 -cron "5 6-18/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js,timeout=530, wake-system=1, tag=东东农场 +cron "40 8-18/5 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_fruit.js,timeout=530, wake-system=1, tag=东东农场 #东东萌宠 cron "20 7-19/6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_pet.js,timeout=530, wake-system=1, tag=东东萌宠 #京东种豆得豆 -cron "10 7-21/2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js,timeout=630, wake-system=1, tag=京东种豆得豆 +cron "50 7-21/2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_plantBean.js,timeout=630, wake-system=1, tag=京东种豆得豆 #宠汪汪 -cron "15 */2 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js,timeout=330, wake-system=1, tag=宠汪汪 -#宠汪汪喂食 +cron "15 1,7,9,12,18,21 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy.js,timeout=330, wake-system=1, tag=宠汪汪 +#宠汪汪喂食(仅喂食) cron "12 */1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_feedPets.js,timeout=30, wake-system=1, tag=宠汪汪喂食 #宠汪汪偷好友积分与狗粮 cron "0 0,6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_steal.js,timeout=1420, wake-system=1, tag=宠汪汪偷好友积分与狗粮 #宠汪汪积分兑换奖品 -cron "1 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,timeout=130, wake-system=1, tag=宠汪汪积分兑换奖品 +cron "0 0,8,12,16 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_joy_reward.js,timeout=130, wake-system=1, tag=宠汪汪积分兑换奖品 #京东天天加速 cron "8 */3 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_speed.js,timeout=130, wake-system=1, tag=京东天天加速 #京东摇钱树 @@ -44,7 +44,7 @@ cron "1 1 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_script #京豆变动通知 cron "2 9 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_change.js, timeout=650, wake-system=1, tag=京豆变动通知 #点点券 -cron "20 0,20 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js, timeout=650, wake-system=1, tag=点点券 +cron "30 0,20 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js, timeout=650, wake-system=1, tag=点点券 #京喜工厂 cron "24 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, timeout=650, wake-system=1, tag=京喜工厂 #东东工厂 From 5b33a2e5ba549d9a480e7cd2b3273870c28f806d Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Mon, 14 Dec 2020 16:22:36 +0800 Subject: [PATCH 21/21] update --- Loon/lxk0301_LoonTask.conf | 2 +- QuantumultX/lxk0301_gallery.json | 2 ++ Surge/lxk0301_Task.sgmodule.sgmodule | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Loon/lxk0301_LoonTask.conf b/Loon/lxk0301_LoonTask.conf index d5daed2d..6cd3ab37 100644 --- a/Loon/lxk0301_LoonTask.conf +++ b/Loon/lxk0301_LoonTask.conf @@ -111,5 +111,5 @@ cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scrip # 京东直播 cron "10-20/5 12 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播 -# 金融 +# 金融打卡领年终奖 cron "10 6 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jr_sign.js, tag=金融打卡领年终奖 diff --git a/QuantumultX/lxk0301_gallery.json b/QuantumultX/lxk0301_gallery.json index c2a72005..112edb35 100644 --- a/QuantumultX/lxk0301_gallery.json +++ b/QuantumultX/lxk0301_gallery.json @@ -21,6 +21,7 @@ "2 9 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_bean_change.js , tag=京豆变动通知 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", "20 0,20 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_necklace.js , tag=点点券 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png", + "13 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_small_home.js, tag=东东小窝, img-url=https://github.com/58xinian/icon/raw/master/ddxw.png", "10 * * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png", "0 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", "15 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, tag=秒杀红包雨, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", @@ -30,6 +31,7 @@ "30 7 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ds.js, tag=京东代属, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_ds.png", "10 0 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_apple_live.js, tag=苹果抽奖机, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", "10-20/5 12 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, tag=京东直播, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_live_redrain.png", + "10 12 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jr_sign.js, tag=京东金融打卡, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", "15 17 * * * https://raw.githubusercontent.com/lxk0301/jd_scripts/master/backUp/xmSports.js, tag=小米运动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/xmyd.png" ] } diff --git a/Surge/lxk0301_Task.sgmodule.sgmodule b/Surge/lxk0301_Task.sgmodule.sgmodule index beb733d7..92260c55 100644 --- a/Surge/lxk0301_Task.sgmodule.sgmodule +++ b/Surge/lxk0301_Task.sgmodule.sgmodule @@ -49,6 +49,8 @@ cron "30 0,20 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_sc cron "24 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_dreamFactory.js, timeout=650, wake-system=1, tag=京喜工厂 #东东工厂 cron "40 * * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_jdfactory.js, timeout=650, wake-system=1, tag=东东工厂 +#东东小窝 +cron "10 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_small_home.js, timeout=650, wake-system=1, tag=东东小窝 #十元街 cron "40 8 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_syj.js, timeout=650, wake-system=1, tag=十元街 #京东代属(仅京东学生认证用户可用) @@ -63,3 +65,5 @@ cron "20 11 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scri cron "20 12 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_live.js, timeout=750, wake-system=1, tag=京东直播 #秒杀红包雨 cron "20 9 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jd_ms_redrain.js, timeout=750, wake-system=1, tag=秒杀红包雨 +#金融打卡领年终奖 +cron "30 7 * * *" script-path=https://raw.githubusercontent.com/lxk0301/jd_scripts/master/jr_sign.js, timeout=750, wake-system=1, tag=金融打卡领年终奖