Create jd_task_wanyiwan.js

This commit is contained in:
可达鸭 2025-03-02 12:11:17 +08:00
parent 4d98f0ff42
commit 1fe219c778

View File

@ -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}`)
}
}
}