fix(qdreader): align tasks with upstream flow
This commit is contained in:
+34
-32
@@ -4,12 +4,12 @@
|
||||
//[author: Hermes]
|
||||
//[service: BOSS]
|
||||
//[class: 工具类]
|
||||
//[version: 2.10.9]
|
||||
//[version: 2.11.0]
|
||||
//[platform: web,qq,wx,tg,tb,fs,we]
|
||||
//[public: false]
|
||||
//[price: 0]
|
||||
//[disable: false]
|
||||
//[description: 启点读书(QDReader) Autman 签到插件:保存 QX 抓到的 H5 Cookie,支持手动“启点签到”;定时使用 `1 7 * * *` 每日 07:01 签到;每次签到运行结束后立即归档并清空最近运行日志,不再依赖单独归档定时;带独立 bucket、多用户隔离、请求重试、签名响应解析、结果摘要和安全脱敏。]
|
||||
//[description: 启点读书(QDReader) Autman 签到插件:保存 QX 抓到的 H5 Cookie,支持手动“启点签到”;定时使用 `1 7 * * *` 每日 07:01 签到;完全体可选任务按上游原项目解密流程执行;每次签到运行结束后立即归档并清空最近运行日志,不再依赖单独归档定时;带独立 bucket、多用户隔离、请求重试、签名响应解析、结果摘要和安全脱敏。]
|
||||
//[rule: ^启点(账号|查询|ck|CK|cookie|Cookie|签到|读书|归档|日志归档)(.*)$]
|
||||
//[rule: ^qdreader(.*)$]
|
||||
//[admin: true]
|
||||
@@ -276,7 +276,7 @@ function contentText() {
|
||||
}
|
||||
function usage() {
|
||||
return [
|
||||
"启点读书签到插件 v2.10.9",
|
||||
"启点读书签到插件 v2.11.0",
|
||||
"【一级菜单】",
|
||||
"账号管理:启点账号",
|
||||
"执行查询:启点查询",
|
||||
@@ -640,63 +640,65 @@ function doReceiveGifts(cookie) {
|
||||
}
|
||||
function doAdvTask(cookie) {
|
||||
var main = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
if (!taskResultOk(main)) return { name: "激励任务", ok: false, msg: resultMsg(main) || "获取任务失败", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var tasks = firstArray(nested(main, ["Data", "VideoRewardTab", "TaskList"]), nested(main, ["data", "VideoRewardTab", "TaskList"]), nested(main, ["Data", "TaskList"]), nested(main, ["data", "TaskList"]))
|
||||
if (!tasks.length) return { name: "激励任务", ok: false, msg: "未找到任务列表", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (!taskResultOk(main)) return { name: "激励任务", ok: false, msg: resultMsg(main) || "获取任务列表失败", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var tasks = firstArray(nested(main, ["Data", "DailyBenefitModule", "TaskList"]), nested(main, ["data", "DailyBenefitModule", "TaskList"]))
|
||||
if (!tasks.length) return { name: "激励任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (taskFinished(tasks[tasks.length - 1])) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var submittedCount = 0
|
||||
for (var i = 0; i < tasks.length; i++) {
|
||||
var t = tasks[i] || {}
|
||||
if (taskFinished(t)) continue
|
||||
var tid = taskIdOf(t)
|
||||
if (!tid) continue
|
||||
var fr = finishVideoTask(t, cookie, 1)
|
||||
var fr = finishVideoTask(tid, cookie, 1)
|
||||
submittedCount += fr.ok
|
||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个视频任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
var after = firstArray(nested(verify, ["Data", "VideoRewardTab", "TaskList"]), nested(verify, ["data", "VideoRewardTab", "TaskList"]), nested(verify, ["Data", "TaskList"]), nested(verify, ["data", "TaskList"]))
|
||||
var finished = !!(after && after.length && taskFinished(after[after.length - 1]))
|
||||
return { name: "激励任务", ok: finished, msg: finished ? "已完成" : (submittedCount ? "任务未完成" : "未找到可提交任务"), path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var after = firstArray(nested(verify, ["Data", "DailyBenefitModule", "TaskList"]), nested(verify, ["data", "DailyBenefitModule", "TaskList"]))
|
||||
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
||||
return { name: "激励任务", ok: finished, msg: finished ? "任务已完成" : (submittedCount ? "部分任务未完成" : "未找到可提交任务"), path: "/argus/api/v2/video/adv/mainPage" }
|
||||
}
|
||||
function taskReceived(task) {
|
||||
return Number(field(task, ["IsReceived", "Received", "Status", "status"], 0)) === 1
|
||||
}
|
||||
function doDailyTask(cookie) {
|
||||
var list = qdGet("/argus/api/v3/checkin/packagelist", {}, cookie)
|
||||
if (!taskResultOk(list)) return { name: "每日任务", ok: false, msg: resultMsg(list) || "获取任务列表失败", path: "/argus/api/v3/checkin/packagelist" }
|
||||
var data = list.Data || list.data || {}
|
||||
var pre = field(data, ["Task", "SurpriseTask", "CurrentTask"], null)
|
||||
var main = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
if (!taskResultOk(main)) return { name: "每日任务", ok: false, msg: resultMsg(main) || "获取任务列表失败", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var data = main.Data || main.data || {}
|
||||
var done = 0
|
||||
var pre = data.SurpriseBenefit
|
||||
if (pre && !taskFinished(pre) && taskIdOf(pre)) {
|
||||
var pr = finishVideoTask(pre, cookie, 1)
|
||||
var pr = finishVideoTask(taskIdOf(pre), cookie, 1)
|
||||
done += pr.ok
|
||||
if (pr.ok < pr.total) return { name: "每日任务", ok: false, msg: resultMsg(pr.last) || "惊喜福利任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
var tasks = firstArray(nested(list, ["Data", "PackageList", "TaskList"]), nested(list, ["data", "PackageList", "TaskList"]), nested(list, ["Data", "TaskList"]), nested(list, ["data", "TaskList"]), nested(list, ["Data", "PackageList"]), nested(list, ["data", "PackageList"]))
|
||||
var tasks = firstArray(nested(main, ["Data", "VideoRewardTab", "TaskList"]), nested(main, ["data", "VideoRewardTab", "TaskList"]))
|
||||
if (!tasks.length) return { name: "每日任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var oneAd = null
|
||||
var target = null
|
||||
for (var i = 0; i < tasks.length; i++) {
|
||||
var n = taskTitle(tasks[i])
|
||||
if (!oneAd && /完成\s*1\s*个广告任务|1个广告|one.?ad/i.test(n)) oneAd = tasks[i]
|
||||
if (!target && n === "每日任务") target = tasks[i]
|
||||
var title = taskTitle(tasks[i])
|
||||
if (!oneAd && title === "完成1个广告任务得奖励") oneAd = tasks[i]
|
||||
if (!target && title === "完成3个广告任务得奖励") target = tasks[i]
|
||||
}
|
||||
if (!target) for (var k = 0; k < tasks.length; k++) { var n2 = taskTitle(tasks[k]); if (/每日|daily/i.test(n2)) { target = tasks[k]; break } }
|
||||
if (oneAd && oneAd !== target && !taskFinished(oneAd) && taskIdOf(oneAd)) {
|
||||
var ar = finishVideoTask(oneAd, cookie, 1)
|
||||
if (oneAd && !taskReceived(oneAd) && taskIdOf(oneAd)) {
|
||||
var ar = finishVideoTask(taskIdOf(oneAd), cookie, 1)
|
||||
done += ar.ok
|
||||
if (ar.ok < ar.total) return { name: "每日任务", ok: false, msg: resultMsg(ar.last) || "完成1个广告任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
if (!target) return { name: "每日任务", ok: true, msg: done ? ("完成 " + done + " 次") : "无每日任务", path: "/argus/api/v3/checkin/packagelist" }
|
||||
if (taskFinished(target)) return { name: "每日任务", ok: true, msg: "已完成", path: "/argus/api/v3/checkin/packagelist" }
|
||||
if (!target) return { name: "每日任务", ok: false, msg: "未找到每日任务任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (taskReceived(target)) return { name: "每日任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var tid = taskIdOf(target)
|
||||
if (!tid) return { name: "每日任务", ok: true, msg: done ? ("完成 " + done + " 次") : "无每日任务", path: "/argus/api/v3/checkin/packagelist" }
|
||||
var tr = finishVideoTask(target, cookie, taskRunCount(target, 3))
|
||||
if (!tid) return { name: "每日任务", ok: false, msg: "每日任务缺少 TaskId", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var tr = finishVideoTask(tid, cookie, 3)
|
||||
done += tr.ok
|
||||
if (tr.ok < tr.total) return { name: "每日任务", ok: false, msg: resultMsg(tr.last) || "每日任务广告失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
var after = firstArray(nested(verify, ["Data", "VideoRewardTab", "TaskList"]), nested(verify, ["data", "VideoRewardTab", "TaskList"]), nested(verify, ["Data", "TaskList"]), nested(verify, ["data", "TaskList"]))
|
||||
var after = firstArray(nested(verify, ["Data", "VideoRewardTab", "TaskList"]), nested(verify, ["data", "VideoRewardTab", "TaskList"]))
|
||||
var finished = false
|
||||
for (var v = 0; v < after.length; v++) if (taskIdKey(taskIdOf(after[v])) === taskIdKey(tid) && taskFinished(after[v])) { finished = true; break }
|
||||
if (!finished) for (var x = 0; x < after.length; x++) if (taskTitle(after[x]) === "每日任务" && taskFinished(after[x])) { finished = true; break }
|
||||
return { name: "每日任务", ok: finished || done > 0, msg: finished ? "已完成" : (done > 0 ? ("完成 " + done + " 次") : "任务未完成"), path: "/argus/api/v3/checkin/packagelist" }
|
||||
for (var v = 0; v < after.length; v++) if (taskTitle(after[v]) === "完成3个广告任务得奖励" && taskReceived(after[v])) { finished = true; break }
|
||||
return { name: "每日任务", ok: finished, msg: finished ? "任务已完成" : "任务未完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
}
|
||||
function doLotteryTask(cookie) {
|
||||
var detail = qdGet("/argus/api/v2/checkin/detail", {}, cookie)
|
||||
|
||||
Reference in New Issue
Block a user