fix(qdreader): keep archive and sign in one plugin
This commit is contained in:
@@ -4,16 +4,17 @@
|
||||
//[author: Hermes]
|
||||
//[service: BOSS]
|
||||
//[class: 工具类]
|
||||
//[version: 2.5.1]
|
||||
//[version: 2.5.2]
|
||||
//[platform: web,qq,wx,tg,tb,fs,we]
|
||||
//[public: false]
|
||||
//[price: 0]
|
||||
//[disable: false]
|
||||
//[description: 启点读书(QDReader) Autman 签到插件:保存 QX 抓到的 H5 Cookie,支持手动“启点签到”和每日 07:15 定时签到;日志归档由独立归档插件每日 00:00 执行;带独立 bucket、多用户隔离、请求重试、签名响应解析、结果摘要和安全脱敏。]
|
||||
//[rule: ^启点(账号|查询|ck|CK|cookie|Cookie|签到|读书)(.*)$]
|
||||
//[description: 启点读书(QDReader) Autman 签到插件:保存 QX 抓到的 H5 Cookie,支持手动“启点签到”和每日 07:15 定时签到,每日 00:00 独立归档并清空日志;带独立 bucket、多用户隔离、请求重试、签名响应解析、结果摘要和安全脱敏。]
|
||||
//[rule: ^启点(账号|查询|ck|CK|cookie|Cookie|签到|读书|归档|日志归档)(.*)$]
|
||||
//[rule: ^qdreader(.*)$]
|
||||
//[admin: true]
|
||||
//[priority: 600]
|
||||
//[cron: 0 0 * * *]
|
||||
//[cron: 15 7 * * *]
|
||||
|
||||
|
||||
@@ -260,7 +261,7 @@ function contentText() {
|
||||
}
|
||||
function usage() {
|
||||
return [
|
||||
"启点读书签到插件 v2.5.1",
|
||||
"启点读书签到插件 v2.5.2",
|
||||
"【一级菜单】",
|
||||
"账号管理:启点账号",
|
||||
"执行查询:启点查询",
|
||||
@@ -270,12 +271,13 @@ function usage() {
|
||||
"指定签到:启点签到 <uid>",
|
||||
"【配置】",
|
||||
"签名网关:Autman 参数 hermes_qidian.qdreader_sign_api,默认 " + DEFAULT_SIGN_API,
|
||||
"定时:每日 07:15 自动签到;日志归档由独立插件每日 00:00 执行;QX 只负责抓 cookie。"
|
||||
"定时:每日 00:00 只归档并清空日志;每日 07:15 只自动签到;QX 只负责抓 cookie。"
|
||||
].join("\n")
|
||||
}
|
||||
function stripCommand(text) {
|
||||
var s = String(text || "")
|
||||
if (/^启点(?:签到|读书)(?:\s|$)/i.test(s)) return trim(s.replace(/^启点(?:签到|读书)\s*/i, ""))
|
||||
if (/^启点(?:归档|日志归档)(?:\s|$)/i.test(s)) return trim(s.replace(/^启点(?:归档|日志归档)\s*/i, ""))
|
||||
if (/^启点(?:查询)(?:\s|$)/i.test(s)) return trim(s.replace(/^启点(?:查询)\s*/i, ""))
|
||||
if (/^启点(?:账号)(?:\s|$)/i.test(s)) return trim(s.replace(/^启点(?:账号)\s*/i, ""))
|
||||
if (/^启点(?:ck|CK|cookie|Cookie)(?:\s|$)/i.test(s)) return trim(s.replace(/^启点(?:ck|CK|cookie|Cookie)\s*/i, ""))
|
||||
@@ -283,7 +285,9 @@ function stripCommand(text) {
|
||||
}
|
||||
function commandName(text) {
|
||||
if (/^启点(?:签到|读书)(?:\s|$)/i.test(text)) return "sign"
|
||||
if (/^启点(?:归档|日志归档)(?:\s|$)/i.test(text)) return "archive"
|
||||
if (/^qdreader\s+sign(?:\s|$)/i.test(text)) return "sign"
|
||||
if (/^qdreader\s+archive(?:\s|$)/i.test(text)) return "archive"
|
||||
if (/^启点(?:查询)(?:\s|$)/i.test(text)) return "status"
|
||||
if (/^启点(?:账号)(?:\s|$)/i.test(text)) return "account"
|
||||
return "ck"
|
||||
@@ -448,6 +452,23 @@ function latestArchiveForVisible(uids) {
|
||||
}
|
||||
return null
|
||||
}
|
||||
function cronMode() {
|
||||
var d = new Date()
|
||||
var h = d.getHours ? d.getHours() : 7
|
||||
var m = d.getMinutes ? d.getMinutes() : 15
|
||||
if (h === 0 && m < 10) return "archive"
|
||||
return "sign"
|
||||
}
|
||||
function formatArchiveReply(ret) {
|
||||
if (ret && ret.archived) {
|
||||
var run = ret.run || {}
|
||||
return "启点读书日志归档完成:" + ret.key + "\n" +
|
||||
"来源:" + sourceName(run.source) + "\n" +
|
||||
"成功 " + (run.okCount || 0) + " / 失败 " + (run.failCount || 0) + " / 总计 " + (run.total || 0) + "\n" +
|
||||
"已清空当日运行日志,后续查询可从归档判断签到情况"
|
||||
}
|
||||
return "启点读书日志归档完成:无可归档批次;已清空当日运行日志"
|
||||
}
|
||||
function sourceName(source) {
|
||||
if (source === "cron") return "定时任务/零点任务"
|
||||
if (source === "menu") return "菜单立即执行"
|
||||
@@ -760,13 +781,17 @@ function handleSaveCookie(arg, store, bind) {
|
||||
function main() {
|
||||
var text = contentText()
|
||||
var isCronRun = !text
|
||||
var cmd = isCronRun ? "sign" : commandName(text)
|
||||
var arg = isCronRun ? "" : trim(stripCommand(text).replace(/^sign\s*/i, ""))
|
||||
if (!arg && cmd !== "sign" && cmd !== "account" && cmd !== "status") { reply(usage()); return }
|
||||
var cmd = isCronRun ? cronMode() : commandName(text)
|
||||
var arg = isCronRun ? "" : trim(stripCommand(text).replace(/^(sign|archive)\s*/i, ""))
|
||||
if (!arg && cmd !== "sign" && cmd !== "archive" && cmd !== "account" && cmd !== "status") { reply(usage()); return }
|
||||
if (/^(帮助|help|h)$/i.test(arg)) { reply(usage()); return }
|
||||
|
||||
var store = getStore()
|
||||
var bind = getBindStore()
|
||||
if (cmd === "archive" || /^(归档|日志归档|archive)(?:\s+|$)/i.test(arg)) {
|
||||
reply(formatArchiveReply(archiveRunLog(isCronRun ? "midnight-archive" : "manual-archive")))
|
||||
return
|
||||
}
|
||||
if (cmd === "sign" || /^(签到|sign|run)(?:\s+|$)/i.test(arg)) {
|
||||
var target = trim(arg.replace(/^(签到|sign|run)\s*/i, ""))
|
||||
var out = signAll(target, isCronRun, isCronRun ? "cron" : "manual")
|
||||
|
||||
Reference in New Issue
Block a user