snowy-yang
|
aa4f2eec67
|
feat(kw): 取流双通道重构——mobi.s convert_url_with_sign 主通道
主通道 mobi.s(keluze 指纹,user=0 匿名):VIP/付费歌放行真音频,
晴天 320k mp3/2000k flac 与 N_MINFO 元数据逐字节吻合,hi-res 可用;
档位缺失会静默降级甚至吐 mgg/mflac 加密,必须严格校验
「返回 bitrate==请求档位 且格式为明文」否则沿降级链换档重试。
回退通道 web playUrl(Hm_Iuvt cookie 异或哈希 Secret 签名):匿名恒 128k,
VIP 歌明确拒绝,仅作 mobi 网络故障兜底。旧 antiserver 链移除。
|
2026-10-01 22:43:43 +08:00 |
|
snowy-yang
|
ddc44a276d
|
fix(kg): /v5/url 成功响应按顶层 url/backupUrl 数组解析
网关成功(status:1)时播放地址在顶层 url: string[] 与 backupUrl: string[],
并非旧 data:[{url}] 结构,导致 VIP 登录后所有取流仍报"获取失败";
旧结构保留为兜底。album_audio_id/album_id 加 Number.isFinite 守卫——
/url 路由把 hash 传给 songmid 时 Number(hash)=NaN 会被网关拒答。
实测珊瑚海四档(VIP)全通,320k/flac/hi-res 与曲库大小逐字节吻合。
|
2026-10-01 22:43:29 +08:00 |
|
snowy-yang
|
0f9989b26f
|
feat(login): kg 扫码/短信验证码登录、QQ 扫码登录
- kg:sdk/auth 新增 qrKey/qrCheck 扫码与 sendCaptcha/cellphoneLogin 短信登录,路由接线
- tx:新增 /login/tx/qr(/check)(移植 sansenjian/qq-music-api):ptlogin 扫码 →
check_sig 换 p_skey → OAuth authorize 换 code → QQConnectLogin 换凭据;
状态码对齐 wy(800 过期/801 等待/802 已扫/803 成功),qrsig 失效 403 映射 800;
成功凭据入库(通常含 openid/refresh_key,可走自动续期)
|
2026-10-01 16:35:08 +08:00 |
|
snowy-yang
|
96f6a7fe91
|
feat(source): 外部音源迁 src/ 并新增 source-simple 进程内直载
- apis/source(.ivm).ts → src/source(.ivm).ts(音源属服务端职责,不入 SDK)
- 新增 src/source-simple.ts:sources/*.mjs 进程内直载(getMusicUrl 极简契约),
与 *.js 的 IVM 沙箱(globalThis.lx 契约)按扩展名混排候选链,失败降权冷却
- server 挂载决策:SOURCE_ENABLED 非 0/false 启用,/url 取流分流到外部音源;
音源模式下登录态不参与取流,自动续期不启动(手动 /login/refresh 仍可用)
- 新增 src/env.ts(.env 最先加载)与 test/source-simple-test.ts(并入 pnpm test)
|
2026-10-01 16:35:08 +08:00 |
|
snowy-yang
|
66d06ef48a
|
refactor(sdk): tipSearch 全删、歌词解码器归位、IPC 桥移除、api-source 层拆除
- 四平台 tipSearch 全部删除(永不做搜索联想),types 同步去掉 tipSearch 字段
- 歌词解码器归位:kg/krcDecode、tx/qrcDecode、kw/lyricDecode(原 common/ 下三处)
- rendererIpc/ipcNames IPC 桥删除,SDK 纯服务端化
- supportQuality 由各平台 apis 内联导出(sdk/index 汇总),kg/kw/tx/wy 改直连 apis/*,api-source 旧层移除
|
2026-10-01 16:33:53 +08:00 |
|
snowy-yang
|
3c51e4d06a
|
feat(dev): 热重载开发模式(node --watch 限定 src/sdk/sources 目录)
- package.json 新增 dev 脚本;--watch-path 限定监视范围,
规避 @fastify/swagger-ui 启动时写 node_modules 触发的多余重启
- start.bat 支持 dev 参数(保留 SOURCE_ENABLED 外部音源开关)
- README 快速开始补充 pnpm dev
|
2026-09-29 20:24:40 +08:00 |
|
snowy-yang
|
aca7928019
|
feat(login): kg/tx 登录态自动续期(移植 lx-music-api-server 方案)
- kg: login_by_token 续期(AES-256-CBC + RSA 裸加密,参考其 refresh/kg.py),新 token 回写 data/auth.json
- tx: 新增 sdk/auth/tx.ts —— cookie 解析、VIP 检测(vip_login_base)、
music.login.LoginServer 续期(走既有 musicu.fcg 未签名通道,最佳努力)
- 调度:启动 10s 后首刷 + 每 24h 一次(对齐参考项目 86400s + next_run_time=now)
- /login/tx 支持可选 App 抓包凭据(openId/accessToken/refreshToken/refreshKey)
- 新增 POST /login/refresh 手动续期;/login/status 增补 tx 字段与更新时间
- 补充 /login/tx 文档行与 smoke 测试
|
2026-09-29 20:16:33 +08:00 |
|
snowy-yang
|
9d7cb6f39a
|
fix: /search 的 name 参数示例与描述改为纯歌名(拼入歌手会被翻唱版顶掉原曲)
|
2026-09-29 20:09:21 +08:00 |
|
snowy-yang
|
354df2e739
|
refactor: 架构整固——分层单向化、全量 TypeScript、直接运行
- 移除 bd/mg 两平台及磁盘残留产物;清理 api-test 死脚本、musicSdk/message+options 死模块、infSign vendor
- musicSdk/ 改名 sdk/;src/common、src/auth、src/apis 整体移入 sdk/,依赖方向定为 src → sdk 严格单向
- src/ 手写 JS 全量转 .ts,删除 JS 类型垫片 modules.d.ts;源码 import 统一 .ts 后缀
- Node 原生类型剥离直接运行 .ts(engines >=22.18),取消 tsc 发射产物,tsc 仅类型检查(pnpm typecheck)
- 删除 kwdes 备用实现与 src/index.ts 转发垫片;测试移至 test/smoke-test.ts
- common/request.ts 补显式导出类型;修复 set-cookie 单值形态、ApiError 类字段等隐患
验证:tsc 零错误,smoke-test 41/41
|
2026-09-25 23:06:23 +08:00 |
|
snowy-yang
|
c8c939aa32
|
feat(kg): 取流切换到手机客户端通道(gateway /v5/url,android 签名)
|
2026-09-18 21:28:43 +08:00 |
|
snowy-yang
|
45f3a4b989
|
feat(login): 新增网易云扫码/手机号登录与酷狗 token 绑定
|
2026-09-18 19:15:11 +08:00 |
|
snowy-yang
|
fd5e2122d3
|
chore: 还原被 tmp 下临时依赖安装波及的 pnpm-lock.yaml
|
2026-09-18 18:45:57 +08:00 |
|
snowy-yang
|
41b5d20b1e
|
feat(wy): 歌手歌曲列表填充专辑封面
|
2026-09-18 18:45:06 +08:00 |
|
snowy-yang
|
0f2585e5bd
|
feat(album): 新增 QQ 音乐(tx)专辑支持
|
2026-09-17 06:20:37 +08:00 |
|
snowy-yang
|
b06769dbbd
|
fix(album): 修复 kw 专辑接口——上游通道可用,故障为路由误传参数
|
2026-09-16 22:34:41 +08:00 |
|
snowy-yang
|
23c7ad91e4
|
feat(api): 新增歌手与专辑接口,修复各平台死代码中的多处隐藏 bug
|
2026-09-16 22:23:22 +08:00 |
|
snowy-yang
|
d142dd6096
|
refactor: 清理死代码与构建加固
|
2026-09-16 21:40:28 +08:00 |
|
snowy-yang
|
5dd0468860
|
refactor!: 移除品牌字样,音源改为 sources/ 目录自动加载,脚本不入库
|
2026-09-16 21:28:50 +08:00 |
|
snowy-yang
|
f548e5990b
|
chore: 切换包管理器为 pnpm
|
2026-09-16 21:14:33 +08:00 |
|
snowy-yang
|
c1c8aa4b94
|
refactor(routes)!: 移除旧版 query 风格路由
|
2026-09-16 21:07:01 +08:00 |
|
snowy-yang
|
10de5582c7
|
fix(docs): 豁免 /docs/json 信封包裹,修复 Swagger UI 无法加载规范
|
2026-09-16 20:52:38 +08:00 |
|
snowy-yang
|
ab90c5b4c4
|
docs: 移除 lx 音源签名分析与逆向相关表述
|
2026-09-16 20:29:18 +08:00 |
|
snowy-yang
|
2b4bb16e02
|
refactor(server): 迁移到 Fastify 5 + 完善文档与路由参数适配
|
2026-09-09 21:56:06 +08:00 |
|
snowy-yang
|
59b2aae584
|
feat(server): 标准 HTTP 服务器重构 + FastAPI 风格自动文档
|
2026-08-29 11:51:07 +08:00 |
|
snowy-yang
|
1dfb7a59ca
|
refactor(sdk): musicSdk 全量迁移至 TypeScript
|
2026-08-29 00:23:50 +08:00 |
|