Commit Graph

2 Commits

Author SHA1 Message Date
3531437898 fix(qqmusic): 修正青龙自动建任务的元数据,任务名与 cron 不再被误提取
真机故障(2026-11-04):青龙订阅勾「自动添加定时任务」后,任务被建成
  名称 = u.hostname,      (应为 QQ音乐自动签到)
  cron = 18 21 * * *      (应为 1 0,6 * * *)

根因是青龙从脚本正文正则提取元数据,两条正则都不锚定行首:
  1) 任务名 /name:\s*(.+)/ —— 全文第一个命中即采用。脚本里 https.request 的
     选项对象写了 hostname: u.hostname,其中的 name 段被当成任务名。
  2) cron /\bcron:\s*([^\r\n]+)/ —— 必须带冒号。原写法是注释里的
     「定时: cron 1 0,6 * * *」,冒号在「定时」后面,cron 后面没有冒号 → 匹配不到,
     落到随机 fallback(randomInt 生成 18 21 * * *)。

修法:
- 脚本第 3 行显式写 name 注解(独占一行,内容为「QQ音乐自动签到」)
- cron 注解改成「cron: 1 0,6 * * *」独占一行,注释挪到下一行
- https.request 选项 hostname -> host(Node 的别名,语义等价,实测 u6.y.qq.com
  返回 404 而非连接失败),彻底消除全文唯一的 name+冒号连写
- README 补「青龙自动建任务的元数据约定」小节,记录两条正则与兜底行为

验证:node --check 通过 / 签名对拍 6 组 PASS / 空 env 优雅跳过 /
复刻青龙两条正则做提取断言,name=QQ音乐自动签到、cron=1 0,6 * * *;
新版青龙(cli/src/internal/subscription/subscriptionRunner.ts 的 cronMetadata)
同样提取正确
2026-11-04 21:13:34 +08:00
68721d1abb refactor(qqmusic): 脚本改名 scrip_qqmusic_checkin.js 以匹配订阅白名单
订阅规则 ql repo 的 whitelist 参数是 "scrip_",只有文件名带该前缀的才会被拉取。
原文件名 qqmusic_checkin.js 不在白名单内,青龙订阅拉不到。

- qqmusic/qqmusic_checkin.js -> qqmusic/scrip_qqmusic_checkin.js(git mv 保留历史)
- test_sign_run.js 的 require 路径同步
- qqmusic/README.md 与根 README.md 更新文件名与白名单约定说明
- 根 README 补 QQ音乐条目(环境变量 SH_QQMUSIC_KEY / cron 1 0,6 * * *)

依赖拉取不受影响:订阅命令的 dependence 参数 sendNotify|common 会额外拉这两个文件,
脚本的 require('../sendNotify') 仍指向青龙内置/仓库根的 sendNotify.js。

验证:node --check 通过 / 签名对拍 6 组向量全 PASS / 空 env 优雅跳过 /
单账号与 & 多账号解析正确 / 整串 cookie 形态解析正确
2026-11-04 20:49:54 +08:00