diff --git a/parse/jd/jd_task_wanyiwan.js b/parse/jd/jd_task_wanyiwan.js new file mode 100644 index 0000000..17361f2 --- /dev/null +++ b/parse/jd/jd_task_wanyiwan.js @@ -0,0 +1,231 @@ +import {Template} from '../../template.js' + +export class Main extends Template { + constructor() { + super() + this.profile = { + title: '京东玩一玩', + prompt: { + turnNum: ' #翻倍奖票数,默认10', + turnDouble: ' #翻倍奖票次数,默认1', + turnJump: " #部分号翻倍一直失败,可以只做任务跳过翻倍,pin1|pin2" + }, + model: 'shuffle', + headers: { + referer: 'https://pro.m.jd.com/mall/active/3fcyrvLZALNPWCEDRvaZJVrzek8v/index.html', + }, + turn: 2, + crontab: 8, + tempKey: 8640000000 + } + } + + async prepare() { + } + + async main(p) { + let user = p.data.user; + let context = p.context; + let home = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_home&appid=signed_wh5&body={"outsite":0,"firstCall":0,"version":7,"babelChannel":"ttt10"}&rfs=0000&screen=390*844&build=169480&osVersion=15.1.1&networkType=wifi&d_brand=iPhone&d_model=iPhone13%2C3&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: 'c81ad', + expire: { + 'data.result.isLogin': false + } + } + } + ) + let result = this.haskey(home, 'data.result') + if (!result) { + p.info.jump = true + p.err("没有获取到数据...") + return + } + let oldScore = this.haskey(home, 'data.result.score') || 0 + p.log("当前奖票:", oldScore) + if (this.turnCount == 0) { + let status = 1 + let taskList = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_task_list&appid=signed_wh5&body={"showShortcut":true,"version":7,"lbsSwitch":true}&rfs=0000`, + user, + } + ) + for (let i of this.haskey(taskList, 'data.result.taskList')) { + if (i.status == 3) { + status = 1 + p.log("任务完成:", i.title) + } + else { + if (i.title.includes('下单')) { + } + else { + status = 0 + p.log("正在运行:", i.title) + let d = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_do_task&appid=signed_wh5&body={"itemId":"${this.haskey(i, 'taskDetail.0.itemId') || 0}","taskType":${i.taskType},"assignmentId":"${i.encryptAssignmentId}","actionType":1,"version":1}&rfs=0000&openudid=de21c6604748f97dd3977153e51a47f4efdb9a47&screen=390*844&build=168960&osVersion=15.1.1&networkType=wifi&d_brand=iPhone&d_model=iPhone13%2C3&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: '89db2' + } + } + ) + if (i.limitTime) { + await this.wait(i.limitTime * 1000) + } + let r = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_do_task&appid=signed_wh5&body={"itemId":"${this.haskey(i, 'taskDetail.0.itemId') || 0}","taskType":${i.taskType},"assignmentId":"${i.encryptAssignmentId}","actionType":0,"version":1}&rfs=0000&openudid=de21c6604748f97dd3977153e51a47f4efdb9a47&screen=390*844&build=168858&osVersion=15.1.1&networkType=wifi&d_brand=iPhone&d_model=iPhone13%2C3&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: '89db2' + } + } + ) + // p.log(r.data) + let a = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_task_receive_award&appid=signed_wh5&body={"taskType":${i.taskType},"assignmentId":"${i.encryptAssignmentId}","version":1}&rfs=0000&openudid=de21c6604748f97dd3977153e51a47f4efdb9a47&screen=390*844&build=168960&osVersion=15.1.1&networkType=wifi&d_brand=iPhone&d_model=iPhone13%2C3&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: 'd12dd' + }, + } + ) + p.log(a.data) + if (this.haskey(a, 'data.result')) { + status = 1 + } + } + } + } + if (status) { + p.info.work = true + } + } + else if (this.turnCount == 1) { + if (this.profile.turnJump && this.profile.turnJump.includes(user)) { + p.log("该账号跳过翻倍") + } + else { + let turn = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=turnHappyHome&body={"linkId":"-EMTEb8A0id6HvUY2qV7xQ","turnNum":"10"}&t=1715954317613&appid=activities_platform&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: '614f1' + } + } + ) + if (this.haskey(turn, 'data.leftTime')) { + p.log("剩余翻倍时间:", parseInt(turn.data.leftTime / 1000)) + } + else if (this.haskey(turn, 'data.reachDayLimit')) { + p.log("翻倍次数上限") + p.info.complete = true + } + else { + let num = this.profile.turnNum || 10 + if (oldScore && num>oldScore) { + num = oldScore + } + p.log("开始翻倍,使用奖票数量:", num) + let count = this.profile.turnDouble || 1 + let ok = 1 + for (let _ = 1; _<=count; _++) { + var turnNum = (_ == 1) ? num : "-1" + let double = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=turnHappyDouble&body={"linkId":"-EMTEb8A0id6HvUY2qV7xQ","turnNum":"${turnNum}"}&t=1715954317613&appid=activities_platform&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: '614f1' + } + } + ) + p.log("翻倍中...", this.haskey(double, 'data.rewardValue')) + if (this.haskey(double, 'data.rewardState', 3)) { + p.log("翻倍失败...") + ok = 0 + break + } + else if (this.haskey(double, 'code', 220001)) { + p.log("今日参与已达上限...") + break + } + await this.wait(3000) + } + if (ok) { + let rec = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=turnHappyReceive&body={"linkId":"-EMTEb8A0id6HvUY2qV7xQ"}&t=1715954317613&appid=activities_platform&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: '25fac' + } + } + ) + p.log("结束翻倍...", this.haskey(rec, 'data.rewardValue')) + } + } + } + for (let i of Array(3)) { + home = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_home&appid=signed_wh5&body={"outsite":0,"firstCall":0,"version":7,"babelChannel":"ttt10"}&rfs=0000&openudid=674ce0d97511f5ed054c3dc0af093b3b245ab68d&screen=390*844&build=169480&osVersion=15.1.1&networkType=wifi&d_brand=iPhone&d_model=iPhone13%2C3&client=apple&clientVersion=13.2.2`, + user, + algo: { + appId: 'c81ad' + } + } + ) + if (this.haskey(home, 'data.result')) { + break + } + else { + await this.wait(1000) + } + } + let score = this.haskey(home, 'data.result.score') || 0 + if (score) { + if (oldScore) { + let diff = score - oldScore + if (diff) { + p.msg(`本轮${diff>0 ? '增加' : "损失"}: ${diff}`) + } + } + } + let record = await this.curl({ + 'url': `https://api.m.jd.com/client.action`, + 'form': `functionId=wanyiwan_point_record&appid=signed_wh5&body={"pageNum":1,"version":1}&rfs=0000`, + user + } + ) + let now = new Date(); + let year = now.getFullYear(); + let month = (now.getMonth() + 1).toString().padStart(2, '0'); + let day = now.getDate().toString().padStart(2, '0'); + let ymd = `${year}-${month}-${day}`; + let ymd2 = `${year}.${month}.${day}`; + let report = (this.haskey(record, 'data.result.pointsRecords') || []).filter(d => d.sendTime == ymd || d.sendTime == ymd2).filter(d => d.pointName == '1002') + let use = report.filter(d => d.operateType == '3') + let suc = report.filter(d => d.operateType == '1') + let x = use.reduce((v, k) => { + v += k.pointValue + return v + }, 0) + let y = suc.reduce((v, k) => { + v += k.pointValue + return v + }, 0) + // console.log(x,y) + let z = y - x + p.msg(`当前奖票: ${score} \n翻倍次数: ${use.length}, 消耗奖票: ${x}, 获得奖票: ${y}, ${z>0 ? '增加' : "损失"}奖票: ${z} \n盈亏占比: ${suc.length}/${use.length - suc.length}`) + } + } +} +