From 04db3340155626c27d6ba8b504b0baba089c6cb0 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 17 May 2026 16:10:59 +0800 Subject: [PATCH] chore: remove legacy qx compatibility paths --- README.md | 17 ++---- docs/qx-rewrite-lessons.md | 13 +---- qx/rewrite/qdreader_cookie.js | 71 ------------------------- qx/subscribe/qdreader.qx.snippet | 2 - qx/subscribe/qdreader.subscription.json | 2 - 5 files changed, 6 insertions(+), 99 deletions(-) delete mode 100644 qx/rewrite/qdreader_cookie.js delete mode 100644 qx/subscribe/qdreader.qx.snippet delete mode 100644 qx/subscribe/qdreader.subscription.json diff --git a/README.md b/README.md index 56c7470..67bc662 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,10 @@ ## 仓库结构 ```text -conf/qdreader.conf # 起点读书 QX 远程重写订阅文本,参考 chickliu/qx 老仓库风格 -js/qdreader_cookie.js # 起点读书 QX Rewrite 脚本入口 -qx/subscribe/qdreader.subscription.json # 兼容旧订阅地址,内容同 conf/qdreader.conf -qx/subscribe/qdreader.qx.snippet # 兼容旧片段地址,内容同 conf/qdreader.conf -qx/rewrite/qdreader_cookie.js # 兼容旧脚本地址,内容同 js/qdreader_cookie.js -docs/qx-rewrite-lessons.md # 本次制作经验 -source/qdreader.upstream.js # 上游 QDReader 脚本备份 +conf/qdreader.conf # 起点读书 QX 远程重写订阅文本,参考 chickliu/qx 老仓库风格 +js/qdreader_cookie.js # 起点读书 QX Rewrite 脚本入口 +docs/qx-rewrite-lessons.md # 本次制作经验 +source/qdreader.upstream.js # 上游 QDReader 脚本备份 ``` ## 当前订阅地址 @@ -22,12 +19,6 @@ source/qdreader.upstream.js # 上游 QDReader 脚本备份 https://gitea.chickliu.fun/Hermes/qx/raw/branch/main/conf/qdreader.conf ``` -兼容旧地址: - -```text -https://gitea.chickliu.fun/Hermes/qx/raw/branch/main/qx/subscribe/qdreader.subscription.json -``` - ## 订阅内容 ```text diff --git a/docs/qx-rewrite-lessons.md b/docs/qx-rewrite-lessons.md index 812e014..6ea6813 100644 --- a/docs/qx-rewrite-lessons.md +++ b/docs/qx-rewrite-lessons.md @@ -2,20 +2,13 @@ ## 仓库结构 -参考 `chickliu/qx` 老仓库风格,推荐保留这两个顶层目录: +参考 `chickliu/qx` 老仓库风格,仓库只保留通用顶层目录,不再保留旧兼容路径: ```text conf/ # Quantumult X 远程重写订阅文本 js/ # Rewrite 脚本入口,订阅文本直接引用这里 ``` -本仓库为了兼容历史路径,也保留: - -```text -qx/subscribe/ # 旧订阅地址,内容与 conf/qdreader.conf 同步 -qx/rewrite/ # 旧脚本地址,内容与 js/qdreader_cookie.js 同步 -``` - ## QX 订阅格式 BOSS 常用的远程订阅不是 JSON 对象,而是类似下面的纯文本: @@ -62,10 +55,8 @@ Autman 插件保留快捷命令: ## 验证清单 - `node --check js/qdreader_cookie.js` -- `node --check qx/rewrite/qdreader_cookie.js` - raw 地址返回 HTTP 200: - `conf/qdreader.conf` - `js/qdreader_cookie.js` - - 兼容旧地址 `qx/subscribe/qdreader.subscription.json` - - 兼容旧地址 `qx/rewrite/qdreader_cookie.js` - 订阅文本内容第一行是 `hostname = ...`,第二行是 rewrite rule。 +- 新增重写时按 `conf/.conf` + `js/.js` 放置,不再创建 `qx/subscribe/` 或 `qx/rewrite/` 兼容目录。 diff --git a/qx/rewrite/qdreader_cookie.js b/qx/rewrite/qdreader_cookie.js deleted file mode 100644 index 437efe7..0000000 --- a/qx/rewrite/qdreader_cookie.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 启点读书 Cookie 自动获取/更新 - Quantumult X - * 只负责抓取 Cookie 并弹窗展示“复制给 Autman 机器人”的快速登录命令,不主动请求 Autman,也不本地持久化。 - * - * 抓取:打开起点读书 App → 我的 → 福利中心。 - * 抓到后会: - * 1. 解析 uid 用于弹窗标题 - * 2. 通知/弹窗里展示完整快速登录命令 + CK,便于直接复制 - */ - -function getHeader(headers, name) { - const lower = String(name).toLowerCase() - for (const k in (headers || {})) if (String(k).toLowerCase() === lower) return headers[k] - return '' -} -function parseCookie(cookie) { - const jar = {} - String(cookie || '').split(';').forEach(part => { - const i = part.indexOf('=') - if (i <= 0) return - const k = part.slice(0, i).trim() - const v = part.slice(i + 1).trim() - if (k) jar[k] = v - }) - return jar -} -function b64decode(s) { - try { return decodeURIComponent(escape(atob(String(s || '')))) } catch (e) { return '' } -} -function uidFromQDHeader(qdheader) { - const decoded = b64decode(qdheader) - return decoded ? String(decoded.split('|')[0] || '').trim() : '' -} -function parseJson(s, def) { try { return JSON.parse(s) } catch (e) { return def } } -function getUid(cookie, body) { - const jar = parseCookie(cookie) - let uid = uidFromQDHeader(jar.QDHeader || jar.qdheader || jar.QDHEADER || '') - if (uid) return uid - if (jar.uid) return String(jar.uid) - const obj = parseJson(body || '', null) - uid = obj && obj.Data && obj.Data.UserInfo && (obj.Data.UserInfo.UserId || obj.Data.UserInfo.userId) - return uid ? String(uid) : '' -} -function notify(title, sub, msg, opts) { - try { $notify(title, sub || '', msg || '', opts || {}) } catch (e) { $notify(title, sub || '', msg || '') } -} -function copyAction(command) { - return { - 'open-url': 'shortcuts://run-shortcut?name=Copy&input=text&text=' + encodeURIComponent(command), - 'media-url': 'data:text/plain;charset=utf-8,' + encodeURIComponent(command) - } -} - -const cookie = getHeader($request && $request.headers, 'Cookie') -if (!cookie) { - notify('启点读书', 'Cookie 获取失败', '请求中没有 Cookie') - $done({}) -} else { - const body = typeof $response !== 'undefined' ? ($response.body || '') : '' - const uid = getUid(cookie, body) - if (!uid) { - notify('启点读书', 'Cookie 获取失败', '无法识别 uid,请确认已登录并进入福利中心') - $done({}) - } else { - // 发给 Autman 机器人的完整快速登录命令。Autman 插件保留“启点ck ”快速提交通道。 - const submitText = `启点ck ${cookie}` - const msg = submitText - notify('启点读书', `抓取成功 uid:${uid}`, msg, copyAction(submitText)) - $done({}) - } -} diff --git a/qx/subscribe/qdreader.qx.snippet b/qx/subscribe/qdreader.qx.snippet deleted file mode 100644 index c80d61b..0000000 --- a/qx/subscribe/qdreader.qx.snippet +++ /dev/null @@ -1,2 +0,0 @@ -hostname = h5.if.qidian.com -^https:\/\/h5\.if\.qidian\.com\/argus\/api\/v1\/user\/getlogininfo url script-response-body https://gitea.chickliu.fun/Hermes/qx/raw/branch/main/js/qdreader_cookie.js diff --git a/qx/subscribe/qdreader.subscription.json b/qx/subscribe/qdreader.subscription.json deleted file mode 100644 index c80d61b..0000000 --- a/qx/subscribe/qdreader.subscription.json +++ /dev/null @@ -1,2 +0,0 @@ -hostname = h5.if.qidian.com -^https:\/\/h5\.if\.qidian\.com\/argus\/api\/v1\/user\/getlogininfo url script-response-body https://gitea.chickliu.fun/Hermes/qx/raw/branch/main/js/qdreader_cookie.js