This commit is contained in:
Faker 2022-04-18 11:07:27 +08:00
parent 3119747b49
commit 4f1a162968
24 changed files with 1996 additions and 2516 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -97,5 +97,5 @@ let envName = process.env.ShareCodeEnvName
if (nameConfig && envName) {
SetShareCodesEnv(nameConfig, envName)
} else {
console.debug(`OKYYDS 友情提示:您的脚本正常运行中`)
console.debug(`faker 友情提示:您的脚本正常运行中`)
}

View File

@ -1,3 +1,12 @@
/*
* 详细版京东京豆统计
* 默认不发送通知
[task_local]
#京豆详情统计
20 22 * * * jd_bean_info.js, tag=京豆详情统计, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
* */
const $ = new Env('京豆详情统计');
const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
@ -20,6 +29,7 @@ if ($.isNode()) {
$.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"});
return;
}
console.log(`\n正在查询今天所有账号的京豆收入......`);
for (let i = 0; i < cookiesArr.length; i++) {
if (cookiesArr[i]) {
cookie = cookiesArr[i];
@ -36,7 +46,7 @@ if ($.isNode()) {
$.balance = 0;
$.expiredBalance = 0;
await TotalBean();
console.log(`\n********开始【京东账号${$.index}${$.nickName || $.UserName}******\n`);
//console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`);
if (!$.isLogin) {
$.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"});
@ -51,8 +61,9 @@ if ($.isNode()) {
}
}
allMessage += `\n今日全部账号收入:${allBean}个京豆 🐶\n`
console.log(`${allMessage}`)
if ($.isNode() && allMessage) {
await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` })
//await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` })
}
})()
.catch((e) => {
@ -64,7 +75,7 @@ if ($.isNode()) {
async function showMsg() {
if ($.errorMsg) return
allMessage += `\n【账号${$.index}${$.nickName || $.UserName} 京豆详情统计】\n\n`;
allMessage += `今日收入${$.todayIncomeBean}京豆 🐶\n`
allMessage += `今日收入总计${$.todayIncomeBean}京豆 🐶\n`
allBean = allBean + parseInt($.todayIncomeBean)
for (let key of myMap.keys()) {
allMessage += key + ' ---> ' +myMap.get(key)+'京豆 🐶\n'

33
jd_captian_flp.js Executable file

File diff suppressed because one or more lines are too long

33
jd_captian_mn.js Executable file

File diff suppressed because one or more lines are too long

33
jd_captian_xay.js Executable file

File diff suppressed because one or more lines are too long

View File

@ -20,7 +20,7 @@ d、 30000名之外0京豆
cron "1 0,6,12,18 * * *" script-path=jd_carnivalcity.js, tag=京东手机狂欢城
====================Surge================
京东手机狂欢城 = type=cron,cronexp=1 0,6,12,18 * * *,wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_carnivalcity.js
京东手机狂欢城 = type=cron,cronexp=1 0,6,12,18 * * *,wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_carnivalcity.js
============小火箭=========
京东手机狂欢城 = type=cron,script-path=jd_carnivalcity.js, cronexpr="1 0,6,12,18 * * *", timeout=3600, enable=true

View File

@ -5,14 +5,14 @@
============Quantumultx===============
[task_local]
#财富岛兑换红包
50 * * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd.hb.js, tag=财富岛兑换红包, enabled=true
50 * * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd.hb.js, tag=财富岛兑换红包, enabled=true
===========Loon============
[Script]
cron "50 * * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd.hb.js,tag=财富岛兑换红包
cron "50 * * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd.hb.js,tag=财富岛兑换红包
============Surge=============
财富岛兑换红包 = type=cron,cronexp="50 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd.hb.js
财富岛兑换红包 = type=cron,cronexp="50 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd.hb.js
===========小火箭========
财富岛兑换红包 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd.hb.jss, cronexpr="50 * * * *", timeout=3600, enable=true
财富岛兑换红包 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd.hb.jss, cronexpr="50 * * * *", timeout=3600, enable=true
*/
const $ = new Env('财富岛兑换红包');
CryptoScripts()

View File

@ -8,17 +8,17 @@
============Quantumultx===============
[task_local]
#京喜财富岛合成珍珠
30 0-23/2 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd_pearl.js, tag=京喜财富岛合成珍珠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true
30 0-23/2 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd_pearl.js, tag=京喜财富岛合成珍珠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true
================Loon==============
[Script]
cron "30 0-23/2 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd_pearl.js,tag=京喜财富岛合成珍珠
cron "30 0-23/2 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd_pearl.js,tag=京喜财富岛合成珍珠
===============Surge=================
京喜财富岛合成珍珠 = type=cron,cronexp="30 0-23/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd_pearl.js
京喜财富岛合成珍珠 = type=cron,cronexp="30 0-23/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd_pearl.js
============小火箭=========
京喜财富岛合成珍珠 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_cfd_pearl.js, cronexpr="30 0-23/2 * * *", timeout=3600, enable=true
京喜财富岛合成珍珠 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_cfd_pearl.js, cronexpr="30 0-23/2 * * *", timeout=3600, enable=true
*/

View File

@ -26,22 +26,30 @@ let num=0
let shopname=''
const token = [
"4BF0331BCB845ABC79145753E605E9C3",
"490047103854B8B5E17D3D76C2C65D1D",
"F4132FED0919E26A040981E77C3FD009",
"3068C74A35718BF761F8E10F52824696",
"AF994FA00C2086F08849D5FB7122E79F",
"97CE35E23187041CD746CA5B4E7F4B38",
"7D8DF37F588D261C59994A1C6F472ABA",
"07D72B6BEC5DDC95E475D019FA89F39D",
"0950F5FA76B0EC70FD8E3CA4E0B9FABF",
"EE60F07CE497C8C2915262C4A681016A",
"E08EA466C50A0C894FE750FB54B5B1B6",
"E20BD5091D8F70B4649D529A09183F04",
"88ECFB91288FD2DE93DDBDDAA9409D8E",
"1B2F8250713AD30F335B092B70A4DBF5",
"65761481817B9111E49E939888419250",
"6441D5406FD81386379AED19FA122DBE",
"642395217049DBC4F56F105B3FBA0633",
"8E3E6081738C9C30446C20F347516649",
"57B5F1912B8A5F7C3913EEB0CFA9130B",
"C5F5FF51E040B2415A435D5BFDA15348",
"D5D7E1A6A35DD6DF590F1D26183C0D40",
"31D76EB23737B3BF03EBDCC06EA2B9EC",
"3705013F73CEEA8CB2311DB6607046FE",
"50EFAF0B1C9520C4AC3FFBFE6B9C13F8",
"903DFFB65088484F7743B5F437BB1649",
"3FCA9C124FC3A1D02D4191696590DC92"
"3FCA9C124FC3A1D02D4191696590DC92",
"41AFADC9C4AF8807DEC071FE688596FB",
"CE544106AB7A796944BC56B403ED02A1",
"62F921549D1B7244101CCC5AFBC2E952",
"A3B3E3A15E365F2F5709618D27C9DDCD",
"FE30AB00038CFFEF00DA9E9B8E932721",
"F0C24D7588D90922393B423C6623F31A",
"DFD953F3D54DAE2721568457FE12068C",
"3DEACB6A49D5954B134A6C4DE73FEF42",
"634E143046CCD9EBAA298A70B7672A63"
]
if ($.isNode()) {

View File

@ -14,17 +14,17 @@ byjiulan
============Quantumultx===============
[task_local]
#京东评价
37 15 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_evaluation.js, tag=京东评价, enabled=true
37 15 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_evaluation.js, tag=京东评价, enabled=true
================Loon==============
[Script]
cron "37 15 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_evaluation.js,tag=京东评价
cron "37 15 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_evaluation.js,tag=京东评价
===============Surge=================
京东评价 = type=cron,cronexp="37 15 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_evaluation.js
京东评价 = type=cron,cronexp="37 15 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_evaluation.js
============小火箭=========
京东评价 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_evaluation.js, cronexpr="37 15 * * *", timeout=3600, enable=true
京东评价 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_evaluation.js, cronexpr="37 15 * * *", timeout=3600, enable=true
*/
const $ = new Env('京东评价');
const notify = $.isNode() ? require('./sendNotify') : '';

View File

@ -7,17 +7,17 @@
===================quantumultx================
[task_local]
#东东健康社区
5 4,14 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
5 4,14 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_health_help.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
=====================Loon================
[Script]
cron "5 4,14 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区
cron "5 4,14 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_health_help.js, tag=东东健康社区
====================Surge================
东东健康社区 = type=cron,cronexp="5 4,14 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js
东东健康社区 = type=cron,cronexp="5 4,14 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_health_help.js
============小火箭=========
东东健康社区 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, cronexpr="5 4,14 * * *", timeout=3600, enable=true
东东健康社区 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_health_help.js, cronexpr="5 4,14 * * *", timeout=3600, enable=true
*/
const $ = new Env("东东健康社区内部互助");
const jdCookieNode = $.isNode() ? require("./jdCookie.js") : "";

View File

@ -6,17 +6,17 @@
=================================Quantumultx=========================
[task_local]
#京东特价翻翻乐
20 0-23/3 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_jdtj_winner.js, tag=京东特价翻翻乐, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true
20 0-23/3 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_jdtj_winner.js, tag=京东特价翻翻乐, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true
================Loon==============
[Script]
cron "20 0-23/3 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_jdtj_winner.js,tag=京东特价翻翻乐
cron "20 0-23/3 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_jdtj_winner.js,tag=京东特价翻翻乐
===============Surge=================
京东特价翻翻乐 = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_jdtj_winner.js
京东特价翻翻乐 = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_jdtj_winner.js
============小火箭=========
京东特价翻翻乐 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_jdtj_winner.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true
京东特价翻翻乐 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_jdtj_winner.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true
*/
const $ = new Env('京东特价翻翻乐');
const notify = $.isNode() ? require('./sendNotify') : '';

549
jd_jin_tie.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,690 +0,0 @@
/*
领金贴(只做签到以及互助任务里面的部分任务) Fixed By X1a0He
Last Modified time: 2021-09-04 22:25:00
Last Modified By X1a0He
活动入口京东APP首页-领金贴[活动地址](https://active.jd.com/forever/cashback/index/)
*/
const $ = new Env('领金贴');
const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
//IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [], cookie = '', message, allMessage = '';
if($.isNode()){
Object.keys(jdCookieNode).forEach((item) => {
cookiesArr.push(jdCookieNode[item]);
});
if(process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {};
} else {
cookiesArr = [
$.getdata("CookieJD"),
$.getdata("CookieJD2"),
...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item);
}
!(async() => {
if(!cookiesArr[0]){
$.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" });
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/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" });
if($.isNode()){
await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);
}
continue
}
await main();
}
}
})().catch((e) => {
$.log('', `${$.name}, 失败! 原因: ${e}!`, '')
}).finally(() => {
$.done();
})
async function main(){
try{
await channelUserSignInfo_xh();
await queryMission_xh();
await channelUserSubsidyInfo_xh();
} catch(e){
$.logErr(e)
}
}
function channelUserSignInfo_xh(){
return new Promise((resolve) => {
const body = JSON.stringify({
"source": "JD_APP",
"channel": "scljticon",
"channelLv": "scljticon",
"apiVersion": "4.0.0",
"riskDeviceParam": `{\"macAddress\":\"\",\"imei\":\"\",\"eid\":\"\",\"openUUID\":\"\",\"uuid\":\"\",\"traceIp\":\"\",\"os\":\"\",\"osVersion\":\"\",\"appId\":\"\",\"clientVersion\":\"\",\"resolution\":\"\",\"channelInfo\":\"\",\"networkType\":\"\",\"startNo\":42,\"openid\":\"\",\"token\":\"\",\"sid\":\"\",\"terminalType\":\"\",\"longtitude\":\"\",\"latitude\":\"\",\"securityData\":\"\",\"jscContent\":\"\",\"fnHttpHead\":\"\",\"receiveRequestTime\":\"\",\"port\":80,\"appType\":\"\",\"deviceType\":\"\",\"fp\":\"\",\"ip\":\"\",\"idfa\":\"\",\"sdkToken\":\"\"}`,
"others": { "shareId": "" }
})
const options = taskUrl_xh('channelUserSignInfo', body, 'jrm');
$.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.resultCode === 0){
if(data.resultData.code === '000'){
$.keepSigned = 0;
let state = false;
for(let i in data.resultData.data.signDetail){
if(data.resultData.data.signDetail[i].signed) $.keepSigned += 1
if(data.resultData.data.dayId === data.resultData.data.signDetail[i].id){
state = data.resultData.data.signDetail[i].signed
console.log('获取签到状态成功', state ? '今日已签到' : '今日未签到', '连续签到', $.keepSigned, '天\n')
}
}
if(!state) await channelSignInSubsidy_xh()
} else {
console.log('获取签到状态失败', data.resultData.msg)
}
} else {
console.log('获取签到状态失败', data.resultMsg)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function channelSignInSubsidy_xh(){
return new Promise((resolve) => {
const body = JSON.stringify({
"source": "JD_APP",
"channel": "scljticon",
"channelLv": "scljticon",
"apiVersion": "4.0.0",
"riskDeviceParam": `{\"macAddress\":\"\",\"imei\":\"\",\"eid\":\"\",\"openUUID\":\"\",\"uuid\":\"\",\"traceIp\":\"\",\"os\":\"\",\"osVersion\":\"\",\"appId\":\"\",\"clientVersion\":\"\",\"resolution\":\"\",\"channelInfo\":\"\",\"networkType\":\"\",\"startNo\":42,\"openid\":\"\",\"token\":\"\",\"sid\":\"\",\"terminalType\":\"\",\"longtitude\":\"\",\"latitude\":\"\",\"securityData\":\"\",\"jscContent\":\"\",\"fnHttpHead\":\"\",\"receiveRequestTime\":\"\",\"port\":80,\"appType\":\"\",\"deviceType\":\"\",\"fp\":\"\",\"ip\":\"\",\"idfa\":\"\",\"sdkToken\":\"\"}`,
"others": { "shareId": "" }
})
const options = taskUrl_xh('channelSignInSubsidy', body, 'jrm');
$.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.resultCode === 0){
if(data.resultData.code === '000'){
if(data.resultData.data.signSuccess){
console.log(`签到成功,获得 0.0${data.resultData.data.rewardAmount}`)
}
} else if(data.resultData.code === '001'){
console.log(`签到失败,可能今天已签到`)
} else {
// console.log(data)
console.log("签到失败")
}
} else {
// console.log(data)
console.log("签到失败")
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function queryMission_xh(){
return new Promise((resolve) => {
$.taskData = [];
const options = {
url: "https://ms.jr.jd.com/gw/generic/mission/h5/m/queryMission?reqData=%7B%22channelCode%22:%22SUBSIDY2%22,%22riskDeviceParam%22:%22%7B%5C%22eid%5C%22:%5C%22%5C%22,%5C%22fp%5C%22:%5C%22%5C%22,%5C%22sdkToken%5C%22:%5C%22%5C%22,%5C%22token%5C%22:%5C%22%5C%22,%5C%22undefined%5C%22:%5C%22%5C%22%7D%22,%22channel%22:%22%22%7D",
headers: {
'Accept': `*/*`,
'Origin': `https://u.jr.jd.com`,
'Accept-Encoding': `gzip, deflate, br`,
'Cookie': cookie,
'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`,
'Host': `ms.jr.jd.com`,
'Connection': `keep-alive`,
"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"),
'Referer': `https://u.jr.jd.com/`,
'Accept-Language': `zh-cn`
}
}
$.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.resultCode === 0){
if(data.resultData.code === '0000'){
console.log('互动任务获取成功')
$.taskData = data.resultData.data;
for(let task of $.taskData){
if(task.missionId !== 4648){
console.log(`\n任务id${task.missionId} 任务状态:${task.status}`)
if(task.status === -1){
console.log(`正在做任务:${task.missionId}`)
await receiveMission_xh(task.missionId)
await queryMissionReceiveAfterStatus_xh(task.missionId)
} else if(task.status === 0){
await queryMissionReceiveAfterStatus_xh(task.missionId)
} else if(task.status === 1){
console.log(`正在领取任务:${task.missionId} 奖励`)
await awardMission_xh(task.missionId)
} else if(task.status === 2){
console.log(`任务id${task.missionId} 已完成`)
}
}
}
} else {
console.log('获取互动任务失败', data)
}
} else {
console.log('获取互动任务失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function receiveMission_xh(missionId){
return new Promise((resolve) => {
const body = JSON.stringify({
"missionId": `${missionId}`,
"channelCode": "SUBSIDY2",
"timeStamp": new Date().toString(),
"env": "JDAPP"
})
const options = taskUrl_xh('receiveMission', body);
$.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.resultCode === 0){
if(data.resultData.code === '0000'){
if(data.resultData.success){
console.log('领取任务成功')
}
} else if(data.resultData.code === '0005'){
console.log('已经接取过该任务')
} else {
console.log('领取任务失败', data)
}
} else {
console.log('领取任务失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function queryMissionReceiveAfterStatus_xh(taskId){
return new Promise((resolve) => {
const body = JSON.stringify({ "missionId": `${taskId}` })
const options = taskUrl_xh('queryMissionReceiveAfterStatus', body);
$.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.resultCode === 0){
if(data.resultData.code === '0000'){
console.log('正在浏览等待10s')
await $.wait(10000)
await finishReadMission_xh(`${taskId}`)
} else if(data.resultData.code === '0003'){
console.log('任务浏览失败', "非法参数")
} else if(data.resultData.code === '0001'){
console.log('任务浏览失败', "状态不正确")
} else {
console.log("任务浏览失败", data)
}
} else {
console.log('任务浏览失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function finishReadMission_xh(missionId){
return new Promise((resolve) => {
const body = JSON.stringify({
"missionId": `${missionId}`,
"readTime": 10
})
const options = taskUrl_xh('finishReadMission', body);
$.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.resultCode === 0){
if(data.resultData.code === '0000'){
if(data.resultData.success){
console.log('任务执行成功')
await awardMission_xh(missionId)
}
} else if(data.resultData.code === '0001' || data.resultData.code === '0004'){
console.log('状态不正确')
} else {
console.log('任务执行失败', data)
}
} else {
console.log('任务执行失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function awardMission_xh(missionId){
return new Promise((resolve) => {
const body = JSON.stringify({
"missionId": `${missionId}`,
"channelCode": "SUBSIDY2",
"timeStamp": new Date().toString(),
"env": "JDAPP"
})
const options = taskUrl_xh('awardMission', body);
$.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.resultCode === 0){
if(data.resultData.code === '0000'){
if(data.resultData.success){
console.log('领取金贴成功')
}
} else if(data.resultData.code === '0004'){
console.log('不满足领奖条件,可能已经完成')
} else {
console.log('领取金贴失败', data)
}
} else {
console.log('领取金贴失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function channelUserSubsidyInfo_xh(){
return new Promise((resolve) => {
const body = JSON.stringify({
"source": "JD_APP",
"channel": "scljticon",
"channelLv": "scljticon",
"apiVersion": "4.0.0",
"riskDeviceParam": `{\"macAddress\":\"\",\"imei\":\"\",\"eid\":\"\",\"openUUID\":\"\",\"uuid\":\"\",\"traceIp\":\"\",\"os\":\"\",\"osVersion\":\"\",\"appId\":\"\",\"clientVersion\":\"\",\"resolution\":\"\",\"channelInfo\":\"\",\"networkType\":\"\",\"startNo\":42,\"openid\":\"\",\"token\":\"\",\"sid\":\"\",\"terminalType\":\"\",\"longtitude\":\"\",\"latitude\":\"\",\"securityData\":\"\",\"jscContent\":\"\",\"fnHttpHead\":\"\",\"receiveRequestTime\":\"\",\"port\":80,\"appType\":\"\",\"deviceType\":\"\",\"fp\":\"\",\"ip\":\"\",\"idfa\":\"\",\"sdkToken\":\"\"}`,
"others": { "shareId": "" }
})
const options = taskUrl_xh('channelUserSubsidyInfo', body, 'jrm');
$.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.resultCode === 0){
if(data.resultData.code === '000'){
console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 当前总金贴:${data.resultData.data.availableAmount}`)
} else {
console.log('获取当前总金贴失败', data)
}
} else {
console.log('获取当前总金贴失败', data)
}
}
} catch(e){
$.logErr(e, resp);
} finally{
resolve(data);
}
})
})
}
function taskUrl_xh(function_id, body, type = 'mission'){
return {
url: `https://ms.jr.jd.com/gw/generic/${type}/h5/m/${function_id}?reqData=${encodeURIComponent(body)}`,
headers: {
'Accept': `*/*`,
'Origin': `https://u.jr.jd.com`,
'Accept-Encoding': `gzip, deflate, br`,
'Cookie': cookie,
'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`,
'Host': `ms.jr.jd.com`,
'Connection': `keep-alive`,
"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"),
'Referer': `https://u.jr.jd.com/`,
'Accept-Language': `zh-cn`
}
}
}
function TotalBean(){
return new Promise(async resolve => {
const options = {
url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion",
headers: {
Host: "me-api.jd.com",
Accept: "*/*",
Connection: "keep-alive",
Cookie: cookie,
"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"),
"Accept-Language": "zh-cn",
"Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&",
"Accept-Encoding": "gzip, deflate, br"
}
}
$.get(options, (err, resp, data) => {
try{
if(err){
$.logErr(err)
} else {
if(data){
data = JSON.parse(data);
if(data['retcode'] === "1001"){
$.isLogin = false; //cookie过期
return;
}
if(data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")){
$.nickName = data.data.userInfo.baseInfo.nickname;
}
} else {
$.log('京东服务器返回空数据');
}
}
} catch(e){
$.logErr(e)
} finally{
resolve();
}
})
})
}
// 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("", `🔔${this.name}, 开始!`)}
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("@"), n = {
url: `http://${h}/v1/scripting/evaluate`,
body: { script_text: t, mock_type: "cron", timeout: r },
headers: { "X-Key": o, Accept: "*/*" }
};
this.post(n, (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, e = null){
const s = e ? new Date(e) : new Date;
let i = {
"M+": s.getMonth() + 1,
"d+": s.getDate(),
"H+": s.getHours(),
"m+": s.getMinutes(),
"s+": s.getSeconds(),
"q+": Math.floor((s.getMonth() + 3) / 3),
S: s.getMilliseconds()
};
/(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length)));
for(let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).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 = ["", "==============📣系统通知📣=============="];
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("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t)
}
wait(t){return new Promise(e => setTimeout(e, t))}
done(t = {}){
const e = (new Date).getTime(), s = (e - this.startTime) / 1e3;
this.log("", `🔔${this.name}, 结束! 🕛 ${s}`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t)
}
}(t, e)
}

View File

@ -49,7 +49,6 @@ $.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认开启` : `关
const JD_API_HOST = `https://api.m.jd.com/client.action`;
message = ""
!(async () => {
$.user_agent = require('./USER_AGENTS').USER_AGENT
if (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {
"open-url": "https://bean.m.jd.com/"
@ -68,11 +67,13 @@ message = ""
// }
cookie = cookiesArr[i];
if (cookie) {
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
$.index = i + 1;
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]);
$.index = i + 1;
$.isLogin = true;
$.nickName = '';
$.maxJoyCount = 10
$.maxJoyCount = 10;
$.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`
await TotalBean();
if (!$.isLogin) {
$.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {
@ -505,7 +506,7 @@ function taskPostClientActionUrl(body, functionId) {
url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`,
body: body,
headers: {
'User-Agent': $.user_agent,
'User-Agent': $.UA,
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'api.m.jd.com',
'Origin': 'https://joypark.jd.com',
@ -520,7 +521,7 @@ function taskGetClientActionUrl(body, functionId) {
url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`,
// body: body,
headers: {
'User-Agent': $.user_agent,
'User-Agent': $.UA,
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'api.m.jd.com',
'Origin': 'https://joypark.jd.com',
@ -542,7 +543,7 @@ function TotalBean() {
"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_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1"
"User-Agent": $.UA
}
}
$.post(options, (err, resp, data) => {
@ -574,7 +575,13 @@ function TotalBean() {
})
})
}
function randomString(e) {
e = e || 32;
let t = "abcdef0123456789", a = t.length, n = "";
for (i = 0; i < e; i++)
n += t.charAt(Math.floor(Math.random() * a));
return n
}
function jsonParse(str) {
if (typeof str == "string") {
try {

View File

@ -53,7 +53,9 @@ message = ""
$.index = i + 1;
$.isLogin = true;
$.nickName = '';
$.openIndex = 0
$.openIndex = 0;
$.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`
console.log(`\n******开始【京东账号${$.index}${$.nickName || $.UserName}*********\n`);
// if ($.isNode()) {
// if (process.env.HELP_JOYPARK && process.env.HELP_JOYPARK == "false") {
@ -66,7 +68,7 @@ message = ""
// $.log("你不是新用户!跳过开工位助力\n");
// break
// } else if (resp.data && resp.data.helpState && resp.data.helpState === 2) {
// $.log(`他的工位已全部开完啦!\n`);
// $.log(`他的工位已全部开完啦!\n`);
// $.openIndex++
// } else {
// $.log("开工位失败!\n");
@ -367,7 +369,7 @@ function taskPostClientActionUrl(body, functionId) {
url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`,
body: body,
headers: {
'User-Agent': 'jdltapp;iPhone;3.5.6;14.6;eac3e15e91fd380664fc7c788e8ab6a07805646d;network/4g;ADID/8F6CAEEA-5BF7-4F7E-86C3-A641C19CA832;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/1995295948;hasOCPay/0;appBuild/1070;supportBestPay/0;pv/41.26;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/eac3e15e91fd380664fc7c788e8ab6a07805646d|112;jdv/0|kong|t_500509960_|jingfen|bb9c79e4c4174521873879a27a707da4|1625071927291|1625071930;adk/;app_device/IOS;pap/JA2020_3112531|3.5.6|IOS 14.6;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': $.UA,
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'api.m.jd.com',
'Origin': 'https://joypark.jd.com',
@ -376,7 +378,13 @@ function taskPostClientActionUrl(body, functionId) {
}
}
}
function randomString(e) {
e = e || 32;
let t = "abcdef0123456789", a = t.length, n = "";
for (i = 0; i < e; i++)
n += t.charAt(Math.floor(Math.random() * a));
return n
}
function jsonParse(str) {
if (typeof str == "string") {
try {

View File

@ -6,17 +6,17 @@ JoyJd任务脚本
============Quantumultx===============
[task_local]
#JoyJd任务脚本
5 2,18 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, tag=JoyJd任务脚本, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
5 2,18 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_joyjd_open.js, tag=JoyJd任务脚本, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
================Loon==============
[Script]
cron "5 2,18 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js,tag=JoyJd任务脚本
cron "5 2,18 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_joyjd_open.js,tag=JoyJd任务脚本
===============Surge=================
JoyJd任务脚本 = type=cron,cronexp="5 2,18 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js
JoyJd任务脚本 = type=cron,cronexp="5 2,18 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_joyjd_open.js
============小火箭=========
JoyJd任务脚本 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, cronexpr="5 2,18 * * *", timeout=3600, enable=true
JoyJd任务脚本 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_joyjd_open.js, cronexpr="5 2,18 * * *", timeout=3600, enable=true
*/

View File

@ -10,17 +10,17 @@
=====================================Quantumult X=================================
[task_local]
1 7-21/2 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
1 7-21/2 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
=====================================Loon================================
[Script]
cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js,tag=京东种豆得豆
cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean.js,tag=京东种豆得豆
======================================Surge==========================
京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js
京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean.js
====================================小火箭=============================
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true
*/
const $ = new Env('种豆得豆');

View File

@ -10,17 +10,17 @@
=====================================Quantumult X=================================
[task_local]
40 4,17 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
40 4,17 * * * https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean_help.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
=====================================Loon================================
[Script]
cron "40 4,17 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js,tag=京东种豆得豆
cron "40 4,17 * * *" script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean_help.js,tag=京东种豆得豆
======================================Surge==========================
京东种豆得豆 = type=cron,cronexp="40 4,17 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js
京东种豆得豆 = type=cron,cronexp="40 4,17 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean_help.js
====================================小火箭=============================
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, cronexpr="40 4,17 * * *", timeout=3600, enable=true
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/shufflewzc/faker2/main/jd_plantBean_help.js, cronexpr="40 4,17 * * *", timeout=3600, enable=true
*/
const $ = new Env('种豆得豆内部互助');

579
jd_speed_signfree.js Normal file
View File

@ -0,0 +1,579 @@
/*
入口>京东极速版>首页>签到免单
京东极速版,先下单,第二天开始签到
18 8,20 * * * jd_speed_signfree.js 签到免单
*/
const $ = new Env('京东极速版签到免单');
const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
const UA = $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")
//IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [],
cookie,
msg = []
const activityId = 'PiuLvM8vamONsWzC0wqBGQ'
if ($.isNode()) {
console.log('\n入口>京东极速版>首页>签到免单')
console.log('京东极速版,先下单,第二天开始签到')
console.log('请自行测试是否有效!!!')
Object.keys(jdCookieNode).forEach((item) => {
cookiesArr.push(jdCookieNode[item])
})
if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {};
} else {
cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item);
}
const JD_API_HOST = 'https://api.m.jd.com/';
!(async () => {
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;
$.nickName = '';
message = '';
console.log(`\n******开始【京东账号${$.index}${$.nickName || $.UserName}*********\n`);
msg.push(($.nickName || $.UserName) + ':')
first_flag = true
await sign_all()
}
}
if (msg.length) {
console.log('有消息,推送消息')
await notify.sendNotify($.name, msg.join('\n'))
} else {
console.error('无消息,推送错误')
await notify.sendNotify($.name + '错误!!', "无消息可推送!!")
}
})()
.catch((e) => {
$.log('', `${$.name}, 失败! 原因: ${e}!`, '')
notify.sendNotify($.name + '异常!!', msg.join('\n') + '\n' + e)
})
.finally(() => {
$.msg($.name, '', `结束`);
$.done();
})
async function sign_all() {
await query()
if (!$.signFreeOrderInfoList){
return
}
await $.wait(3000)
for (const order of $.signFreeOrderInfoList) {
// console.debug('now:', order)
$.productName = order.productName
await sign(order.orderId)
await $.wait(3000)
}
await $.wait(3000)
await query()
await $.wait(3000)
for (const order of $.signFreeOrderInfoList) {
// console.debug('2nd now:', order)
if (order.needSignDays == order.hasSignDays) {
console.log(order.productName, '可提现,执行提现')
$.productName = order.productName
await cash(order.orderId)
await $.wait(3000)
}
}
}
function query() {
return new Promise(resolve => {
$.get(taskGetUrl("signFreeHome", { "linkId": activityId }), async (err, resp, data) => {
try {
if (err) {
console.error(`${JSON.stringify(err)}`)
} else {
// console.debug('query:', data)
data = JSON.parse(data)
$.signFreeOrderInfoList = data.data.signFreeOrderInfoList
if (data.success == true) {
if (!data.data.signFreeOrderInfoList) {
console.log("没有需要签到的商品,请到京东极速版[签到免单]购买商品");
msg.push("没有需要签到的商品,请到京东极速版[签到免单]购买商品")
} else {
$.signFreeOrderInfoList = data.data.signFreeOrderInfoList
if (first_flag) {
first_flag = false
console.log("脚本也许随时失效,请注意");
msg.push("脚本也许随时失效,请注意")
if (data.data.risk == false) {
console.log("风控用户,可能有异常");
msg.push("风控用户,可能有异常")
}
}
}
}else{
console.error("失败");
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
})
}
function sign(orderId) {
return new Promise(resolve => {
// console.debug('sign orderId:', orderId)
$.post(taskPostUrl("signFreeSignIn", { "linkId": activityId, "orderId": orderId }), async (err, resp, data) => {
try {
if (err) {
console.error(`${JSON.stringify(err)}`)
} else {
// console.debug('sign:', data)
data = JSON.parse(data)
let msg_temp
if (data.success) {
msg_temp = $.productName + ' 签到成功'
} else {
msg_temp = $.productName + ' ' + (data.errMsg || '未知错误')
}
console.log(msg_temp)
msg.push(msg_temp)
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
})
}
function cash(orderId) {
return new Promise(resolve => {
// console.debug('cash orderId:', orderId)
$.post(taskPostUrl("signFreePrize", { "linkId": activityId, "orderId": orderId, "prizeType": 2 }), async (err, resp, data) => {
try {
if (err) {
console.error(`${JSON.stringify(err)}`)
} else {
// console.debug('cash:', data)
data = JSON.parse(data)
let msg_temp
if (data.success) {
msg_temp = $.productName + ' 提现成功'
} else {
msg_temp = $.productName + ' ' + (data.errMsg || '未知错误')
}
console.log(msg_temp)
msg.push(msg_temp)
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
})
}
function taskPostUrl(function_id, body) {
return {
url: `${JD_API_HOST}`,
body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`,
headers: {
'Cookie': cookie,
'Host': 'api.m.jd.com',
// 'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
"User-Agent": UA,
'accept-language': 'en-US,zh-CN;q=0.9',
'accept-encoding': 'gzip, deflate, br',
"referer": "https://signfree.jd.com/?activityId=" + activityId
}
}
}
function taskGetUrl(function_id, body) {
return {
url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`,
headers: {
'Cookie': cookie,
'Host': 'api.m.jd.com',
'Accept': 'application/json, text/plain, */*',
'origin': 'https://signfree.jd.com',
// 'Connection': 'keep-alive',
'user-agent': UA,
'accept-language': 'en-US,zh-CN;q=0.9',
'accept-encoding': 'gzip, deflate, br',
"referer": "https://signfree.jd.com/?activityId=" + activityId
}
}
}
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输入框修改内容\n建议通过脚本去获取cookie')
return [];
}
}
}
// prettier-ignore
function Env(t, e) {
"undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0);
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("", `🔔${this.name}, 开始!`)
}
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("@"), n = {
url: `http://${h}/v1/scripting/evaluate`,
body: {
script_text: t,
mock_type: "cron",
timeout: r
},
headers: {
"X-Key": o,
Accept: "*/*"
}
};
this.post(n, (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, e = null) {
const s = e ? new Date(e) : new Date;
let i = {
"M+": s.getMonth() + 1,
"d+": s.getDate(),
"H+": s.getHours(),
"m+": s.getMinutes(),
"s+": s.getSeconds(),
"q+": Math.floor((s.getMonth() + 3) / 3),
S: s.getMilliseconds()
};
/(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length)));
for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).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 = ["", "==============📣系统通知📣=============="];
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("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t)
}
wait(t) {
return new Promise(e => setTimeout(e, t))
}
done(t = {}) {
const e = (new Date).getTime(),
s = (e - this.startTime) / 1e3;
this.log("", `🔔${this.name}, 结束! 🕛 ${s}`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t)
}
}(t, e)
}

338
jd_xtclh.js Normal file

File diff suppressed because one or more lines are too long

337
jd_zmhwlh.js Normal file

File diff suppressed because one or more lines are too long