This commit is contained in:
Faker 2022-07-26 20:13:00 +08:00
parent 0bad151c27
commit 8a2811aa60
9 changed files with 1124 additions and 2023 deletions

View File

@ -533,7 +533,7 @@ function saveTeam(_0xd519d7 = 0) {
return new Promise(_0x270eca => {
let _0x1a0f79 = encodeURIComponent(encodeURIComponent($.Pin));
if (_0xd519d7 == 1) _0x1a0f79 = encodeURIComponent(encodeURIComponent($.Pin));
let _0x44652e = 'activityId=' + activityId + '&pin=' + _0x1a0f79 + '&pinImg=' + encodeURIComponent(encodeURIComponent($.attrTouXiang));
let _0x44652e = 'activityId=' + activityId + '&pin=' + _0x1a0f79 + '&pinImg=' + encodeURIComponent(encodeURIComponent($.attrTouXiang))+'&venderId='+$.userId;
$.post(taskPostUrl('/wxTeam/saveCaptain', _0x44652e), async (_0x767d7b, _0x17080e, _0x1070a3) => {
try {
if (_0x767d7b) {
@ -589,7 +589,7 @@ function joinTeam(_0x5a3500 = 0) {
return new Promise(_0x40dede => {
let _0x5d51ce = encodeURIComponent(encodeURIComponent($.Pin));
if (_0x5a3500 == 1) _0x5d51ce = encodeURIComponent(encodeURIComponent($.Pin));
let _0x14deba = 'activityId=' + activityId + '&signUuid=' + $.signUuid + '&pin=' + _0x5d51ce + '&pinImg=' + encodeURIComponent(encodeURIComponent($.attrTouXiang));
let _0x14deba = 'activityId=' + activityId + '&signUuid=' + $.signUuid + '&pin=' + _0x5d51ce + '&pinImg=' + encodeURIComponent(encodeURIComponent($.attrTouXiang))+'&venderId='+$.userId;
$.post(taskPostUrl('/wxTeam/saveMember', _0x14deba), async (_0x53be06, _0x5ed55f, _0x19a125) => {
try {
if (_0x53be06) {

334
jd_daily_lottery.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,41 +1,37 @@
/*
种豆得豆 脚本更新地址https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js
更新时间2022-03-19
种豆得豆
updatetime:2022-07-17
活动入口京东APP我的-更多工具-种豆得豆
已支持IOS京东多账号,云端多京东账号
脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js
会自动关注任务中的店铺跟商品介意者勿使用
互助码shareCode请先手动运行脚本查看打印可看到
每个京东账号每天只能帮助3个人多出的助力码将会助力失败
=====================================Quantumult X=================================
[task_local]
1 7-21/2 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true
15 7-21/2 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/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/Aaron-lv/sync/jd_scripts/jd_plantBean.js,tag=京东种豆得豆
cron "15 7-21/2 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js,tag=京东种豆得豆
======================================Surge==========================
京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js
京东种豆得豆 = type=cron,cronexp="15 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js
====================================小火箭=============================
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true
京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, cronexpr="15 7-21/2 * * *", timeout=3600, enable=true
*/
const $ = new Env('种豆得豆互助版');
const JD_ZLC_URL = process.env.JD_ZLC_URL ? process.env.JD_ZLC_URL : "https://zlc1.chaoyi996.com";
const $ = new Env('京东种豆得豆');
//Node.js用户请在jdCookie.js处填写京东ck;
//ios等软件用户直接用NobyDa的jd cookie
let jdNotify = true;//是否开启静默运行。默认true开启
let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option, message, subTitle;
//京东接口地址
const JD_API_HOST = 'https://api.m.jd.com/client.action';
const JD_ZLC_URL = process.env.JD_ZLC_URL ? process.env.JD_ZLC_URL : "http://zlc1.chaoyi996.com:8880";
//助力好友分享码(最多3个,否则后面的助力失败)
//此此内容是IOS用户下载脚本到本地使用填写互助码的地方同一京东账号的好友互助码请使用@符号隔开。
//下面给出两个账号的填写示例iOS只支持2个京东账号
let shareCodes = []
let shareCodes = ['']
let allMessage = ``;
let currentRoundId = null;//本期活动id
let lastRoundId = null;//上期id
@ -43,13 +39,6 @@ let roundList = [];
let awardState = '';//上期活动的京豆是否收取
let randomCount = $.isNode() ? 20 : 5;
let num;
let llerror = false;
let llerrorhuobao = false;
$.newShareCode = [];
let NowHour = new Date().getHours();
let llhelp = true;
!(async () => {
await requireConfig();
@ -57,22 +46,17 @@ let llhelp = true;
$.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 k = 0; k < cookiesArr.length; k++) {
if (cookiesArr[k]) {
cookie = cookiesArr[k];
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]);
$.index = k + 1;
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;
llerror = false;
llerrorhuobao = false;
$.nickName = '';
await TotalBean();
console.log(`\n开始【京东账号${$.index}${$.nickName || $.UserName}\n`);
console.log(`开始【京东账号${$.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"
});
$.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`);
@ -83,26 +67,11 @@ let llhelp = true;
subTitle = '';
option = {};
await jdPlantBean();
await showMsg();
if ($.isNode() && llerror && !llerrorhuobao) {
await notify.sendNotify(`${$.name}`, `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`);
}
await showMsg();
}
}
if (llhelp) {
console.log(`开始账号内互助`);
for (let j = 0; j < cookiesArr.length; j++) {
if (cookiesArr[j]) {
cookie = cookiesArr[j];
$.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
$.index = j + 1;
await shareCodesFormat();
await doHelp()
await $.wait(60 * 1000);
}
}
}
if ($.isNode() && allMessage) {
await notify.sendNotify(`${$.name}`, `${allMessage}`)
}
@ -116,53 +85,50 @@ async function jdPlantBean() {
try {
console.log(`获取任务及基本信息`)
await plantBeanIndex();
if (!llerror) {
for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) {
if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") {
num = i
break
}
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
return
}
for (let i = 0; i < $.plantBeanIndexResult.data?.roundList?.length; i++) {
if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") {
num = i
break
}
// console.log(plantBeanIndexResult.data.taskList);
if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) {
const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl
$.myPlantUuid = getParam(shareUrl, 'plantUuid')
console.log(`\n【京东账号${$.index}${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`);
jdPlantBeanShareArr.push($.myPlantUuid)
}
// console.log(plantBeanIndexResult.data.taskList);
if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) {
const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl
$.myPlantUuid = getParam(shareUrl, 'plantUuid')
console.log(`\n【京东账号${$.index}${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`);
jdPlantBeanShareArr.push($.myPlantUuid)
roundList = $.plantBeanIndexResult.data.roundList;
currentRoundId = roundList[num].roundId; //本期的roundId
lastRoundId = roundList[num - 1].roundId; //上期的roundId
awardState = roundList[num - 1].awardState;
$.taskList = $.plantBeanIndexResult.data.taskList;
subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`;
message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`;
message += `【上期成长值】${roundList[num - 1].growth}\n`;
await receiveNutrients(); //定时领取营养液
await doTask(); //做日常任务
// await doEgg();
await stealFriendWater();
await doCultureBean();
await doGetReward();
await plantBeanIndex();
if (!llerror) {
$.taskList = $.plantBeanIndexResult.data.taskList;
if ($.taskList && $.taskList.length > 0) {
console.log(" 任务 进度");
for (let item of $.taskList) {
console.log(`[${item["taskName"]}] ${item["gainedNum"]}/${item["totalNum"]} ${item["isFinished"]}`);
}
}
}
await plantShareSupportList();
} else {
console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`);
}
roundList = $.plantBeanIndexResult.data.roundList;
currentRoundId = roundList[num].roundId;//本期的roundId
lastRoundId = roundList[num - 1].roundId;//上期的roundId
awardState = roundList[num - 1].awardState;
$.taskList = $.plantBeanIndexResult.data.taskList;
subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`;
message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`;
message += `【上期成长值】${roundList[num - 1].growth}\n`;
await receiveNutrients();//定时领取营养液
await doTask();//做日常任务
await stealFriendWater();
await doCultureBean();
await doGetReward();
await showTaskProcess();
await shareCodesFormat();
await doHelp()
await plantShareSupportList();
} else {
console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`);
}
} catch (e) {
$.logErr(e);
const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`;
if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg);
// if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg);
$.msg($.name, '', `${errMsg}`)
}
}
@ -179,7 +145,7 @@ async function doGetReward() {
console.log('京豆领取成功');
message += `【上期兑换京豆】${$.getReward.data.awardBean}\n`;
$.msg($.name, subTitle, message);
allMessage += `京东账号${$.index} ${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`
allMessage += `京东账号${$.index}🆔 ${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`
// if ($.isNode()) {
// await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `京东账号${$.index} ${$.nickName}\n${message}`);
// }
@ -198,22 +164,19 @@ async function doGetReward() {
}
async function doCultureBean() {
await plantBeanIndex();
if (!llerror) {
if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0') {
const plantBeanRound = $.plantBeanIndexResult.data.roundList[num];
if (plantBeanRound.roundState === '2') {
//收取营养液
if (plantBeanRound.bubbleInfos && plantBeanRound.bubbleInfos.length)
console.log(`开始收取营养液`)
for (let bubbleInfo of plantBeanRound.bubbleInfos) {
console.log(`收取-${bubbleInfo.name}-的营养液`)
await cultureBean(plantBeanRound.roundId, bubbleInfo.nutrientsType)
console.log(`收取营养液结果:${JSON.stringify($.cultureBeanRes)}`)
}
if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0') {
const plantBeanRound = $.plantBeanIndexResult.data?.roundList[num]
if (plantBeanRound?.roundState === '2') {
//收取营养液
if (plantBeanRound.bubbleInfos && plantBeanRound.bubbleInfos.length) console.log(`开始收取营养液`)
for (let bubbleInfo of plantBeanRound.bubbleInfos) {
console.log(`收取-${bubbleInfo.name}-的营养液`)
await cultureBean(plantBeanRound.roundId, bubbleInfo.nutrientsType)
console.log(`收取营养液结果:${JSON.stringify($.cultureBeanRes)}`)
}
} else {
console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`)
}
} else {
console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`)
}
}
async function stealFriendWater() {
@ -247,6 +210,7 @@ async function stealFriendWater() {
}
}
}
await $.wait(1000)
}
}
} else {
@ -278,171 +242,190 @@ async function doTask() {
console.log(`${item.taskName} 任务已完成\n`);
continue;
} else {
if (item.taskType === 8) {
console.log(`\n${item.taskName}】任务未完成,需自行手动去京东APP完成${item.desc}营养液\n`)
} else {
console.log(`\n${item.taskName}】任务未完成,${item.desc}营养液\n`)
}
}
if (item.dailyTimes === 1 && item.taskType !== 8) {
console.log(`\n开始做 ${item.taskName}任务`);
// $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType);
await receiveNutrientsTask(item.taskType);
console.log(`${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`);
}
if (item.taskType === 3) {
//浏览店铺
console.log(`开始做 ${item.taskName}任务`);
let unFinishedShopNum = item.totalNum - item.gainedNum;
if (unFinishedShopNum === 0) {
continue
}
await shopTaskList();
const { data } = $.shopTaskListRes;
let goodShopListARR = [], moreShopListARR = [], shopList = [];
const { goodShopList, moreShopList } = data;
if (goodShopList) {
for (let i of goodShopList) {
if (i.taskState === '2') {
goodShopListARR.push(i);
switch (item.taskType) {
case 92:
await farmtask();
continue;
case 57:
await jxdoublesign1('https://m.jingxi.com/jxbfd/user/DoubleSignDeal?g_ty=h5&g_tk=&appCode=msd1188198&__t=1657108409440&dwEnv=7&strDeviceId=a3b4e844090b28d5c38e7529af8115172079be4d&strZone=jxbfd&bizCode=jxbfd&source=jxbfd&_cfd_t=1657108409190&_stk=__t%2C_cfd_t%2CbizCode%2CdwEnv%2Csource%2CstrDeviceId%2CstrZone&_ste=1&h5st=20220706195330228%3B1980457211661562%3B10032%3Btk02w78551ad830nuMcGB4Qsv9QxapLP7gZdOCYE5PVV%2Bna%2Bb4KU21drJq64oP82965Vdc1tGqVU%2Flp7ydcZ5XgH0Feh%3B241b6f1d21bf8e41f380a5dd29a7bac2a6f1f65a0c7ef1b1f751eaea4c40dd9c%3B3.0%3B1657108410228&sceneval=2');
await $.wait(2000);
await jxdoublesign1('https://wq.jd.com/jxjdsignin/SignedInfo?channel=jx_zdddsq&_t=1658021925021&h5st=20220717093845024%3B5548444396555217%3B0f6ed%3Btk02w9b851b9c18nin7CZjR7vNSlwRexAOGWbYAbl85d9DiQJ1SufW8ZQEQ%2FSygreq626CVRO2gT8DwUUTLBXGyK6wam%3B7eb86560860f8f60ad3b679c34f89aacf891b5a85580efd0a30c355537bfec54%3B3.0%3B1658021925024&_stk=_t%2Cchannel&_=1658021925027&sceneval=2&g_login_type=1&g_ty=ajax&appCode=msc588d6d5');
await $.wait(2000);
await jxdoublesign1('https://wq.jd.com/jxjdsignin/IssueReward?channel=jx_zdddsq&_t=1658021926276&h5st=20220717093846279%3B5548444396555217%3B0f6ed%3Btk02w9b851b9c18nin7CZjR7vNSlwRexAOGWbYAbl85d9DiQJ1SufW8ZQEQ%2FSygreq626CVRO2gT8DwUUTLBXGyK6wam%3Be2d7b6810b3bd1b9d9692d354ecbb582e69afc64df19bd8d6c14632b1a65660c%3B3.0%3B1658021926279&_stk=_t%2Cchannel&sceneval=2&g_login_type=1&g_ty=ajax&appCode=msc588d6d5');
await $.wait(2000);
continue;
case 3:
console.log(`开始做 ${item.taskName}任务`);
let unFinishedShopNum = item.totalNum - item.gainedNum;
if (unFinishedShopNum === 0) {
continue
}
}
}
if (moreShopList) {
for (let j of moreShopList) {
if (j.taskState === '2') {
moreShopListARR.push(j);
await shopTaskList();
const { data } = $.shopTaskListRes;
let goodShopListARR = [], moreShopListARR = [], shopList = [];
const { goodShopList, moreShopList } = data;
if (goodShopList) {
for (let i of goodShopList) {
if (i.taskState === '2') {
goodShopListARR.push(i);
}
}
}
if (moreShopList) {
for (let j of moreShopList) {
if (j.taskState === '2') {
moreShopListARR.push(j);
}
}
}
}
}
shopList = goodShopListARR.concat(moreShopListARR);
for (let shop of shopList) {
const { shopId, shopTaskId } = shop;
const body = {
"monitor_refer": "plant_shopNutrientsTask",
"shopId": shopId,
"shopTaskId": shopTaskId
}
const shopRes = await requestGet('shopNutrientsTask', body);
console.log(`shopRes结果:${JSON.stringify(shopRes)}`);
if (shopRes && shopRes.code === '0') {
if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') {
unFinishedShopNum--;
shopList = goodShopListARR.concat(moreShopListARR);
for (let shop of shopList) {
const { shopId, shopTaskId } = shop;
const body = {
"monitor_refer": "plant_shopNutrientsTask",
"shopId": shopId,
"shopTaskId": shopTaskId
}
const shopRes = await requestGet('shopNutrientsTask', body);
console.log(`shopRes结果:${JSON.stringify(shopRes)}`);
if (shopRes && shopRes.code === '0') {
if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') {
unFinishedShopNum--;
}
}
if (unFinishedShopNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
}
}
if (unFinishedShopNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
}
}
if (item.taskType === 5) {
//挑选商品
console.log(`开始做 ${item.taskName}任务`);
let unFinishedProductNum = item.totalNum - item.gainedNum;
if (unFinishedProductNum === 0) {
continue
}
await productTaskList();
// console.log('productTaskList', $.productTaskList);
const { data } = $.productTaskList;
let productListARR = [], productList = [];
const { productInfoList } = data;
for (let i = 0; i < productInfoList.length; i++) {
for (let j = 0; j < productInfoList[i].length; j++) {
productListARR.push(productInfoList[i][j]);
}
}
for (let i of productListARR) {
if (i.taskState === '2') {
productList.push(i);
}
}
for (let product of productList) {
const { skuId, productTaskId } = product;
const body = {
"monitor_refer": "plant_productNutrientsTask",
"productTaskId": productTaskId,
"skuId": skuId
}
const productRes = await requestGet('productNutrientsTask', body);
if (productRes && productRes.code === '0') {
// console.log('nutrState', productRes)
//这里添加多重判断,有时候会出现活动太火爆的问题,导致nutrState没有
if (productRes.data && productRes.data.nutrState && productRes.data.nutrState === '1') {
unFinishedProductNum--;
continue;
case 5:
//挑选商品
console.log(`开始做 ${item.taskName}任务`);
let unFinishedProductNum = item.totalNum - item.gainedNum;
if (unFinishedProductNum === 0) {
continue
}
}
if (unFinishedProductNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
}
}
if (item.taskType === 10) {
//关注频道
console.log(`开始做 ${item.taskName}任务`);
let unFinishedChannelNum = item.totalNum - item.gainedNum;
if (unFinishedChannelNum === 0) {
continue
}
await plantChannelTaskList();
const { data } = $.plantChannelTaskList;
// console.log('goodShopList', data.goodShopList);
// console.log('moreShopList', data.moreShopList);
let goodChannelListARR = [], normalChannelListARR = [], channelList = [];
const { goodChannelList, normalChannelList } = data;
for (let i of goodChannelList) {
if (i.taskState === '2') {
goodChannelListARR.push(i);
}
}
for (let j of normalChannelList) {
if (j.taskState === '2') {
normalChannelListARR.push(j);
}
}
channelList = goodChannelListARR.concat(normalChannelListARR);
for (let channelItem of channelList) {
const { channelId, channelTaskId } = channelItem;
const body = {
"channelId": channelId,
"channelTaskId": channelTaskId
}
const channelRes = await requestGet('plantChannelNutrientsTask', body);
console.log(`channelRes结果:${JSON.stringify(channelRes)}`);
if (channelRes && channelRes.code === '0') {
if (channelRes.data && channelRes.data.nutrState && channelRes.data.nutrState === '1') {
unFinishedChannelNum--;
await productTaskList();
// console.log('productTaskList', $.productTaskList);
//const { data1 } = $.productTaskList;
let productListARR = [], productList = [];
const { productInfoList } = $.productTaskList.data;
for (let i = 0; i < productInfoList.length; i++) {
for (let j = 0; j < productInfoList[i].length; j++) {
productListARR.push(productInfoList[i][j]);
}
}
}
if (unFinishedChannelNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
for (let i of productListARR) {
if (i.taskState === '2') {
productList.push(i);
}
}
for (let product of productList) {
const { skuId, productTaskId } = product;
const body = {
"monitor_refer": "plant_productNutrientsTask",
"productTaskId": productTaskId,
"skuId": skuId
}
const productRes = await requestGet('productNutrientsTask', body);
if (productRes && productRes.code === '0') {
// console.log('nutrState', productRes)
//这里添加多重判断,有时候会出现活动太火爆的问题,导致nutrState没有
if (productRes.data && productRes.data.nutrState && productRes.data.nutrState === '1') {
unFinishedProductNum--;
}
}
if (unFinishedProductNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
}
continue;
case 10:
//关注频道
console.log(`开始做 ${item.taskName}任务`);
let unFinishedChannelNum = item.totalNum - item.gainedNum;
if (unFinishedChannelNum === 0) {
continue
}
await plantChannelTaskList();
//const { data2 } = $.plantChannelTaskList;
// console.log('goodShopList', data.goodShopList);
// console.log('moreShopList', data.moreShopList);
let goodChannelListARR = [], normalChannelListARR = [], channelList = [];
const { goodChannelList, normalChannelList } = $.plantChannelTaskList.data;
for (let i of goodChannelList) {
if (i.taskState === '2') {
goodChannelListARR.push(i);
}
}
for (let j of normalChannelList) {
if (j.taskState === '2') {
normalChannelListARR.push(j);
}
}
channelList = goodChannelListARR.concat(normalChannelListARR);
for (let channelItem of channelList) {
const { channelId, channelTaskId } = channelItem;
const body = {
"channelId": channelId,
"channelTaskId": channelTaskId
}
const channelRes = await requestGet('plantChannelNutrientsTask', body);
console.log(`channelRes结果:${JSON.stringify(channelRes)}`);
if (channelRes && channelRes.code === '0') {
if (channelRes.data && channelRes.data.nutrState && channelRes.data.nutrState === '1') {
unFinishedChannelNum--;
}
}
if (unFinishedChannelNum <= 0) {
console.log(`${item.taskName}任务已做完\n`)
break;
}
}
continue;
default:
console.log(`\n开始做 ${item.taskName}任务`);
// $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType);
await receiveNutrientsTask(item.taskType);
console.log(`${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`);
continue;
}
}
}
}
}
function showTaskProcess() {
return new Promise(async resolve => {
await plantBeanIndex();
$.taskList = $.plantBeanIndexResult.data?.taskList;
if ($.taskList && $.taskList.length > 0) {
console.log(" 任务 进度");
for (let item of $.taskList) {
console.log(`[${item["taskName"]}] ${item["gainedNum"]}/${item["totalNum"]} ${item["isFinished"]}`);
}
}
resolve()
})
}
//助力好友
async function doHelp() {
$.newShareCode = [...(jdPlantBeanShareArr || [])]
for (let plantUuid of $.newShareCode) {
console.log(`${$.UserName}开始助力: ${plantUuid}`);
for (let plantUuid of newShareCodes) {
console.log(`开始助力京东账号${$.index} - ${$.nickName}的好友: ${plantUuid}`);
await $.wait(3000)
if (!plantUuid) continue;
if (plantUuid === $.myPlantUuid) {
console.log(`\n跳过自己的plantUuid\n`)
continue
}
await helpShare(plantUuid);
console.log("========HELP=======");
if ($.helpResult && $.helpResult.code === '0' && !$.helpResult.errorCode) {
if ($.helpResult && $.helpResult.code === '0') {
// console.log(`助力好友结果: ${JSON.stringify($.helpResult.data.helpShareRes)}`);
if ($.helpResult.data.helpShareRes) {
if ($.helpResult.data?.helpShareRes) {
if ($.helpResult.data.helpShareRes.state === '1') {
console.log(`助力好友${plantUuid}成功`)
console.log(`${$.helpResult.data.helpShareRes.promptText}\n`);
@ -460,6 +443,7 @@ async function doHelp() {
} else {
console.log(`助力好友失败: ${JSON.stringify($.helpResult)}`);
}
await $.wait(2000)
}
}
function showMsg() {
@ -471,6 +455,102 @@ function showMsg() {
}
// ================================================此处是API=================================
//每轮种豆活动获取结束后,自动收取京豆
async function farmtask() {
await receivefruit();
await $.wait(500);
await dofarm('gotConfigDataForBrand');
await $.wait(500);
await dofarm('initForFarm');
await $.wait(500);
await dofarm('taskInitForFarm');
await $.wait(500);
await dofarm('farmMarkStatus');
await $.wait(500);
await dofarm('initForFarm');
await $.wait(500);
}
async function receivefruit() {
const body = {
"monitor_refer": "plant_receiveNutrientsTask",
"monitor_source": "plant_app_plant_index",
"awardType": "92",
"version": "9.2.4.1"
}
await request('receiveNutrientsTask', body)
}
async function dofarm(function_id) {
let body = {
"version": 17,
"channel": 1,
"babelChannel": "45"
}
if (function_id == 'gotConfigDataForBrand') {
body["type"] = "json";
body["k"] = "farmShareConfig";
}
return new Promise(async resolve => {
const option = {
url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`,
headers: {
'Cookie': cookie,
'Host': 'api.m.jd.com',
'Accept': '*/*',
'Connection': 'keep-alive',
'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': 'https://h5.m.jd.com'
},
timeout: 20000,
};
$.get(option, (err, resp, data) => {
try {
if (err) {
console.log('\n API查询请求失败 ‼️‼️')
$.logErr(err);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve();
}
})
})
}
function jxdoublesign1(url) {
let opt = {
url,
headers: {
//'Host': 'wq.jd.com',
'accept': 'application/json',
'referer': 'https://st.jingxi.com/',
'User-Agent': 'jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148',
'Cookie': 'cid=4;' + cookie
}
}
return new Promise(async resolve => {
$.get(opt, (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败请检查网路重试`)
} else {
if (data) {
//data = JSON.parse(data);
//console.log(data)
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
resolve()
})
}
async function getReward() {
const body = {
"roundId": lastRoundId
@ -571,67 +651,8 @@ async function helpShare(plantUuid) {
console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`);
}
async function plantBeanIndex() {
llerror = false;
llerrorhuobao = false;
$.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
llerror = true;
llerrorhuobao = true;
return
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息出错10秒后重试\n`)
await $.wait(10000);
$.plantBeanIndexResult = await request('plantBeanIndex');
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
llerror = true;
llerrorhuobao = true;
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息出错30秒后重试\n`)
await $.wait(30000);
$.plantBeanIndexResult = await request('plantBeanIndex');
if ($.plantBeanIndexResult.errorCode === 'PB101') {
console.log(`\n活动太火爆了,还是去买买买吧!\n`)
llerror = true;
llerrorhuobao = true;
return
}
}
if ($.plantBeanIndexResult.errorCode) {
console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`)
console.log("错误代码;" + $.plantBeanIndexResult.errorCode)
llerror = true;
return;
}
$.plantBeanIndexResult = await request('plantBeanIndex');//plantBeanIndexBody
}
//格式化助力码
function shareCodesFormat() {
return new Promise(async resolve => {
console.log(`${$.index}个京东账号的助力码:${jdPlantBeanShareArr[$.index - 1]}`)
newShareCodes = [];
if (jdPlantBeanShareArr[$.index - 1]) {
newShareCodes = jdPlantBeanShareArr[$.index - 1].split('@');
} else {
// console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`)
const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1);
newShareCodes = shareCodes[tempIndex].split('@');
}
const readShareCodeRes = await readShareCode(jdPlantBeanShareArr[$.index - 1]);
if (readShareCodeRes && readShareCodeRes.code === 200) {
newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])];
}
console.log(`${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`)
resolve();
})
}
function readShareCode(code) {
console.log(`当前使用助力池${JD_ZLC_URL}`)
console.log(JD_ZLC_URL + `/bean?code=` + code)
@ -643,7 +664,7 @@ function readShareCode(code) {
console.log(`${$.name} API请求失败请检查网路重试`)
} else {
if (data) {
console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`)
console.log(`随机取${randomCount}个码放到您固定的互助码后面`)
data = JSON.parse(data);
}
}
@ -657,13 +678,28 @@ function readShareCode(code) {
resolve()
})
}
//格式化助力码
function shareCodesFormat() {
return new Promise(async resolve => {
console.log(`${$.index}个京东账号的助力码:::${jdPlantBeanShareArr[$.index - 1]}`)
newShareCodes = [];
const readShareCodeRes = await readShareCode(jdPlantBeanShareArr[$.index - 1]);
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('开始获取种豆得豆配置文件\n')
console.log('开始获取种豆得豆配置文件\n')
notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
const jdPlantBeanShareCodes = '';
const jdPlantBeanShareCodes = $.isNode() ? require('./jdPlantBeanShareCodes.js') : '';
//IOS等用户直接用NobyDa的jd cookie
if ($.isNode()) {
Object.keys(jdCookieNode).forEach((item) => {
@ -688,7 +724,7 @@ function requireConfig() {
console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`);
}
// console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`);
//console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`);
console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`);
resolve()
})
}
@ -712,7 +748,7 @@ function requestGet(function_id, body = {}) {
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': "application/x-www-form-urlencoded"
},
timeout: 10000,
timeout: 20000,
};
$.get(option, (err, resp, data) => {
try {
@ -744,7 +780,7 @@ function TotalBean() {
"Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2",
"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")
},
"timeout": 10000,
"timeout": 20000,
}
$.post(options, (err, resp, data) => {
try {
@ -777,15 +813,18 @@ function TotalBean() {
}
function request(function_id, body = {}) {
return new Promise(async resolve => {
await $.wait(2000);
await $.wait(5000);
$.post(taskUrl(function_id, body), (err, resp, data) => {
try {
if (err) {
console.log('\n种豆得豆: API查询请求失败 ‼️‼️')
console.log(`function_id:${function_id}`)
$.logErr(err);
} else if (data.indexOf('data') > -1) {
data = JSON.parse(data);
} else {
data = JSON.parse(data);
console.log(data.errorMessage)
}
} catch (e) {
$.logErr(e, resp);
@ -812,7 +851,7 @@ function taskUrl(function_id, body) {
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded"
},
timeout: 10000,
timeout: 20000,
}
}
function getParam(url, name) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

362
jd_superBrandZII.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -5,17 +5,14 @@
===============Quantumultx===============
[task_local]
#众筹许愿池
40 0,2 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_wish.js, tag=众筹许愿池, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
40 0,11,19 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_wish.js, tag=众筹许愿池, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
================Loon==============
[Script]
cron "40 0,2 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_wish.js,tag=众筹许愿池
cron "40 0,11,19 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_wish.js,tag=众筹许愿池
===============Surge=================
众筹许愿池 = type=cron,cronexp="40 0,2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_wish.js
众筹许愿池 = type=cron,cronexp="40 0,11,19 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_wish.js
============小火箭=========
众筹许愿池 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_wish.js, cronexpr="40 0,2 * * *", timeout=3600, enable=true
众筹许愿池 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_wish.js, cronexpr="40 0,11,19 * * *", timeout=3600, enable=true
*/
const $ = new Env('众筹许愿池');
const notify = $.isNode() ? require('./sendNotify') : '';
@ -25,8 +22,8 @@ let message = '', allMessage = '';
//IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [], cookie = '';
const JD_API_HOST = 'https://api.m.jd.com/client.action';
let appIdArr = ['1FFVQyqw','1EFRWxKuG', '1E1xZy6s'];
let appNameArr = ['1111点心动','许愿抽好礼', 'PLUS生活特权'];
let appIdArr = ["1E1NUxq2G","1E1xZy6s","1EFRXxg","1EFRWxKuG","1FFVQyqw"];
let appNameArr = ["空投","PLUS生活特权","1","2","3"];
let appId, appName;
$.shareCode = [];
if ($.isNode()) {
@ -72,7 +69,12 @@ if ($.isNode()) {
if ($.isNode()) await notify.sendNotify($.name, allMessage);
$.msg($.name, '', allMessage)
}
let res = await getAuthorShareCode('https://gitee.com/KingRan521/JD-Scripts/raw/master/shareCodes/wish.json')
let res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/6dylan6/updateTeam@main/shareCodes/wish.json')
if (!res) {
$.http.get({url: 'https://cdn.jsdelivr.net/gh/6dylan6/updateTeam@main/shareCodes/wish.json'}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e));
await $.wait(1000)
res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/6dylan6/updateTeam@main/shareCodes/wish.json')
}
$.shareCode = [...$.shareCode, ...(res || [])]
for (let i = 0; i < cookiesArr.length; i++) {
if (cookiesArr[i]) {
@ -131,6 +133,7 @@ async function jd_wish() {
await interact_template_getLotteryResult()
await $.wait(2000)
}
if (message) allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n${appName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`
} catch (e) {
$.logErr(e)
@ -139,7 +142,6 @@ async function jd_wish() {
async function healthyDay_getHomeData(type = true) {
return new Promise(async resolve => {
// console.log(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 }));
$.post(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 }), async (err, resp, data) => {
try {
if (err) {
@ -148,19 +150,18 @@ async function healthyDay_getHomeData(type = true) {
} else {
if (safeGet(data)) {
data = JSON.parse(data);
// console.log(data);
if (type) {
for (let key of Object.keys(data.data.result.hotTaskVos).reverse()) {
let vo = data.data.result.hotTaskVos[key]
if (vo.status !== 2) {
if (vo.taskType === 13 || vo.taskType === 12) {
console.log(`点击热区`)
for (let key of Object.keys(data.data.result.hotTaskVos).reverse()) {
let vo = data.data.result.hotTaskVos[key]
if (vo.status !== 2) {
if (vo.taskType === 13 || vo.taskType === 12) {
console.log(`点击热区`)
await harmony_collectScore({ "appId": appId, "taskToken": vo.simpleRecordInfoVo.taskToken, "taskId": vo.taskId, "actionType": "0" }, vo.taskType)
} else {
console.log(`${vo.taskName}】已完成\n`)
} else {
console.log(`${vo.taskName}】已完成\n`)
}
}
}
}
}
for (let key of Object.keys(data.data.result.taskVos).reverse()) {
let vo = data.data.result.taskVos[key]
if (vo.status !== 2) {
@ -191,7 +192,7 @@ async function healthyDay_getHomeData(type = true) {
await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "0" })
}
}
} else if (vo.taskType === 3) {
} else if (vo.taskType === 3 && vo.shoppingActivityVos) {
for (let key of Object.keys(vo.shoppingActivityVos)) {
let shoppingActivityVos = vo.shoppingActivityVos[key]
if (shoppingActivityVos.status !== 2) {

View File

@ -1,20 +1,27 @@
/*
* @Author: lxk0301 https://gitee.com/lxk0301
* @Date: 2020-08-19 16:12:40
* @Last Modified by: whyour
* @Last Modified time: 2021-5-1 15:00:54
* sendNotify 推送通知功能
* @param text 通知头
* @param desp 通知体
* @param params 某些推送通知方式点击弹窗可跳转, { url: 'https://abc.com' }
* @param author 作者仓库等信息 `本通知 Byhttps://github.com/whyour/qinglong`
* @Author: ccwav https://github.com/ccwav/QLScript2
* sendNotify 推送通知功能 (text, desp, params , author , strsummary)
* @param text 通知标题 (必要)
* @param desp 通知内容 (必要)
* @param params 某些推送通知方式点击弹窗可跳转, { url: 'https://abc.com' } 没啥用,只是为了兼容旧脚本保留 (非必要)
* @param author 通知底部作者` (非必要)
* @param strsummary 指定某些微信模板通知的预览信息空则默认为desp (非必要)
* sendNotifybyWxPucher 一对一推送通知功能 (text, desp, PtPin, author, strsummary )
* @param text 通知标题 (必要)
* @param desp 通知内容 (必要)
* @param PtPin CK的PTPIN (必要)
* @param author 通知底部作者` (非必要)
* @param strsummary 指定某些微信模板通知的预览信息空则默认为desp (非必要)
*/
//详细说明参考 https://github.com/ccwav/QLScript2.
const querystring = require('querystring');
const exec = require('child_process').exec;
const $ = new Env();
const timeout = 15000; //超时时间(单位毫秒)
console.log("加载sendNotify当前版本: 20220722");
console.log("加载sendNotify当前版本: 20220723");
// =======================================go-cqhttp通知设置区域===========================================
//gobot_url 填写请求地址http://127.0.0.1/send_private_msg
//gobot_token 填写在go-cqhttp文件设置的访问密钥
@ -111,15 +118,6 @@ let WP_UIDS_ONE = "";
let GOTIFY_URL = '';
let GOTIFY_TOKEN = '';
let GOTIFY_PRIORITY = 0;
/**
* sendNotify 推送通知功能
* @param text 通知头
* @param desp 通知体
* @param params 某些推送通知方式点击弹窗可跳转, { url: 'https://abc.com' }
* @param author 作者仓库等信息 `本通知 Byhttps://github.com/whyour/qinglong`
* @returns {Promise<unknown>}
*/
let PushErrorTime = 0;
let strTitle = "";
let ShowRemarkType = "1";
@ -569,11 +567,22 @@ async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By cc
}
}
}
//console.log("UseGroup2 :"+UseGroup2);
//console.log("UseGroup3 :"+UseGroup3);
if (desp) {
for (lncount = 2; lncount < 20; lncount++) {
if (process.env["NOTIFY_INCLUDE_TEXT" + lncount]) {
Notify_IncludeText = process.env["NOTIFY_INCLUDE_TEXT" + lncount].split('&');
if (Notify_IncludeText.length > 0) {
for (var Templ in Notify_IncludeText) {
if (desp.indexOf(Notify_IncludeText[Templ]) != -1) {
console.log("检测内容到内容存在组别推送的关键字(" + Notify_IncludeText[Templ] + "),将推送到组" + lncount + "...");
UseGroupNotify = lncount;
break;
}
}
}
}
}
}
if (UseGroupNotify == 1)
UseGroupNotify = "";
@ -1352,7 +1361,7 @@ function tgBotNotify(text, desp) {
} else {
data = JSON.parse(data);
if (data.ok) {
console.log('Telegram发送通知消息成功<EFBFBD>\n')
console.log('Telegram发送通知消息成功🎉\n')
} else if (data.error_code === 400) {
console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
} else if (data.error_code === 401) {