mirror of
https://github.com/3288588344/toulu.git
synced 2025-12-16 23:11:00 +08:00
1741 lines
72 KiB
JavaScript
1741 lines
72 KiB
JavaScript
/**
|
||
* cron 10 11 * * *
|
||
* 依赖 crypto-js & jsencrypt
|
||
* 得物APP 探索中的玩一玩 所有游戏的入口都在那里 请跑任务之前手动玩一次
|
||
* --------------------------------------------------
|
||
* 变量名:dewuCK
|
||
* 变量值:抓app.dewu.com 请求头Headers中的x-auth-token 去掉Bearer # 连接cookie中dutoken得值 可以直接搜dutoken # 连接SK
|
||
* 三个值 x-auth-token的值去掉Bearer#dutoken的值#SK的值
|
||
* UA的变量名UAdefult_dewu
|
||
* export UAdefult_dewu="Mozilla/5.0 (.....UA"
|
||
* 例如ejxxxxx...#d41d8cd9|16...2233|17...|4sasasasa...#9xxxxxxxx
|
||
* 多账号& 或换行 或新建同名变量
|
||
* -------------------------------------------------
|
||
* --------------------------------------------------
|
||
* new Env("得物")
|
||
*/
|
||
|
||
let ckName = "dewuCK";//CK变量名字
|
||
|
||
|
||
const version = "testV1"
|
||
const isPromiseAll = process.env["isPromiseAll"] ? process.env["isPromiseAll"] : "true";//是否开启并发
|
||
let UAdefult = "Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36/duapp/5.39.1(android;10)"
|
||
let UA = process.env["UAdefult_dewu"] ? process.env["UAdefult_dewu"] : UAdefult
|
||
let SK = process.env["SKdefult_dewu"] ? process.env["SKdefult_dewu"] : ""
|
||
|
||
const $ = new Env("得物农场");
|
||
const notify = $.isNode() ? require('./sendNotify') : '';
|
||
let envSplitor = ["&", "\n"]; //多账号分隔符
|
||
let strSplitor = "#"; //多变量分隔符
|
||
let userIdx = 0;
|
||
let userList = [];
|
||
let authShareCodeList = []
|
||
let stationShareCodesList = []
|
||
let zeroLotteryShareCodesModeGetList = []
|
||
let helpCode = ""
|
||
const CryptoJS = require("crypto-js");
|
||
async function main() {
|
||
$.log(`并发状态:${isPromiseAll == "true" ? "[true]" : "[false]"}`)
|
||
let { body: shareCode } = await $.httpRequest({ timeout: 10000, method: "get", url: "https://gitee.com/smallfawn/Note/raw/main/updateTeam/dwnc.json", headers: { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/duapp/5.38.6" } })
|
||
$.log(`当前版本:${version} 最新版本${shareCode.v}`)
|
||
if (version != shareCode.v) {
|
||
$.log(`当前版本和最新版本不一致`)
|
||
return
|
||
}
|
||
$.log(`[${shareCode.notice}]`);
|
||
authShareCodeList = shareCode.treeShareCodesList
|
||
stationShareCodesList = shareCode.stationShareCodesList
|
||
zeroLotteryShareCodesModeGetList = shareCode.zeroLotteryShareCodesModeGetList
|
||
let taskall = [];
|
||
$.log(`======= 🌳初始化邀请码 =======`)
|
||
for (let user in userList) {
|
||
if (userList[user].ckStatus) {
|
||
//如果user处于数组第一 那么则await 否则则promiseAll
|
||
if (user == 0) {
|
||
await userList[0].UserInit();
|
||
} else {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(userList[user].UserInit());
|
||
} else {
|
||
taskall.push(await userList[user].UserInit());
|
||
}
|
||
}
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
$.log(`======= 🌳果园 =======`)
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.tree());
|
||
} else { taskall.push(await user.tree()); }
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
taskall = [];
|
||
$.log(`======= 🐟鱼厂 =======`)
|
||
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.fish());
|
||
} else {
|
||
taskall.push(await user.fish());
|
||
}
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
taskall = [];
|
||
$.log(`======= 上上签💴 =======`)
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.station());
|
||
} else {
|
||
taskall.push(await user.station());
|
||
}
|
||
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
taskall = [];
|
||
$.log(`======= 0元抽💴 =======`)
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.zeroLottery());
|
||
} else {
|
||
taskall.push(await user.zeroLottery());
|
||
}
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
taskall = [];
|
||
$.log(`======= 抽盲盒 =======`)
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.buZhou());
|
||
} else {
|
||
taskall.push(await user.buZhou());
|
||
}
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
$.log(`======= 潮金币 =======`)
|
||
taskall = [];
|
||
for (let user of userList) {
|
||
if (user.ckStatus) {
|
||
if (isPromiseAll == "true") {
|
||
taskall.push(user.point());
|
||
} else {
|
||
taskall.push(await user.point());
|
||
|
||
}
|
||
}
|
||
}
|
||
await Promise.all(taskall);
|
||
|
||
}
|
||
class Task {
|
||
constructor(str) {
|
||
this.index = ++userIdx;
|
||
this.ck = str.split(strSplitor)[0]; //单账号多变量分隔符
|
||
this.ckStatus = true;
|
||
this.taskListTree = []
|
||
this.doWaterStatus = true
|
||
this.taskListFish = []
|
||
this.fishFeedStatus = true
|
||
this.fishId = ""
|
||
this.fishType = ""
|
||
this.stationList = [];
|
||
this.duToken = str.split(strSplitor)[1];
|
||
this.sk = str.split(strSplitor)[2];
|
||
this.prizeLocations = []
|
||
this.BuZhouRefreshStatus = false
|
||
this.chanceCount = 0
|
||
this.waitPrizeLocations = []
|
||
this.ua = UA
|
||
//this.sk = SK
|
||
}
|
||
async tree() {
|
||
await this.Dowater()
|
||
await $.wait(2500)
|
||
await this.TreeInviteReward()
|
||
await $.wait(1500)
|
||
await this.Get_Tree_Info()
|
||
await $.wait(1500)
|
||
await this.TreeInfo()
|
||
await $.wait(1500)
|
||
await this.SignListTree()
|
||
await $.wait(1500)
|
||
await this.TaskListTree();
|
||
await $.wait(1500)
|
||
await this.Droplet_Get_Generate_Droplet()
|
||
await $.wait(1500)
|
||
await this.Droplet_ExtraInfo()
|
||
}
|
||
async fish() {
|
||
await this.SignListFish()
|
||
await $.wait(2500)
|
||
await this.TaskListFish()
|
||
await $.wait(2500)
|
||
await this.UserFinshInfo()
|
||
|
||
|
||
|
||
|
||
}
|
||
async station() {
|
||
for (let i of stationShareCodesList) {
|
||
await $.wait(1500)
|
||
let shareKey = await this.ShareCodesGet(i)
|
||
if (shareKey != '') {
|
||
let id = shareKey.split("id=")[1].split("&")[0]
|
||
let userId = shareKey.split("shareUserId=")[1].split("&")[0]
|
||
let status = await this.StationAssist(id, userId)
|
||
if (status) {
|
||
break;
|
||
}
|
||
} else {
|
||
}
|
||
|
||
}
|
||
await this.StationList()
|
||
for (let j of this.stationList) {
|
||
await $.wait(2000)
|
||
await this.StationEgnageIn(j.id)
|
||
}
|
||
|
||
}
|
||
async zeroLottery() {
|
||
await this.zeroLotteryWinList()
|
||
await this.zeroLotteryList()
|
||
for (let j of zeroLotteryShareCodesModeGetList) {
|
||
await $.wait(1500)
|
||
let shareKey = await this.ShareCodesGet(j)
|
||
if (shareKey != '') {
|
||
shareKey = decodeURIComponent(shareKey.split("shareKey=")[1].split("&")[0])
|
||
let status = await this.zeroLotteryShare(shareKey)
|
||
if (status) {
|
||
break;
|
||
}
|
||
} else {
|
||
}
|
||
}
|
||
|
||
}
|
||
async buZhou() {
|
||
await this.BuZhouTaskList()
|
||
await $.wait(2000)
|
||
await this.BuZhouInfo()
|
||
await $.wait(2000)
|
||
await this.BuZhouInfo()
|
||
}
|
||
async point() {
|
||
await this.PonitSignIn()
|
||
await this.PointTaskList()
|
||
}
|
||
async DoTask(body) {
|
||
try {
|
||
let taskStatusResult = {};
|
||
let commitBody = {};
|
||
let preStatus = false
|
||
if (body.taskType == 50) {
|
||
taskStatusResult = await this.taskRequest_task("get", `https://app.dewu.com/hacking-task/v1/task/status?taskId=${body.taskId}&taskType=50&sign=94fd23c93d62ae0f75108f94c093b198`)
|
||
if (taskStatusResult.code == 200) {
|
||
if (taskStatusResult.data.status == 1) {
|
||
//$.log(`账号[${this.index}] 开始任务成功🎉`)
|
||
commitBody = { "taskId": body.taskId, "taskType": String(body.taskType), "btd": 0, spuId: 0 }
|
||
preStatus = true
|
||
}
|
||
}
|
||
}
|
||
if (body.taskType == 1) {
|
||
if ("classify" in body) {
|
||
if (body.classify == 2) {
|
||
taskStatusResult = await this.taskRequest_task("post", `https://app.dewu.com/hacking-task/v1/task/pre_commit?sign=b7382f4d908e04356f9646688afe096c`, { taskId: body.taskId, taskType: body.taskType, btn: 0 })
|
||
//console.log(taskStatusResult);
|
||
if (taskStatusResult.code == 200) {
|
||
if (taskStatusResult.data.isOk == true) {
|
||
//$.log(`账号[${this.index}] 开始任务成功🎉`)
|
||
$.log(`延迟${body.countdownTime + 1}秒浏览${body.taskName}`)
|
||
await $.wait((body.countdownTime + 1) * 1000)
|
||
commitBody = { "taskId": body.taskId, "taskType": String(body.taskType), "activityType": null, "activityId": null, "taskSetId": null, "venueCode": null, "venueUnitStyle": null, "taskScene": null, "btd": 0 }
|
||
preStatus = true
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 开始任务失败[${taskStatusResult.msg}]`);
|
||
}
|
||
}
|
||
} else {
|
||
/*taskStatusResult = await this.taskRequest_task("post", `https://app.dewu.com/hacking-task/v1/task/pre_commit?sign=b7382f4d908e04356f9646688afe096c`, { taskId: body.taskId, taskType: body.taskType, btn: 0 })
|
||
if (taskStatusResult.code == 200) {
|
||
if (taskStatusResult.data.isOk == true) {
|
||
//$.log(`账号[${this.index}] 开始任务成功🎉`)
|
||
await $.wait(16000)
|
||
commitBody = { "taskId": body.taskId, "taskType": body.taskType, "activityType": null, "activityId": null, "taskSetId": null, "venueCode": null, "venueUnitStyle": null, "taskScene": null, "btd": 0 }
|
||
preStatus = true
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 开始任务失败[${taskStatusResult.msg}]`);
|
||
}*/
|
||
}
|
||
|
||
|
||
}
|
||
if (body.taskType == 123 || body.taskType == 124) {
|
||
commitBody = { "taskType": String(body.taskType) }
|
||
preStatus = true
|
||
}
|
||
//console.log(taskStatusResult)
|
||
if (preStatus == true) {
|
||
let commitResult = await this.taskRequest_task("post", `https://app.dewu.com/hacking-task/v1/task/commit?sign=826988b593cd8cd75162b6d3b7dade15`, commitBody)
|
||
//console.log(commitResult)
|
||
if (commitResult.code == 200) {
|
||
if (commitResult.data.status == 2) {
|
||
$.log(`账号[${this.index}] [${body.taskName}]任务成功🎉`)
|
||
return true
|
||
} else {
|
||
$.log(`账号[${this.index}] [${body.taskName}]任务失败🎉`)
|
||
}
|
||
} else {
|
||
$.log(`账号[${this.index}] [${body.taskName}]任务失败🎉`)
|
||
}
|
||
} else {
|
||
return false
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
|
||
}
|
||
async StationAssist(id, shareUserId) {
|
||
let body = { "id": id, "shareUserId": shareUserId }
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/api/v1/h5/delicate-sell-interfaces/dsell/station/assist?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
//$.log(`账号[${this.index}] 助力参与作者组队上上签成功🎉`)
|
||
return true
|
||
} else {
|
||
//$.log(`❌账号[${this.index}] 助力参与作者组队上上签失败[${result.msg}]`);
|
||
return false
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async zeroLotteryEgnageIn(id) {
|
||
let body = { "id": id, "source": "wotab" }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/hacking-zero-lottery/v1/activity/engage-in?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 0元抽签参与成功[${result.data.title}]🎉`)
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 0元抽签0参与失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async ShareCodesGet(key) {
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/hacking-keyword/v1/common/keyword/share-info?keyword=${key}`)
|
||
if (result.code == 200) {
|
||
if (result.data !== null) {
|
||
|
||
return result.data.activityInfo.enterUrl
|
||
|
||
|
||
|
||
} else {
|
||
return ''
|
||
}
|
||
} else {
|
||
|
||
$.log(`❌账号[${this.index}] 助力参与0元购失败[${result.msg}]🎉`)
|
||
return ''
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async zeroLotteryShare(key) {
|
||
|
||
let body = { "shareKey": key }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/hacking-zero-lottery/v1/activity/report-keyword?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
//$.log(`账号[${this.index}] 助力参与0元购成功🎉`)
|
||
return true
|
||
} else {
|
||
//$.log(`❌账号[${this.index}] 助力参与0元购失败[${result.msg}]🎉`)
|
||
return false
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async zeroLotteryWinList() {
|
||
let body = { "limit": 10, "lastId": 0 }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/hacking-zero-lottery/v1/activity/engage-in-list`, body)
|
||
if (result.code == 200) {
|
||
if (result.data?.list) {
|
||
for (let i of result.data.list) {
|
||
// ...
|
||
if (i.win == true) {
|
||
$.log(`账号[${this.index}] 恭喜中签[${i.name}]🎉🎉🎉🎉🎉🎉🎉🎉`)
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取0元购列表失败[${result.msg}]🎉`)
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async zeroLotteryList() {
|
||
let body = { "source": "wotab" }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/zero-lottery-interfaces/zl/activity/query-today?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
for (let i of result.data.activityList) {
|
||
let taskStatus = false
|
||
if (i.status == 0) {
|
||
if ("taskVo" in i) {
|
||
await this.DoTask(i.taskVo)
|
||
|
||
} else {
|
||
await this.zeroLotteryEgnageIn(i.id)
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取0元购列表失败[${result.msg}]🎉`)
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async StationEgnageIn(id) {
|
||
let body = { "id": id }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/delicate-sell-interfaces/dsell/station/egnage-in?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 参与上上签成功🎉`)
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 参与上上签失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async StationList() {
|
||
let body = { "student": false, "source": "" }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/delicate-sell-interfaces/dsell/query/ongoing-list?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
for (let i of result.data.records) {
|
||
if (i.userPartakeStatus == 10) {
|
||
this.stationList.push(i)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取上上签列表失败[${result.msg}]🎉`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async BuZhouInfo() {
|
||
let body = { "benefitId": 1, "additionPresent": 0, "source": "gamecentertask" }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/mount-buzhou-interfaces/gk/index?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
//console.log(result.data);
|
||
$.log(`账号[${this.index}] 盲盒赛季[${result.data.seasonName}] 当前抽奖机会[${result.data.chanceCount}] 🎉`)
|
||
if ("prizeLocations" in result.data) {
|
||
$.log(`已开盲盒位置[${result.data.prizeLocations}]`)
|
||
this.prizeLocations = result.data.prizeLocations
|
||
} else {
|
||
this.prizeLocations = []
|
||
}
|
||
this.chanceCount = result.data.chanceCount
|
||
//console.log(result.data.hasDraw);
|
||
if (this.chanceCount != 0) {
|
||
this.waitPrizeLocations = this.findMissingNumbers(this.prizeLocations)
|
||
//加一个条件 如果waitPriz...... 小于 chence 则 刷新
|
||
if (this.waitPrizeLocations.length == 0 && this.chanceCount > 0) {
|
||
await $.wait(2500)
|
||
await this.BuZhouRefresh(result.data.seasonId)
|
||
}
|
||
this.waitPrizeLocations = this.findMissingNumbers(this.prizeLocations)
|
||
//如果长度大于等于chence 则不刷新
|
||
|
||
let max = this.waitPrizeLocations.length >= this.chanceCount ? this.chanceCount : this.waitPrizeLocations.length
|
||
for (let i = 0; i < max; i++) {
|
||
let prizeLocation = this.waitPrizeLocations[i]
|
||
$.log("开始第" + (i + 1) + "次抽奖")
|
||
await $.wait(2500)
|
||
await this.BuZhouLottery(result.data.seasonId, prizeLocation)
|
||
}
|
||
await $.wait(2500)
|
||
await this.BuZhouRefresh(result.data.seasonId)
|
||
}
|
||
|
||
|
||
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 盲盒获取失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async BuZhouLottery(seasonId, prizeLocation) {
|
||
let body = { "benefitId": 1, "seasonId": seasonId, "prizeLocation": prizeLocation, "source": "gamecentertask" }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/mount-buzhou-interfaces/gk/lottery?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 盲盒抽取[${result.data.gkLotteryVo.gkName}]碎片`);
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 盲盒抽取失败[${result.msg}]`);
|
||
//console.log(seasonId, prizeLocation);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async BuZhouRefresh(seasonId) {
|
||
let body = { "seasonId": seasonId }
|
||
try {
|
||
let result = await this.taskRequest_task("post", `https://app.dewu.com/api/v1/h5/mount-buzhou-interfaces/gk/refresh?sign=${this.calculateSign(body)}`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 刷新盲盒成功`);
|
||
this.BuZhouRefreshStatus = true;
|
||
this.prizeLocations = []
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 刷新盲盒失败[${result.msg}]`);
|
||
//console.log(result);
|
||
this.BuZhouRefreshStatus = false;
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async BuZhouTaskList() {
|
||
let body = { "source": "gamecentertask" }
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/api/v1/h5/mount-buzhou-interfaces/gk/task-list?source=gamecentertask&sign=${this.calculateSign(body)}`)
|
||
if (result.code == 200) {
|
||
for (let i of result.data.taskVoList) {
|
||
let taskStatus = false
|
||
if (i.isComplete == false) {
|
||
if (i.taskType == 1) {
|
||
if (i.classify == 2) {
|
||
//浏览
|
||
|
||
taskStatus = await this.DoTask(i)
|
||
}
|
||
}
|
||
if (i.taskType == 50) {
|
||
await $.wait(2500)
|
||
|
||
taskStatus = await this.DoTask(i)
|
||
//收藏
|
||
}
|
||
} else if (i.isComplete == true && i.isReceiveReward == false) {
|
||
await $.wait(2500)
|
||
await this.TaskReceiveBuZhou(i)
|
||
}
|
||
if (taskStatus == true) {
|
||
await $.wait(2500)
|
||
await this.TaskReceiveBuZhou(i)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 盲盒任务获取失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskReceivePoint(body) {
|
||
try {
|
||
let RequestBody = { taskId: body.taskId, taskType: body.taskType }
|
||
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-game-center/v1/sign/task_receive?sign=${this.calculateSign(RequestBody)}`, RequestBody)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 领取任务奖励[${result.msg}] --- [${result.data.amount}]金币🎉`)
|
||
} else {
|
||
//console.log(body.taskId);
|
||
$.log(`❌账号[${this.index}] 领取任务奖励失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskReceiveBuZhou(body) {
|
||
try {
|
||
let RequestBody = { taskId: body.taskId, classify: body.classify }
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/api/v1/h5/mount-buzhou-interfaces/gk/task-receive?sign=${this.calculateSign(RequestBody)}`, RequestBody)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 领取任务奖励[${result.msg}] --- [${result.data.count}]次数🎉`)
|
||
} else {
|
||
//console.log(body.taskId);
|
||
$.log(`❌账号[${this.index}] 领取任务奖励失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async FishFeed() {
|
||
let body = { "feedTimes": 1, "fishId": this.fishId, "fishType": this.fishType }
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-fish/v1/fish/feed?sign=63a26f09f6d985b73299f92506f6e986`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 喂食🐟成功🎉`)
|
||
this.fishFeedStatus = true
|
||
} else {
|
||
this.fishFeedStatus = false
|
||
$.log(`❌账号[${this.index}] 喂食🐟失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async Dowater() {
|
||
if (this.droplet > 0) {
|
||
$.log(`账号[${this.index}] 可浇水${parseInt(this.droplet / 100)}次,开始浇水`);
|
||
if (this.treeMode == 0) {
|
||
for (let i = 0; i < parseInt(this.droplet / 100); i++) {
|
||
if (this.doWaterStatus) {
|
||
await this.DoWaterApi()
|
||
//随机延迟random
|
||
await $.wait(this.randomNumber(1000, 2000))
|
||
}
|
||
}
|
||
} else if (this.treeMode == 1) {
|
||
$.log(`账号[${this.index}] 组队浇水 =>`)
|
||
for (let i = 0; i < parseInt(this.droplet / 100); i++) {
|
||
if (this.doWaterStatus) {
|
||
await this.DoWaterTeamApi(this.treeId)
|
||
//随机延迟random
|
||
await $.wait(this.randomNumber(1000, 2000))
|
||
}
|
||
}
|
||
await this.TeamInfo()
|
||
}
|
||
|
||
}
|
||
}
|
||
async DoWaterApi() {
|
||
let body = {}
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/tree/watering?sign=fe26befc49444d362c8f17463630bdba`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 浇水成功🎉`)
|
||
this.doWaterStatus = true
|
||
} else {
|
||
this.doWaterStatus = false
|
||
$.log(`❌账号[${this.index}] 浇水失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async DoWaterTeamApi(teamTreeId) {
|
||
let body = { "teamTreeId": teamTreeId }
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/team/tree/watering?sign=b5ee2c7e8d1aaf214886c438c4f25cd9`, body)
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 浇水成功🎉`)
|
||
if (result.data.coupons !== null) {
|
||
$.log(`账号[${this.index}] 浇水成功获得${result.data.coupons[0].limitDesc}🎉`)
|
||
|
||
}
|
||
this.doWaterStatus = true
|
||
} else {
|
||
this.doWaterStatus = false
|
||
$.log(`❌账号[${this.index}] 浇水失败[${result.msg}]`);
|
||
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TreeInfo() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/user/target/info`)
|
||
//console.log(result);
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] [${result.data.name}] Lv[${result.data.level}]🎉`)
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取🌳信息失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskListTree() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/task/list`)
|
||
//console.log(result);
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 获取任务列表成功 采集/领取 集到[${result.data.taskList.length}]条任务🎉`)
|
||
for (let i of result.data.taskList) {
|
||
this.taskListTree.push(i)
|
||
}
|
||
for (let i of this.taskListTree) {
|
||
let taskStatus = false
|
||
if (i.isComplete == false) {
|
||
await $.wait(2500)
|
||
if (i.taskType == 1) {
|
||
if (i.classify == 2) {
|
||
//浏览
|
||
|
||
taskStatus = await this.DoTask(i)
|
||
}
|
||
if (i.classify == 1) {
|
||
//完成固定次数浇灌 默认5次
|
||
}
|
||
}
|
||
if (i.taskType == 10) {
|
||
//固定时间段领取 40g
|
||
}
|
||
if (i.taskType == 123) {
|
||
taskStatus = await this.DoTask(i)
|
||
//从桌面组件访问
|
||
}
|
||
if (i.taskType == 50) {
|
||
taskStatus = await this.DoTask(i)
|
||
//收藏
|
||
}
|
||
if (i.taskType == 201) {
|
||
//逛95分
|
||
}
|
||
if (i.taskType == 4) {
|
||
//收集一次水滴生产
|
||
}
|
||
} else if (i.isComplete == true && i.isReceiveReward == false) {
|
||
await $.wait(2500)
|
||
await this.TaskReceiveTree(i)
|
||
}
|
||
if (taskStatus) {
|
||
await $.wait(2500)
|
||
await this.TaskReceiveTree(i)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取任务列表成功🎉失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async SignListTree() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/sign/list`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 今日${result.data.status == 1 ? "未签到" : "已签到"}🎉`)
|
||
if (result.data.status == 1) {
|
||
let SignInResult = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/sign/sign_in`, {})
|
||
if (SignInResult.code == 200) {
|
||
$.log(`账号[${this.index}] 签到领取水滴[${SignInResult.msg}] --- [${SignInResult.data.Num}]🎉`)
|
||
} else {
|
||
$.log(`账号[${this.index}] 签到领取水滴[${SignInResult.msg}]`)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取签到列表失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async SignListFish() {
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/hacking-fish/v1/daily_sign/list`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 今日${result.data.status == 1 ? "未签到" : "已签到"}🎉`)
|
||
if (result.data.status == 1) {
|
||
let SignInResult = await this.taskRequest("post", `https://app.dewu.com/hacking-fish/v1/daily_sign/receive`, {})
|
||
if (SignInResult.code == 200) {
|
||
$.log(`账号[${this.index}] 签到领取鱼食[${SignInResult.msg}] --- [${SignInResult.data.Num}]🎉`)
|
||
} else {
|
||
$.log(`账号[${this.index}] 签到领取鱼食[${SignInResult.msg}]`)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取签到列表失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async PointInfo() {
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/hacking-game-center/v1/gold/balance`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 潮金币[${result.data.coinDetailList[0].value}]`);
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取潮金币信息失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async PointTaskList() {
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/hacking-game-center/v1/sign/task_list`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
for (let i of result.data.list) {
|
||
let taskStatus = false
|
||
if (i.isComplete == false) {
|
||
if (i.taskType == 1) {
|
||
i.classify = 2
|
||
taskStatus = await this.DoTask(i)
|
||
}
|
||
if (i.taskType == 50) {
|
||
await $.wait(2500)
|
||
taskStatus = await this.DoTask(i)
|
||
//收藏
|
||
}
|
||
} else if (i.isComplete == true && i.isReceiveReward == false) {
|
||
await $.wait(2500)
|
||
await this.TaskReceivePoint(i)
|
||
}
|
||
if (taskStatus == true) {
|
||
await $.wait(2500)
|
||
await this.TaskReceivePoint(i)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取潮金币任务列表失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async PonitSignIn() {
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-game-center/v1/sign/sign`, {})
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 外部活动潮币签到成功 获得[${result.data.coins}g💧]🎉`)
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 外部活动潮币签到失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async Droplet_ExtraInfo() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/droplet-extra/info`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 气泡水滴 可领取 --- 💧🎉`)
|
||
let receiveResult = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/droplet-extra/receive`, {})
|
||
//console.log(JSON.stringify(result));
|
||
if (receiveResult.code == 200) {
|
||
$.log(`账号[${this.index}] 领取气泡水滴[${receiveResult.msg}] --- [${receiveResult.data.totalDroplet}g]💧🎉`)
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 领取气泡失败[${receiveResult.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 气泡水滴获取失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async Droplet_Get_Generate_Droplet() {
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/droplet/get_generate_droplet`, {})
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 领取小木桶积攒水滴[${result.msg}] --- [${result.data.droplet}g]💧🎉`)
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 领取小木桶积攒水滴失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskReceiveFish(body) {
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-fish/v1/task/receive?sign=ee632e4b8e24d2526737bca0b7c0c678`, { taskId: body.taskId, classify: body.classify })
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 领取任务奖励[${result.msg}] --- [${result.data.num}g]💧🎉`)
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 领取任务奖励失败[${result.msg}]`);
|
||
//console.log(body.taskId);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskReceiveTree(body) {
|
||
try {
|
||
let result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/task/receive?sign=15c051cc7af50c30318c05b539e434e7`, { taskId: body.taskId, classify: body.classify })
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 领取任务奖励[${result.msg}] --- [${result.data.num}g]💧🎉`)
|
||
} else {
|
||
//console.log(body.taskId);
|
||
$.log(`❌账号[${this.index}] 领取任务奖励失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async Get_Tree_Info() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/tree/get_tree_info`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] [${result.data.treeId}] 成熟进度 --- [${result.data.userWateringDroplet}/${result.data.currentLevelNeedWateringDroplet}g]💧🎉`)
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取🌳成长信息失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TaskListFish() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-fish/v1/task/list`)
|
||
//console.log(JSON.stringify(result));
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] 获取任务列表成功 采集/领取 [${result.data.taskList.length}]条任务🎉`)
|
||
for (let i of result.data.taskList) {
|
||
this.taskListFish.push(i)
|
||
}
|
||
for (let i of this.taskListFish) {
|
||
let taskStatus = false
|
||
if (i.isComplete == false) {
|
||
await $.wait(2500)
|
||
if (i.taskType == 1) {
|
||
if (i.classify == 2) {
|
||
//浏览
|
||
|
||
taskStatus = await this.DoTask(i)
|
||
}
|
||
if (i.classify == 1) {
|
||
//完成固定次数浇灌 默认5次
|
||
}
|
||
}
|
||
if (i.taskType == 100001) {
|
||
//喂养5次
|
||
}
|
||
if (i.taskType == 124) {
|
||
taskStatus = await this.DoTask(i)
|
||
//从桌面组件访问
|
||
}
|
||
if (i.taskType == 50) {
|
||
taskStatus = await this.DoTask(i)
|
||
//收藏
|
||
}
|
||
if (i.taskType == 201) {
|
||
//逛95分
|
||
}
|
||
if (i.taskType == 100002) {
|
||
//30g鱼食 每日9点/13点/17点/21点各领一次
|
||
}
|
||
} else if (i.isComplete == true && i.isReceiveReward == false) {
|
||
await $.wait(3000)
|
||
await this.TaskReceiveFish(i)
|
||
}
|
||
if (taskStatus) {
|
||
await $.wait(3000)
|
||
await this.TaskReceiveFish(i)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取任务🐟失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async UserInit() {
|
||
let result = {
|
||
code: 0,
|
||
msg: "获取🌳信息失败",
|
||
}
|
||
try {
|
||
let authHelpCode = "";
|
||
if (this.index == 1) {
|
||
for (let j of authShareCodeList) {
|
||
authHelpCode = j
|
||
result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/user/init?sign=d25c30ebdf1adeb29ca10ccb825bbf66`, { "keyword": "", "source": "wotab04", "koc": 0, "ffOfflineFlag": "", "keywordType": 0 })
|
||
if (result.code == 200) {
|
||
if ("inviteRes" in result.data) {
|
||
if (result.data.inviteRes.indexOf("成功") != -1) {
|
||
$.log(`首账号助力作者成功`)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
let helpCodeResult = await this.taskRequest("post", "https://app.dewu.com/hacking-tree/v1/keyword/gen?sign=fe26befc49444d362c8f17463630bdba", {})
|
||
if (helpCodeResult.code == 200) {
|
||
let kw = helpCodeResult.data.keyword
|
||
helpCode = kw.split("œ")[1]
|
||
$.log(`首账号助力码[${helpCode}]`)
|
||
}
|
||
} else {
|
||
result = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/user/init?sign=d25c30ebdf1adeb29ca10ccb825bbf66`, { "keyword": "", "source": "wotab04", "koc": 0, "ffOfflineFlag": "", "keywordType": 0 })
|
||
}
|
||
if (result.code == 200) {
|
||
$.log(`账号[${this.index}] [${result.msg}] 剩余水滴[${result.data.droplet}g] 助力[${this.index == 1 ? "作者:" + authHelpCode : helpCode}][${"inviteRes" in result.data ? result.data.inviteRes : "未成功"}]🎉`)
|
||
this.treeId = result.data.treeId
|
||
this.droplet = result.data.droplet
|
||
this.treeMode = result.data.mode
|
||
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取🌳信息失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
|
||
async TreeInviteReward() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/invite/list`, `sign=fe26befc49444d362c8f17463630bdba`)
|
||
|
||
if (result.code == 200) {
|
||
if (result.data?.list) {
|
||
for (let i of result.data.list) {
|
||
if (i.status == 0) {
|
||
let body = { "inviteeUserId": i.inviteeUserId }
|
||
let rewardResult = await this.taskRequest("post", `https://app.dewu.com/hacking-tree/v1/invite/reward`, body)
|
||
if (rewardResult.code == 200) {
|
||
$.log(`账号[${this.index}] 领取邀请奖励成功 获取[${rewardResult.data.droplet}]g`);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async TeamInfo() {
|
||
try {
|
||
let result = await this.taskRequest("get", `https://app.dewu.com/hacking-tree/v1/team/info`)
|
||
//console.log(result);
|
||
if (result.code == 200) {
|
||
for (let i of result.data.member) {
|
||
if (i.isCaptain == true) {
|
||
$.log(`账号[${this.index}] 组队队长[${i.name}] 今日是否上线[${i.status == 1 ? '是' : '否'}]`)
|
||
} else {
|
||
$.log(`账号[${this.index}] 组员[${i.name}] 今日是否上线[${i.status == 1 ? '是' : '否'}]`)
|
||
}
|
||
}
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取队伍🌳🎉失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
|
||
|
||
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
async UserFinshInfo() {
|
||
try {
|
||
let result = await this.taskRequest_task("get", `https://app.dewu.com/hacking-fish/v1/user/home?userSelectFishId=0&sign=5d75086e825f0fcea4b2cbdf5e6d940f`)
|
||
//console.log(result);
|
||
let fishName = ""
|
||
let lv = ""
|
||
let progress = ""
|
||
if (result.code == 200) {
|
||
this.fishId = result.data.selectFishId
|
||
for (let j of result.data.fishList) {
|
||
if (this.fishId == j.fishId) {
|
||
this.fishType = j.type
|
||
fishName = j.typeData.name
|
||
lv = j.level
|
||
progress = j.progress
|
||
break;
|
||
}
|
||
}
|
||
$.log(`账号[${this.index}] [${fishName}]等级[${lv}] [${progress}/1000000] 剩余※鱼食🐟[${result.data.balance}g]🎉`)
|
||
if (result.data.balance > 0) {
|
||
$.log(`账号[${this.index}] 喂食🐟${parseInt(result.data.balance / 10)}次,开始喂食`);
|
||
for (let i = 0; i < parseInt(result.data.balance / 10); i++) {
|
||
if (this.fishFeedStatus) {
|
||
await this.FishFeed()
|
||
//随机延迟random
|
||
await $.wait(this.randomNumber(1000, 2000))
|
||
}
|
||
}
|
||
}
|
||
|
||
} else {
|
||
$.log(`❌账号[${this.index}] 获取用户信息成功🎉失败[${result.msg}]`);
|
||
//console.log(result);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
}
|
||
}
|
||
findMissingNumbers(arr) {
|
||
const nums = [0, 1, 2, 3, 4, 5, 6, 7, 8];
|
||
const missing = [];
|
||
|
||
for (const num of nums) {
|
||
if (!arr.includes(num)) {
|
||
missing.push(num);
|
||
}
|
||
}
|
||
|
||
return missing;
|
||
}
|
||
//randominit
|
||
randomNumber(min, max) {
|
||
return Math.floor(Math.random() * (max - min)) + min;
|
||
}
|
||
async taskRequest(method, url, body = {}) {
|
||
//
|
||
|
||
let headers = {
|
||
"Host": "app.dewu.com",
|
||
|
||
"SK": this.sk,
|
||
|
||
"x-auth-token": "Bearer " + this.ck,
|
||
|
||
"duToken": "" + this.duToken,
|
||
|
||
"cookieToken": "" + this.duToken,
|
||
"traceparent": this.generateIds(),
|
||
"User-Agent": this.ua,
|
||
|
||
"sks": "1,hdw3",
|
||
|
||
|
||
"Cookie": "duToken=" + this.duToken
|
||
}
|
||
const reqeuestOptions = {
|
||
url: url,
|
||
method: method,
|
||
headers: headers
|
||
|
||
}
|
||
//console.log(body);
|
||
let { enData, n } = this.createEncryptedBody(JSON.stringify(body))
|
||
reqeuestOptions.headers["a"] = n
|
||
//console.log(enData);
|
||
method == "get" ? (reqeuestOptions.url.split("?")[1] != undefined ? reqeuestOptions.url += "&data=" + encodeURIComponent(enData.data) : reqeuestOptions.url += "?data=" + encodeURIComponent(enData.data)) : Object.assign(reqeuestOptions, { body: JSON.stringify({ data: enData.data }) })
|
||
//console.log(reqeuestOptions)
|
||
try {
|
||
let { body: result } = await $.httpRequest(reqeuestOptions)
|
||
if (!$.isJson(result)) {
|
||
result = JSON.parse(this.decryptResponseBody(result, n))
|
||
}
|
||
//console.log(result);
|
||
return result
|
||
|
||
} catch (error) {
|
||
//console.log(error);
|
||
// $.log(`接口请求失败 `)
|
||
return { code: 0, msg: "接口请求失败" }
|
||
}
|
||
|
||
}
|
||
generateIds() {
|
||
var Uo = Array(32);
|
||
var oe = "0000000000000000";
|
||
|
||
function Ho(e) {
|
||
for (var t = 0; t < 2 * e; t++)
|
||
Uo[t] = Math.floor(16 * Math.random()) + 48,
|
||
Uo[t] >= 58 && (Uo[t] += 39);
|
||
return String.fromCharCode.apply(null, Uo.slice(0, 2 * e));
|
||
}
|
||
|
||
var Mo = "00000000000000000000000000000000"; // Assuming Mo is defined somewhere else in your code
|
||
|
||
var generateSpanId = function () {
|
||
return function (e) {
|
||
var t = e(8);
|
||
if (t === oe)
|
||
return Mo;
|
||
return t;
|
||
}(Ho);
|
||
};
|
||
|
||
var generateTraceId = function () {
|
||
return function (e) {
|
||
var t = Math.floor(Date.now() / 1e3).toString(16),
|
||
n = e(8),
|
||
r = e(3);
|
||
return "f5" + r + t + n;
|
||
}(Ho);
|
||
};
|
||
|
||
return "00-" + generateTraceId() + "-" + generateSpanId() + "-01"
|
||
};
|
||
|
||
async taskRequest_task(method, url, body = "") {
|
||
|
||
|
||
let headers = {
|
||
"Host": "app.dewu.com",
|
||
"Connection": "keep-alive",
|
||
//"Content-Length": "62",
|
||
//"ua": "duapp/5.37.0(android;10)",
|
||
//"Origin": "https://cdn-m.dewu.com",
|
||
//"appid": "h5",
|
||
"SK": this.sk,
|
||
/*"shumeiId": "20240229101108a9d7deaedd9e5e305209da327c58c8fc21a0fe159c45b78d",*/
|
||
/*"deviceTrait": "MI+8+Lite",*/
|
||
"x-auth-token": "Bearer " + this.ck,
|
||
/*"Sec-Fetch-Dest": "empty",
|
||
"channel": "xiaomi",
|
||
"duToken": "d41d8cd9|1630362958|1711360875|4bf085e789d085b0",
|
||
"appVersion": "5.37.0",
|
||
"emu": "0",*/
|
||
//"cookieToken": "d41d8cd9|1630362958|1711360875|4bf085e789d085b0",
|
||
"traceparent": this.generateIds(),
|
||
/*"dudeliveryid": "79F073E7555D2BD9490AF2270549ADBABDFE24914A4EEF24D4D5C25559243BDD",*/
|
||
"User-Agent": this.ua,
|
||
//"duproductid": "0BC86B71CB9BA08726EDD70256925177BDFE24914A4EEF24D4D5C25559243BDD",
|
||
"Content-Type": "application/json",
|
||
/*"isRoot": "0",
|
||
"imei": "",
|
||
"duid": "0BC86B71CB9BA08726EDD70256925177BDFE24914A4EEF24D4D5C25559243BDD",
|
||
"platform": "h5",
|
||
"isProxy": "0",
|
||
*/
|
||
/*"X-Requested-With": "com.shizhuang.duapp",
|
||
"Sec-Fetch-Site": "same-site",
|
||
"Sec-Fetch-Mode": "cors",
|
||
"Referer": "https://cdn-m.dewu.com/h5-growth/game-task?gameTaskFlag=true&taskId=Nr52k&taskType=50&countdownIcon=%7B%22countdownIcon%22%3A%22https%3A%2F%2Fcdn.poizon.com%2Fnode-common%2F28c7b3d4060e086551dcc84eca7bfbeb.png%22%2C%22hideCountdownIcon%22%3A%22https%3A%2F%2Fcdn.poizon.com%2Fnode-common%2Fa8b472c7622a53454d82745345cefa71.png%22%2C%22coordinate%22%3A%2212%2C600%22%7D&scrollbarColor=%2301C1C2&fontColor=%23FFFFFF&btd=83500&goodsCollect=goodsDetail&popId=0",
|
||
"Accept-Encoding": "gzip, deflate",
|
||
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",*/
|
||
"Cookie": `duToken=${this.duToken};`
|
||
}
|
||
const reqeuestOptions = {
|
||
url: url,
|
||
method: method,
|
||
headers: headers
|
||
|
||
}
|
||
body == "" ? "" : Object.assign(reqeuestOptions, { body: JSON.stringify(body) })
|
||
//console.log(reqeuestOptions)
|
||
try {
|
||
let { body: result } = await $.httpRequest(reqeuestOptions)
|
||
return result
|
||
} catch (error) {
|
||
// $.log(`接口请求失败 `)
|
||
return { code: 0, msg: "接口请求失败" }
|
||
}
|
||
//
|
||
|
||
}
|
||
createEncryptedBody(data) {
|
||
const key2 = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANMGZPlLobHYWoZyMvHD0a6emIjEmtf5Z6Q++VIBRulxsUfYvcczjB0fMVvAnd1douKmOX4G690q9NZ6Q7z/TV8CAwEAAQ==";
|
||
const publicKeyPem = '-----BEGIN PUBLIC KEY-----\n' +
|
||
key2 +
|
||
'-----END PUBLIC KEY-----';
|
||
|
||
global["window"] = {}
|
||
const jsencrypt = require("jsencrypt")
|
||
const crypt = new jsencrypt()
|
||
crypt.setKey(publicKeyPem)
|
||
const n = this.randomStr(48, 16);
|
||
const encrypted = crypt.encrypt(n)
|
||
const enBody = CryptoJS.enc.Utf8.parse(data);
|
||
const enResult = CryptoJS.AES.encrypt(enBody, CryptoJS.enc.Utf8.parse(n.substr(10, 16)), {
|
||
iv: CryptoJS.enc.Utf8.parse(n.substr(20, 16)),
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7,
|
||
});
|
||
//console.log(encrypted);
|
||
//console.log(hexToBase64(encrypted));
|
||
const newBody = {
|
||
data: encrypted + "" + enResult.ciphertext.toString().toUpperCase(),
|
||
};
|
||
newBody.sign = this.calculateSign(newBody);
|
||
return { enData: newBody, n };
|
||
function hexToBase64(hexString) {
|
||
const buffer = Buffer.from(hexString, 'hex');
|
||
const base64String = buffer.toString('base64');
|
||
return base64String;
|
||
}
|
||
}
|
||
randomStr(length, charset) { var tmp1, tmp2, data = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), result = []; if (((charset = charset || data["length"]), length)) for (tmp1 = 0; tmp1 < length; tmp1++)result[tmp1] = data[0 | (Math.random() * charset)]; else for (result[8] = result[13] = result[18] = result[23] = "-", result[14] = "4", tmp1 = 0; tmp1 < 36; tmp1++)result[tmp1] || ((tmp2 = 0 | (16 * Math["random"]())), (result[tmp1] = data[19 === tmp1 ? (3 & tmp2) | 8 : tmp2])); return result["join"]("") }
|
||
decryptResponseBody(result, n) {
|
||
try {
|
||
const de1 = CryptoJS.enc.Hex.parse(result),
|
||
de2 = CryptoJS.enc.Base64.stringify(de1);
|
||
const decrypted = CryptoJS.AES.decrypt(de2, CryptoJS.enc.Utf8.parse(n.substr(10, 16)), {
|
||
iv: CryptoJS.enc.Utf8.parse(n.substr(20, 16)),
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7,
|
||
}).toString(CryptoJS.enc.Utf8);
|
||
return decrypted;
|
||
} catch (error) {
|
||
n = "987654321012345678901234567890123456789012345678"
|
||
const de1 = CryptoJS.enc.Hex.parse(result),
|
||
de2 = CryptoJS.enc.Base64.stringify(de1);
|
||
const decrypted = CryptoJS.AES.decrypt(de2, CryptoJS.enc.Utf8.parse(n.substr(10, 16)), {
|
||
iv: CryptoJS.enc.Utf8.parse(n.substr(20, 16)),
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.Pkcs7,
|
||
}).toString(CryptoJS.enc.Utf8);
|
||
return decrypted;
|
||
}
|
||
|
||
}
|
||
//修复自 修改处理后 空值删除得情况 改为不删除
|
||
calculateSign(requestBody) { const sortedKeys = Object.keys(requestBody).sort(); let signContent = sortedKeys.reduce((acc, key) => { const value = requestBody[key]; if (value === null) { return acc } if (typeof value === 'object' && !Array.isArray(value)) { return acc.concat(key).concat(JSON.stringify(value)) } if (Array.isArray(value)) { if (value.length > 0) { let typeOfFirstItem = typeof value[0]; if (typeOfFirstItem === 'object') { let arrayStr = ''; value.forEach((item, index) => { arrayStr += JSON.stringify(item) + (index !== value.length - 1 ? ',' : '') }); return acc.concat(key).concat(arrayStr) } } return acc.concat(key).concat(value.toString()) } return acc.concat(key).concat(value.toString()) }, ''); const secretKey = "048a9c4943398714b356a696503d2d36"; const hashedContent = CryptoJS.MD5(signContent.concat(secretKey)).toString(); return hashedContent }
|
||
|
||
getRandomUA() {
|
||
// 生成 iOS 版本号
|
||
const iOSVersion = (Math.floor(Math.random() * (161 - 120) + 120) / 10).toFixed(1);
|
||
|
||
// 生成 AppleWebKit 版本号
|
||
const AppleWebKitVersion = `${Math.floor(Math.random() * (605 - 500) + 500)}.${Math.floor(Math.random() * 10)}.${Math.floor(Math.random() * 20)}`;
|
||
|
||
// 生成 Mobile 版本号
|
||
const mobileVersion = `${Math.floor(Math.random() * 10)}${String.fromCharCode(65 + Math.floor(Math.random() * 26))}${Math.floor(Math.random() * 10)}`;
|
||
|
||
// 生成 User-Agent 字符串
|
||
const userAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS ${iOSVersion} like Mac OS X) AppleWebKit/${AppleWebKitVersion} (KHTML, like Gecko) Mobile/${mobileVersion}/duapp/5.38.6`;
|
||
|
||
return userAgent;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
!(async () => {
|
||
if (!(await checkEnv())) return;
|
||
if (userList.length > 0) {
|
||
await main()
|
||
|
||
}
|
||
await $.sendMsg($.logs.join("\n"))
|
||
})()
|
||
.catch((e) => console.log(e))
|
||
.finally(() => $.done());
|
||
|
||
//********************************************************
|
||
/**
|
||
* @returns
|
||
*/
|
||
async function checkEnv() {
|
||
let userCookie = ($.isNode() ? process.env[ckName] : $.getdata(ckName)) || "";
|
||
if (userCookie) {
|
||
let e = envSplitor[0];
|
||
for (let o of envSplitor) {
|
||
if (userCookie.indexOf(o) > -1) {
|
||
e = o;
|
||
break;
|
||
}
|
||
}
|
||
|
||
for (let n of userCookie.split(e)) {
|
||
|
||
n && userList.push(new Task(n));
|
||
}
|
||
} else {
|
||
console.log(`未找到CK变量名【${ckName}】`);
|
||
return;
|
||
}
|
||
return console.log(`共找到${userList.length}个账号`), true; //true == !0
|
||
}
|
||
//Env Api =============================
|
||
/*
|
||
* @modifyAuthor @smallfawn
|
||
* @modifyTime 2024-03-25
|
||
* @modifyInfo 重写请求函数 在got环境或axios环境都可以请求 删除不必要的函数
|
||
*/
|
||
function Env(t, s) {
|
||
return new (class {
|
||
constructor(t, s) {
|
||
this.name = t;
|
||
this.data = null;
|
||
this.dataFile = "box.dat";
|
||
this.logs = [];
|
||
this.logSeparator = "\n";
|
||
this.startTime = new Date().getTime();
|
||
Object.assign(this, s);
|
||
this.log("", `\ud83d\udd14${this.name},\u5f00\u59cb!`);
|
||
}
|
||
isNode() {
|
||
return "undefined" != typeof module && !!module.exports;
|
||
}
|
||
isQuanX() {
|
||
return "undefined" != typeof $task;
|
||
}
|
||
isSurge() {
|
||
return "undefined" != typeof $httpClient && "undefined" == typeof $loon;
|
||
}
|
||
isLoon() {
|
||
return "undefined" != typeof $loon;
|
||
}
|
||
async loaddata() {
|
||
if (!this.isNode()) return {};
|
||
this.fs = this.fs ? this.fs : require("fs");
|
||
this.path = this.path ? this.path : require("path");
|
||
const t = this.path.resolve(this.dataFile),
|
||
s = this.path.resolve(process.cwd(), this.dataFile),
|
||
e = this.fs.existsSync(t),
|
||
i = !e && this.fs.existsSync(s);
|
||
if (!e && !i) this.writeFile(this.dataFile, JSON.stringify([]));
|
||
const pt = e ? t : s;
|
||
let r = await this.readFile(pt);
|
||
return r
|
||
}
|
||
async writedata() {
|
||
if (!this.isNode()) return;
|
||
this.fs = this.fs ? this.fs : require("fs");
|
||
this.path = this.path ? this.path : require("path");
|
||
const t = this.path.resolve(this.dataFile),
|
||
s = this.path.resolve(process.cwd(), this.dataFile),
|
||
e = this.fs.existsSync(t),
|
||
i = !e && this.fs.existsSync(s);
|
||
const o = JSON.stringify(this.data, null, 2);
|
||
const pt = e ? t : i ? s : t;
|
||
await writeFile(pt, o)
|
||
}
|
||
readFile(pt) {
|
||
this.fs = this.fs ? this.fs : require("fs");
|
||
return new Promise((resolve, reject) => {
|
||
this.fs.readFile(pt, "utf8", (r, o) => {
|
||
if (r) reject({});
|
||
else o = this.isJSONString(o) ? JSON.parse(o) : o;
|
||
resolve(o);
|
||
});
|
||
});
|
||
}
|
||
writeFile(pt, o) {
|
||
this.fs = this.fs ? this.fs : require("fs");
|
||
return new Promise((resolve, reject) => {
|
||
this.fs.writeFile(pt, o, (r) => {
|
||
if (r) reject(r);
|
||
else resolve();
|
||
});
|
||
});
|
||
}
|
||
async getval(t) {
|
||
if (this.isSurge() || this.isLoon()) {
|
||
return $persistentStore.read(t);
|
||
} else if (this.isQuanX()) {
|
||
return $prefs.valueForKey(t);
|
||
} else if (this.isNode()) {
|
||
this.data = await this.loaddata();
|
||
return await this.data[t];
|
||
} else {
|
||
return (this.data && this.data[t]) || null;
|
||
}
|
||
}
|
||
async setval(t, s) {
|
||
if (this.isSurge() || this.isLoon()) {
|
||
return $persistentStore.write(t, s);
|
||
} else if (this.isQuanX()) {
|
||
return $prefs.setValueForKey(t, s);
|
||
} else if (this.isNode()) {
|
||
this.data = await this.loaddata();
|
||
this.data[s] = t;
|
||
await this.writedata();
|
||
return true;
|
||
} else {
|
||
return (this.data && this.data[s]) || null;
|
||
}
|
||
}
|
||
initRequestEnv(t) {
|
||
try {
|
||
require.resolve("got") &&
|
||
((this.requset = require("got")), (this.requestModule = "got"));
|
||
} catch (e) { }
|
||
try {
|
||
require.resolve("axios") &&
|
||
((this.requset = require("axios")), (this.requestModule = "axios"));
|
||
} catch (e) { }
|
||
this.cktough = this.cktough ? this.cktough : require("tough-cookie");
|
||
this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar();
|
||
if (t) {
|
||
t.headers = t.headers ? t.headers : {};
|
||
if (
|
||
typeof t.headers.Cookie === "undefined" &&
|
||
typeof t.cookieJar === "undefined"
|
||
) {
|
||
t.cookieJar = this.ckjar;
|
||
}
|
||
}
|
||
}
|
||
queryStr(options) {
|
||
return Object.entries(options)
|
||
.map(
|
||
([key, value]) =>
|
||
`${key}=${typeof value === "object" ? JSON.stringify(value) : value
|
||
}`
|
||
)
|
||
.join("&");
|
||
}
|
||
getURLParams(url) {
|
||
const params = {};
|
||
const queryString = url.split("?")[1];
|
||
if (queryString) {
|
||
const paramPairs = queryString.split("&");
|
||
paramPairs.forEach((pair) => {
|
||
const [key, value] = pair.split("=");
|
||
params[key] = value;
|
||
});
|
||
}
|
||
return params;
|
||
}
|
||
isJSONString(str) {
|
||
try {
|
||
return JSON.parse(str) && typeof JSON.parse(str) === "object";
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
isJson(obj) {
|
||
var isjson =
|
||
typeof obj == "object" &&
|
||
Object.prototype.toString.call(obj).toLowerCase() ==
|
||
"[object object]" &&
|
||
!obj.length;
|
||
return isjson;
|
||
}
|
||
async sendMsg(message) {
|
||
if (!message) return;
|
||
if ($.isNode()) {
|
||
await notify.sendNotify($.name, message);
|
||
} else {
|
||
$.msg($.name, "", message);
|
||
}
|
||
}
|
||
async httpRequest(options) {
|
||
let t = { ...options };
|
||
t.headers = t.headers || {};
|
||
if (t.params) {
|
||
t.url += "?" + this.queryStr(t.params);
|
||
}
|
||
t.method = t.method.toLowerCase();
|
||
if (t.method === "get") {
|
||
delete t.headers["Content-Type"];
|
||
delete t.headers["Content-Length"];
|
||
delete t.headers["content-type"];
|
||
delete t.headers["content-length"];
|
||
delete t.body;
|
||
} else if (t.method === "post") {
|
||
let ContentType;
|
||
if (!t.body) {
|
||
t.body = "";
|
||
} else if (typeof t.body === "string") {
|
||
ContentType = this.isJSONString(t.body)
|
||
? "application/json"
|
||
: "application/x-www-form-urlencoded";
|
||
} else if (this.isJson(t.body)) {
|
||
t.body = JSON.stringify(t.body);
|
||
ContentType = "application/json";
|
||
}
|
||
if (!t.headers["Content-Type"] && !t.headers["content-type"]) {
|
||
t.headers["Content-Type"] = ContentType;
|
||
}
|
||
}
|
||
if (this.isNode()) {
|
||
this.initRequestEnv(t);
|
||
if (this.requestModule === "axios" && t.method === "post") {
|
||
t.data = t.body;
|
||
delete t.body;
|
||
}
|
||
let httpResult;
|
||
if (this.requestModule === "got") {
|
||
httpResult = await this.requset(t);
|
||
if (this.isJSONString(httpResult.body)) {
|
||
httpResult.body = JSON.parse(httpResult.body);
|
||
}
|
||
} else if (this.requestModule === "axios") {
|
||
httpResult = await this.requset(t);
|
||
httpResult.body = httpResult.data;
|
||
}
|
||
return httpResult;
|
||
}
|
||
if (this.isQuanX()) {
|
||
t.method = t.method.toUpperCase();
|
||
return new Promise((resolve, reject) => {
|
||
$task.fetch(t).then((response) => {
|
||
if (this.isJSONString(response.body)) {
|
||
response.body = JSON.parse(response.body);
|
||
}
|
||
resolve(response);
|
||
});
|
||
});
|
||
}
|
||
}
|
||
randomNumber(length) {
|
||
const characters = "0123456789";
|
||
return Array.from(
|
||
{ length },
|
||
() => characters[Math.floor(Math.random() * characters.length)]
|
||
).join("");
|
||
}
|
||
randomString(length) {
|
||
const characters = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||
return Array.from(
|
||
{ length },
|
||
() => characters[Math.floor(Math.random() * characters.length)]
|
||
).join("");
|
||
}
|
||
timeStamp() {
|
||
return new Date().getTime();
|
||
}
|
||
uuid() {
|
||
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
|
||
/[xy]/g,
|
||
function (c) {
|
||
var r = (Math.random() * 16) | 0,
|
||
v = c == "x" ? r : (r & 0x3) | 0x8;
|
||
return v.toString(16);
|
||
}
|
||
);
|
||
}
|
||
time(t) {
|
||
let s = {
|
||
"M+": new Date().getMonth() + 1,
|
||
"d+": new Date().getDate(),
|
||
"H+": new Date().getHours(),
|
||
"m+": new Date().getMinutes(),
|
||
"s+": new Date().getSeconds(),
|
||
"q+": Math.floor((new Date().getMonth() + 3) / 3),
|
||
S: new Date().getMilliseconds(),
|
||
};
|
||
/(y+)/.test(t) &&
|
||
(t = t.replace(
|
||
RegExp.$1,
|
||
(new Date().getFullYear() + "").substr(4 - RegExp.$1.length)
|
||
));
|
||
for (let e in s)
|
||
new RegExp("(" + e + ")").test(t) &&
|
||
(t = t.replace(
|
||
RegExp.$1,
|
||
1 == RegExp.$1.length
|
||
? s[e]
|
||
: ("00" + s[e]).substr(("" + s[e]).length)
|
||
));
|
||
return t;
|
||
}
|
||
msg(s = t, e = "", i = "", o) {
|
||
const h = (t) =>
|
||
!t || (!this.isLoon() && this.isSurge())
|
||
? t
|
||
: "string" == typeof t
|
||
? this.isLoon()
|
||
? t
|
||
: this.isQuanX()
|
||
? { "open-url": t }
|
||
: void 0
|
||
: "object" == typeof t && (t["open-url"] || t["media-url"])
|
||
? this.isLoon()
|
||
? t["open-url"]
|
||
: this.isQuanX()
|
||
? t
|
||
: void 0
|
||
: void 0;
|
||
this.isMute ||
|
||
(this.isSurge() || this.isLoon()
|
||
? $notification.post(s, e, i, h(o))
|
||
: this.isQuanX() && $notify(s, e, i, h(o)));
|
||
let logs = ["", "==============📣系统通知📣=============="];
|
||
logs.push(t);
|
||
e ? logs.push(e) : "";
|
||
i ? logs.push(i) : "";
|
||
console.log(logs.join("\n"));
|
||
this.logs = this.logs.concat(logs);
|
||
}
|
||
log(...t) {
|
||
t.length > 0 && (this.logs = [...this.logs, ...t]),
|
||
console.log(t.join(this.logSeparator));
|
||
}
|
||
logErr(t, s) {
|
||
const e = !this.isSurge() && !this.isQuanX() && !this.isLoon();
|
||
e
|
||
? this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t.stack)
|
||
: this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t);
|
||
}
|
||
wait(t) {
|
||
return new Promise((s) => setTimeout(s, t));
|
||
}
|
||
done(t = {}) {
|
||
const s = new Date().getTime(),
|
||
e = (s - this.startTime) / 1e3;
|
||
this.log(
|
||
"",
|
||
`\ud83d\udd14${this.name},\u7ed3\u675f!\ud83d\udd5b ${e}\u79d2`
|
||
);
|
||
this.log();
|
||
if (this.isNode()) {
|
||
process.exit(1);
|
||
}
|
||
if (this.isQuanX()) {
|
||
$done(t);
|
||
}
|
||
}
|
||
})(t, s);
|
||
}
|