fix(qdreader): restore upstream adv task flow
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
//[author: Hermes]
|
||||
//[service: BOSS]
|
||||
//[class: 工具类]
|
||||
//[version: 2.10.6]
|
||||
//[version: 2.10.7]
|
||||
//[platform: web,qq,wx,tg,tb,fs,we]
|
||||
//[public: false]
|
||||
//[price: 0]
|
||||
@@ -276,7 +276,7 @@ function contentText() {
|
||||
}
|
||||
function usage() {
|
||||
return [
|
||||
"启点读书签到插件 v2.10.6",
|
||||
"启点读书签到插件 v2.10.7",
|
||||
"【一级菜单】",
|
||||
"账号管理:启点账号",
|
||||
"执行查询:启点查询",
|
||||
@@ -603,18 +603,8 @@ function taskTitle(task) { return String(field(task, ["Title", "TaskName", "Name
|
||||
function taskIdOf(task) { return field(task, ["TaskId", "TaskID", "taskId", "TaskIDStr", "Id", "id"], "") }
|
||||
function taskFinished(task) { return Number(field(task, ["IsFinished", "Finished", "Status", "status"], 0)) === 1 }
|
||||
function taskIdKey(id) { return String(id === undefined || id === null ? "" : id) }
|
||||
function taskRemainingCount(task) {
|
||||
var cur = Number(field(task, ["Count", "count", "FinishedCount", "finishedCount", "FinishCount", "finishCount", "CurrentCount", "currentCount", "CompleteCount", "completeCount", "DoneCount", "doneCount", "Num", "num"], NaN))
|
||||
var total = Number(field(task, ["NeedCount", "needCount", "TargetCount", "targetCount", "TotalCount", "totalCount", "MaxCount", "maxCount", "Times", "times", "Limit", "limit"], NaN))
|
||||
if (!isNaN(total) && total > 0) {
|
||||
if (!isNaN(cur) && cur >= 0 && cur < total) return Math.min(10, Math.max(1, Math.ceil(total - cur)))
|
||||
return Math.min(10, Math.max(1, Math.ceil(total)))
|
||||
}
|
||||
if (!isNaN(cur) && cur > 1) return Math.min(10, Math.ceil(cur))
|
||||
return 1
|
||||
}
|
||||
function taskRunCount(task, def) {
|
||||
var n = taskRemainingCount(task)
|
||||
var n = Number(field(task, ["NeedCount", "needCount", "Count", "count", "TotalCount", "totalCount", "Times", "times", "Limit", "limit"], def || 1))
|
||||
if (!n || isNaN(n) || n < 1) n = def || 1
|
||||
if (n > 10) n = 10
|
||||
return n
|
||||
@@ -655,55 +645,26 @@ function doReceiveGifts(cookie) {
|
||||
var ok = taskResultOk(res)
|
||||
return { name: "领取奖励", ok: !!ok, msg: resultMsg(res) || (ok ? "领取成功" : "领取失败"), path: "/argus/api/v3/checkin/receivegifts" }
|
||||
}
|
||||
function advCompletionLooksUpstreamComplete(tasks, submittedIds) {
|
||||
if (!tasks || !tasks.length) return false
|
||||
if (tasks[tasks.length - 1] && taskFinished(tasks[tasks.length - 1])) return true
|
||||
for (var i = 0; i < tasks.length; i++) {
|
||||
var t = tasks[i]
|
||||
var id = taskIdKey(taskIdOf(t))
|
||||
if (id && submittedIds && submittedIds[id] && taskFinished(t)) return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
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: true, msg: "无待完成任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (advCompletionLooksUpstreamComplete(tasks, null)) return { name: "激励任务", ok: true, msg: "已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var submittedIds = {}
|
||||
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
|
||||
var skippedCount = 0
|
||||
for (var i = 0; i < tasks.length; i++) {
|
||||
var t = tasks[i] || {}
|
||||
if (taskFinished(t)) continue
|
||||
var tid = taskIdOf(t)
|
||||
if (!tid) continue
|
||||
if (!advTaskActionable(t)) { skippedCount++; continue }
|
||||
var fr = finishVideoTask(t, cookie)
|
||||
if (fr.taskId) { submittedIds[taskIdKey(fr.taskId)] = true; submittedCount += fr.ok }
|
||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("任务 " + tid + " 失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
var fr = finishVideoTask(t, 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" }
|
||||
}
|
||||
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 unfinishedSubmitted = 0
|
||||
var actionableLeft = 0
|
||||
var upstreamDone = advCompletionLooksUpstreamComplete(after, submittedIds)
|
||||
for (var v = 0; v < after.length; v++) {
|
||||
var at = after[v]
|
||||
var aid = taskIdKey(taskIdOf(at))
|
||||
if (!aid) continue
|
||||
if (submittedIds[aid]) {
|
||||
if (!taskFinished(at)) unfinishedSubmitted++
|
||||
continue
|
||||
}
|
||||
if (!taskFinished(at) && advTaskActionable(at)) actionableLeft++
|
||||
}
|
||||
var submittedKeys = Object.keys(submittedIds)
|
||||
var finished = upstreamDone || (submittedKeys.length ? unfinishedSubmitted === 0 : actionableLeft === 0)
|
||||
var suffix = skippedCount ? (",跳过 " + skippedCount + " 个需其它入口任务") : ""
|
||||
var left = submittedKeys.length ? unfinishedSubmitted : actionableLeft
|
||||
return { name: "激励任务", ok: finished, msg: finished ? (submittedKeys.length ? ("已完成" + suffix) : ("无待完成任务" + suffix)) : (submittedCount ? ("已提交 " + submittedCount + " 个视频任务,仍有 " + left + " 个未完成" + suffix) : ("仍有 " + left + " 个未完成" + suffix)), path: "/argus/api/v2/video/adv/mainPage" }
|
||||
var finished = !!(after && after.length && taskFinished(after[after.length - 1]))
|
||||
return { name: "激励任务", ok: finished, msg: finished ? "已完成" : (submittedCount ? "任务未完成" : "未找到可提交任务"), path: "/argus/api/v2/video/adv/mainPage" }
|
||||
}
|
||||
function doDailyTask(cookie) {
|
||||
var list = qdGet("/argus/api/v3/checkin/packagelist", {}, cookie)
|
||||
|
||||
Reference in New Issue
Block a user