145 lines
3.7 KiB
Markdown
145 lines
3.7 KiB
Markdown
# 启点读书 QDReader 签到 Autman 插件
|
||
|
||
QDReader/起点读书 Autman 签到插件。用户侧触发词统一使用“启点”,避免平台关键词麻烦;QX 只负责抓取 Cookie,账号管理、执行查询和签到都在 Autman 插件内完成。
|
||
|
||
## 文件位置
|
||
|
||
正式插件文件:
|
||
|
||
```text
|
||
plugins/qdreader/qdreader_sign_autman.js
|
||
```
|
||
|
||
实机 JS 导入副本:
|
||
|
||
```text
|
||
js/qdreader_sign_autman.js
|
||
```
|
||
|
||
Raw 链接:
|
||
|
||
```text
|
||
https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/plugins/qdreader/qdreader_sign_autman.js
|
||
https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sign_autman.js
|
||
```
|
||
|
||
## 当前交互设计
|
||
|
||
### 一级菜单
|
||
|
||
```text
|
||
启点账号
|
||
启点查询
|
||
```
|
||
|
||
`启点账号` 只负责账号管理:
|
||
|
||
```text
|
||
启点账号管理
|
||
1. 查看账号
|
||
2. 添加/更新账号
|
||
3. 账号详情/修改备注
|
||
4. 删除账号
|
||
5. 清空账号
|
||
q. 退出
|
||
请回复序号
|
||
```
|
||
|
||
`启点查询` 只负责最后执行日志和执行动作,不做实时接口查询:
|
||
|
||
```text
|
||
启点查询(最近签到记录)
|
||
1. 查看最近签到记录
|
||
2. 查询单个账号最近记录
|
||
3. 立即执行签到
|
||
q. 退出
|
||
请回复序号
|
||
```
|
||
|
||
### 快速通道
|
||
|
||
```text
|
||
启点ck <QX抓到的完整cookie>
|
||
启点签到
|
||
启点签到 <uid>
|
||
qdreader sign
|
||
```
|
||
|
||
`启点ck` 只保留快速提交 Cookie,不再承担查询/导出/批量导入等管理功能。
|
||
|
||
## 账号与备注
|
||
|
||
- 保存 Cookie 后自动绑定当前 `sender.getUserID()`。
|
||
- 查询、删除、手动签到默认只操作当前用户绑定的账号。
|
||
- 账号详情、删除、单账号查询都使用编号选择,不要求用户复制/输入 UID。
|
||
- 添加/更新账号后会提示是否添加备注。
|
||
- 修改备注在“账号详情/修改备注”中完成。
|
||
- 删除账号或清空当前用户账号时,会同步清理对应备注。
|
||
- 普通回复只展示脱敏 UID 和备注,不输出完整 Cookie。
|
||
|
||
## 存储
|
||
|
||
主数据桶:
|
||
|
||
```text
|
||
hermes_qidian
|
||
```
|
||
|
||
主要 key:
|
||
|
||
```text
|
||
qdreader_cookie_json # uid -> full cookie
|
||
qdreader_user_bind_json # uid -> sender.getUserID()
|
||
qdreader_remark_json # uid -> 备注名
|
||
qdreader_last_result_json # uid -> 单账号最后执行结果 JSON 字符串
|
||
qdreader_last_run_json # 最近一次执行批次日志、来源和汇总
|
||
qdreader_sign_api # 签名网关
|
||
qdreader_retry_count # 请求失败重试次数
|
||
qdreader_cron_silent # 定时无账号静默
|
||
```
|
||
|
||
读取兼容顺序:
|
||
|
||
```text
|
||
bucketGet("hermes_qidian", key)
|
||
↓ fallback
|
||
get(key)
|
||
↓ fallback
|
||
bucketGet("otto", key) # 旧数据兼容
|
||
```
|
||
|
||
写入顺序:
|
||
|
||
```text
|
||
bucketSet("hermes_qidian", key, value)
|
||
set(key, value)
|
||
```
|
||
|
||
## 签名与签到流程
|
||
|
||
1. 从 Cookie 解析 `QDHeader/qdh/uid/guid/qimei/qimei36`。
|
||
2. `POST <qdreader_sign_api>/sign` 获取请求签名头。
|
||
3. `POST https://h5.if.qidian.com/argus/api/v3/checkin/checkin` 完成签到。
|
||
4. 写入单账号最后结果 `qdreader_last_result_json`,包括 `ok/msg/time/source/runId`。
|
||
5. 写入批次日志 `qdreader_last_run_json`,包括触发来源、开始/结束时间、成功/失败/总数和每账号结果;即使账号执行异常也会记录失败日志。
|
||
6. 汇总每个账号签到结果。
|
||
|
||
## 查询数据来源
|
||
|
||
`启点查询` 不请求起点实时接口,只读取最后执行日志:
|
||
|
||
```text
|
||
qdreader_last_run_json # 最近一次执行批次
|
||
qdreader_last_result_json # 每个 uid 最近一次执行结果
|
||
```
|
||
|
||
因此“查询”语义是“最近签到记录/最后执行日志”。刚添加但从未执行过的账号会显示“暂无执行记录”。
|
||
|
||
## 本地验证
|
||
|
||
```bash
|
||
node -c plugins/qdreader/qdreader_sign_autman.js
|
||
node -c js/qdreader_sign_autman.js
|
||
node tests/qdreader_plugin.test.mjs
|
||
```
|