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 形态解析正确
This commit is contained in:
2026-11-04 20:49:54 +08:00
parent 89afcd1e60
commit 68721d1abb
4 changed files with 16 additions and 6 deletions

View File

@@ -19,6 +19,10 @@
|---------|---------|----------|----------|----------|
| 京东Cookie辅助脚本 | `jd/scrip_moving_env_enhance.js` | 将JD CK进行重排序,保证所有账号都有助力与被助力的机会 | 需要修改脚本内域名(对应ql的域名) | `59 23 */3 * *` |
| 携趣白名单切换 | `xiequ/scrip_switch.js` | 多个携趣账号,多个IP,自动选择合适的携趣进行白名单切换 | `XQ_ACCOUNTS`<br />`XQ_WHITELIST` | `38 2,8,14,20 * * *` |
| QQ音乐自动签到 | `qqmusic/scrip_qqmusic_checkin.js` | QQ音乐会员成长值任务 + 会员福利站自动签到(签到/挂件/装扮/听书/节目/礼券/月里程碑/抽奖) | `SH_QQMUSIC_KEY`<br />(多账号同名多条,格式 `<uin>#<qm_keyst>`) | `1 0,6 * * *` |
> **文件名约定**:订阅白名单是 `scrip_`,所有脚本文件必须带该前缀才会被拉取。
> 详见各目录下的 README。
## 安装使用

View File

@@ -1,9 +1,12 @@
# QQ音乐自动签到(qqmusic_checkin.js)
# QQ音乐自动签到(scrip_qqmusic_checkin.js)
QQ音乐会员成长值任务 + 会员福利站 自动签到,青龙面板 Node 零依赖。
协议底座与 [LDP924/auto-checkin](https://github.com/LDP924/auto-checkin)(Python)逐字节同源:
`u6.y.qq.com/cgi-bin/musics.fcg` 网关 + `zzc` 签名(sha1 重组 + 置乱表 + b64 去尾)+ `qm_keyst` cookie。
> **文件名必须带 `scrip_` 前缀**:本仓库的青龙订阅规则白名单是 `scrip_`,
> 不带前缀的文件不会被订阅拉取(脚本、测试、文档同一约定)。
## 环境变量
| 变量 | 必填 | 说明 |
@@ -53,7 +56,7 @@ cron: 1 0,6 * * *
## 本地测试
```bash
node --check qqmusic_checkin.js # 语法
node qqmusic_checkin.js # 无 env 时优雅跳过
SH_QQMUSIC_KEY='123#Q_H_L_x' node -e "console.log(require('./qqmusic_checkin').parseAccounts())"
node --check scrip_qqmusic_checkin.js # 语法
node scrip_qqmusic_checkin.js # 无 env 时优雅跳过
SH_QQMUSIC_KEY='123#Q_H_L_x' node -e "console.log(require('./scrip_qqmusic_checkin').parseAccounts())"
```

View File

@@ -1,6 +1,9 @@
#!/usr/bin/env node
/**
* qqmusic_checkin.js —— QQ音乐会员成长值 + 会员福利站 自动签到(青龙 Node 零依赖)
* scrip_qqmusic_checkin.js —— QQ音乐会员成长值 + 会员福利站 自动签到(青龙 Node 零依赖)
*
* 文件名前缀 scrip_ 是订阅白名单要求(ql repo 的 whitelist 参数 = "scrip_"),
* 不带前缀的文件不会被青龙订阅拉取。
*
* 协议底座: u6.y.qq.com/cgi-bin/musics.fcg + zzc 签名 + qm_keyst cookie
* - zzc / time33 实现与 LDP924/auto-checkin qmcommon.py 逐字节同源(sha1 重组 + 置乱表 + b64 去尾)

View File

@@ -3,7 +3,7 @@
'use strict'
const fs = require('fs')
const path = require('path')
const { zzc, time33 } = require(path.join(__dirname, 'qqmusic_checkin.js'))
const { zzc, time33 } = require(path.join(__dirname, 'scrip_qqmusic_checkin.js'))
const expect = JSON.parse(fs.readFileSync(path.join(__dirname, 'test_sign_expect.json'), 'utf8'))
let fails = 0