mirror of
https://github.com/lan-tianxiang/clone_scripts.git
synced 2026-04-09 03:45:37 +08:00
更新于 08-06 11:01
This commit is contained in:
224
jd_health.js
224
jd_health.js
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
author: 疯疯
|
||||
东东健康社区
|
||||
更新时间:2021-4-22
|
||||
活动入口:京东APP首页搜索 "玩一玩"即可
|
||||
@@ -25,11 +24,12 @@ const jdCookieNode = $.isNode() ? require("./jdCookie.js") : "";
|
||||
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`,
|
||||
//`T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`,
|
||||
//`T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`,
|
||||
//`T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`,
|
||||
]
|
||||
let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : ''
|
||||
const randomCount = $.isNode() ? 20 : 0;
|
||||
const randomCount = $.isNode() ? 20 : 5;
|
||||
function oc(fn, defaultVal) {//optioanl chaining
|
||||
try {
|
||||
return fn()
|
||||
@@ -46,35 +46,25 @@ if ($.isNode()) {
|
||||
});
|
||||
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);
|
||||
cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item);
|
||||
}
|
||||
const JD_API_HOST = "https://api.m.jd.com/client.action";
|
||||
const JD_API_HOST = "https://api.m.jd.com/";
|
||||
!(async () => {
|
||||
if (!cookiesArr[0]) {
|
||||
$.msg(
|
||||
$.name,
|
||||
"【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取",
|
||||
"https://bean.m.jd.com/",
|
||||
{"open-url": "https://bean.m.jd.com/"}
|
||||
);
|
||||
$.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", {"open-url": "https://bean.m.jd.com/"});
|
||||
return;
|
||||
}
|
||||
await requireConfig()
|
||||
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]
|
||||
);
|
||||
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]);
|
||||
$.index = i + 1;
|
||||
message = "";
|
||||
console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`);
|
||||
await shareCodesFormat()
|
||||
await main()
|
||||
// await showMsg()
|
||||
await showMsg()
|
||||
}
|
||||
}
|
||||
if ($.isNode() && allMessage) {
|
||||
@@ -92,22 +82,24 @@ 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)
|
||||
}
|
||||
@@ -142,7 +134,7 @@ function getTaskDetail(taskId = '') {
|
||||
if (safeGet(data)) {
|
||||
data = $.toObj(data)
|
||||
if (taskId === -1) {
|
||||
let tmp = parseInt(nc(parseFloat(oc(() => data.data.result.userScore) , '0')))
|
||||
let tmp = parseInt(parseFloat(nc(oc(() => data.data.result.userScore) , '0')))
|
||||
if (!$.earn) {
|
||||
$.score = tmp
|
||||
$.earn = 1
|
||||
@@ -152,8 +144,8 @@ function getTaskDetail(taskId = '') {
|
||||
}
|
||||
} else if (taskId === 6) {
|
||||
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)
|
||||
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(`${oc(() => data.data.result.taskVos[0].taskName)}任务,完成次数:${oc(() => data.data.result.taskVos[0].times)}/${oc(() => data.data.result.taskVos[0].maxTimes)}`)
|
||||
@@ -161,24 +153,35 @@ function getTaskDetail(taskId = '') {
|
||||
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(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 8) {
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 9) {
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 10) {
|
||||
await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 26 || vo.taskType === 3) {
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId))
|
||||
} 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(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 8) {
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 9) {
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1)
|
||||
await $.wait(1000 * 10)
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0)
|
||||
} else if (vo.taskType === 10) {
|
||||
await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 26 || vo.taskType === 3) {
|
||||
await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId))
|
||||
} else if (vo.taskType === 1) {
|
||||
for (let key of Object.keys(vo.followShopVo)) {
|
||||
let taskFollow = vo.followShopVo[key]
|
||||
if (taskFollow.status !== 2) {
|
||||
await doTask(taskFollow.taskToken, vo.taskId, 0)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
await $.wait(2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,6 +195,59 @@ function getTaskDetail(taskId = '') {
|
||||
})
|
||||
}
|
||||
|
||||
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 !== 0 && 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 doTask(taskToken, taskId, actionType = 0) {
|
||||
return new Promise(resolve => {
|
||||
const options = taskUrl('jdhealth_collectScore', {taskToken, taskId, actionType})
|
||||
@@ -244,66 +300,16 @@ 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`,
|
||||
url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&uuid=`,
|
||||
headers: {
|
||||
"Cookie": cookie,
|
||||
"origin": "https://h5.m.jd.com",
|
||||
"referer": "https://h5.m.jd.com/",
|
||||
'accept-language': 'zh-cn',
|
||||
'accept-encoding': 'gzip, deflate, br',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
"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")
|
||||
}
|
||||
@@ -361,10 +367,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