为 BakaMusic 提供统一的插件订阅、单插件分发、音源注入与音质覆盖。
🌐 在线地址:https://music.cwo.cc.cd/
- 📦 统一分发 7 个平台插件
- 🔗 同时支持订阅导入与单插件导入
- 🧩 按音源动态注入请求处理器
- 🎚️ 按音源覆盖插件音质能力
- ☁️ 适配 Vercel / Netlify / 本地 Node.js
| 平台 | 文件 | 版本 | 类型 |
|---|---|---|---|
| 网易云音乐 | plugins/wy.js |
1.1.6 |
音源相关、MV、热搜 |
| QQ音乐 | plugins/qq.js |
1.2.0 |
音源相关、MV、热搜 |
| 酷狗音乐 | plugins/kg.js |
1.1.7 |
音源相关、MV、热搜 |
| 酷我音乐 | plugins/kw.js |
1.1.7 |
音源相关、MV、热搜 |
| 咪咕音乐 | plugins/mg.js |
1.3.5 |
免密、8 档音质、MV、热搜 |
| Bilibili | plugins/bilibili.js |
2.1.2 |
免密、MV、收藏夹、排行榜与热搜 |
| 汽水音乐 | plugins/qishui.js |
3.3.4 |
免密、MV、热搜,可配置登录态 |
bilibili.js、qishui.js、mg.js下载时不需要source或key。
wy.js 1.1.4 的整单导入保留每批 200 首歌曲详情,关闭导入期间的逐首音质补全,
避免数千首歌产生数千次额外请求而触发宿主超时。歌曲详情及 privilege 已返回的音质、
歌单元数据、歌曲顺序和批次失败抛错行为保留;音质详情仍可按需查询。
无需修改客户端,已安装插件需要更新。回归:npm test,包含 10,001 首跨批次导入、
分享文本解析、元数据/音质保留、小歌单及中途失败不返回半份歌单。
Windows 主机使用 BakaMusicFlutter 现有 Rust FFI、未改客户端,实际调用该插件导入
分享歌单 5021087445:来源总数 6,577,完整返回 6,577 首,耗时 20.651 秒。
这是主机在线验证;Android 真机更新后导入待用户验证。
7 个插件均导出 getHotSearch(): Promise<string[]>,复用 BakaMusic 现有搜索页的热搜、刷新与点击搜索流程;已安装的旧插件需要更新后才能声明此能力。返回值按平台顺序去空、去重,最多 30 条;接口失败抛错供搜索页重试,不用榜单歌曲或预置文本冒充热搜。
网易云、QQ、酷狗、酷我、咪咕的接口与字段参考 lx-lxwalnut-music-mobile/src/utils/musicSdk/{wy,tx,kg,kw,mg}/hotSearch.js(参考提交 595c913)。请求使用 HTTPS;咪咕改用无端口的 https://jadeite.migu.cn/music_search/v3/search/hotword,不使用参考中的旧 HTTP 7090 端口。Bilibili 使用 GET /x/web-interface/wbi/search/square 的 data.trending.list[].keyword。
汽水使用 POST https://api5-lq.qishui.com/luna/search-block,仅请求 includes: ["search_chart"],读取 search_chart_block.charts[].content[] 中 behavior === "search" 的 keyword,不混入推荐词、输入提示或广告跳转。热搜独立于播放签名与登录:不携带 Cookie、设备唯一标识、抓包时间戳或短期 X-Headers 签名。
跨仓回归在 BakaMusicFlutter 目录运行:
node scripts/check_hot_search_plugin_contracts.cjs ../baka-plugins/plugins '../QQ音乐/Vkey' '../汽水音乐/汽水3.2.9.js'
node scripts/check_hot_search_plugin_contracts.cjs ../baka-plugins/plugins '../QQ音乐/Vkey' '../汽水音乐/汽水3.2.9.js' --live2026-10-18:11 份实际插件通过模拟 HTTP 契约检查(含四份独立 Vkey 插件);7 个订阅平台的在线匿名请求分别返回网易云 20、QQ 30、酷狗 30、酷我 20、咪咕 20、Bilibili 30、汽水 20 条词。在线结果仅代表此次 Windows 主机网络验证,不代表 Android/iOS 真机或未来接口可用性;未发布订阅服务。
版本进位按项目约定:Bilibili 从 2.0.9 升至 2.1.0,汽水从 3.2.9 升至 3.3.0。另为独立文件 汽水音乐/汽水3.2.9.js 接入同一匿名热搜接口,保留原文件名,其导出版本为 3.3.0;回归脚本新增该文件及所有发布版本断言。
追加验证:12 份插件契约与版本断言全部通过,12 份实际导出在线复测全部返回热搜(独立酷我首次连接重置,完整重跑通过);新增汽水文件返回 20 条词。原有 7 份 MV 契约检查仍通过。
音源配置见:functions/source-config.js
| 名称 | 标识 | Key | 支持插件 |
|---|---|---|---|
| 全豆要(免费) | quandouyao |
无需填写 | wy / qq / kg / kw |
| 次合代(免费) | cihedai |
无需填写 | wy / qq / kg / kw |
| ikun 音源(付费) | ikun |
需要 | wy / qq / kg / kw |
| 聆澜音源(付费) | linglan |
需要 | wy / qq / kg / kw |
| OI 音源 | oi |
用户提供签名盐 | wy / qq / kg / kw |
免密插件始终包含在订阅结果中;音源相关插件会按配置过滤。
OI 的音质对应:网易云 atmos / atmos_plus → sky / jyeffect;QQ、酷我 atmos / atmos_plus → zpyz / zpqj;酷狗 atmos / master → zpqj / zpyz,无 atmos_plus。OI 不使用 flac24bit 档位。
OI 的 Key 填写当前会话的 _oi_salt(32 位小写十六进制),不是 GUID、_oi_three_random 或普通卡密。本站不自动获取签名盐;缺失或格式错误时,订阅和插件下载接口均会拒绝。
需要 Key
https://music.cwo.cc.cd/api/subscription.json?source=ikun&key=YOUR_KEY.json
https://music.cwo.cc.cd/api/subscription.json?source=oi&key=YOUR_OI_SALT.json
无需 Key
https://music.cwo.cc.cd/api/subscription.json?source=cihedai.json
BakaMusic 要求订阅链接以
.json结尾。
需要 Key 时,加在key后;无需 Key 时,加在source后。服务端会移除该后缀。
需要 Key
https://music.cwo.cc.cd/plugins/wy.js?source=ikun&key=YOUR_KEY
无需 Key 的音源
https://music.cwo.cc.cd/plugins/wy.js?source=cihedai
免密插件
https://music.cwo.cc.cd/plugins/bilibili.js
示例中的
YOUR_KEY/YOUR_OI_SALT请替换为自己的值。含卡密的链接、插件文件及更新地址不要公开分享。
在 BakaMusic 的插件用户变量中填写,和音源 Key 分开配置:
- Bilibili:
SESSDATA可填纯值或完整 Cookie;BILI_COOKIE用于完整 Cookie,优先使用;CK是兼容别名。会员内容仍需账号具有对应权限。 - 汽水音乐:
sessionid可填纯值或sessionid=...片段,过期后需更新。
登录 Cookie 同样属于敏感信息,请勿公开分享。
GET /api/subscription.json?source=<source>&key=<key>.json
GET /api/subscription.json?source=<source>.json
未指定 source 时默认使用 ikun;需要 Key 的音源请传入自己的卡密。
作用:
- 扫描
plugins/ - 提取插件元数据
- 按音源能力过滤插件
- 返回 BakaMusic 可直接导入的订阅 JSON
实现文件:functions/subscription.js
GET /plugins/{name}.js?source=<source>&key=<key>
GET /plugins/{name}.js
作用:
- 读取插件原文件
- 替换
// {{REQUEST_HANDLER}}占位符 - 生成
API_URL、API_KEY、UPDATE_URL - 按音源配置覆盖
supportedQualities(配置为null时保留插件默认值) - 返回最终插件脚本
实现文件:functions/plugin.js
baka-plugins/
├── functions/
│ ├── plugin.js
│ ├── source-config.js
│ └── subscription.js
├── plugins/
│ ├── bilibili.js
│ ├── kg.js
│ ├── kw.js
│ ├── mg.js
│ ├── qishui.js
│ ├── qq.js
│ └── wy.js
├── index.html
├── server.js
├── netlify.toml
├── vercel.json
└── README.md
顶层结构统一为:
- 依赖与基础常量
- 工具与格式化函数
- 搜索相关
- 播放 / 歌曲信息 / 歌词
- 专辑 / 歌手
- 歌单 / 推荐
- 榜单
- 评论
module.exports
导出对象通常采用:
module.exports = {
platform,
author,
version,
appVersion,
srcUrl,
cacheControl,
primaryKey,
supportedQualities,
supportedVideoQualities,
userVariables,
hints,
supportedSearchType,
async search() {},
getMediaSource,
// 可选:歌曲包含 mv 字段时解析 MV 视频源
getMvSource,
getMusicInfo,
getLyric,
getAlbumInfo,
getArtistWorks,
// 返回 { id, title, artwork, artist, description, worksNum, musicList }
importMusicSheet,
getMusicSheetInfo,
getRecommendSheetTags,
getRecommendSheetsByTag,
getTopLists,
getTopListDetail,
getMusicComments,
};歌曲条目可用 mv 暴露平台 MV ID;supportedVideoQualities 声明可请求的
分辨率档位。网易云、QQ、酷狗、酷我、咪咕、汽水和 Bilibili 已接入该方法。插件实现
getMvSource(musicItem, videoQuality?) 后返回 { url, headers?, userAgent?, videoQuality?, mimeType?, duration?, width?, height?, expiresAt? }。推荐分辨率写成
720p、1080p、4k;播放器会在实际播放前重新校验 URL 和请求头。
Bilibili MV 优先返回带音轨的单文件 MP4,并通过 videoQuality 回报平台实际下发画质,
从而让播放音量、拖动和宿主下载保持一致。
需要 Node.js 18 或更高版本,无需构建。
npm ci
node server.js默认地址:
http://localhost:3000
PORT 可修改监听端口。调试生成的订阅及更新链接时,将 BASE_URL 设置为本地地址;部署到自有域名时设置为自己的服务地址,否则生成链接默认指向在线服务。
快速测试:
curl "http://localhost:3000/api/subscription.json?source=cihedai.json"
curl "http://localhost:3000/plugins/wy.js?source=cihedai"
curl "http://localhost:3000/plugins/bilibili.js"Windows PowerShell 中可使用 curl.exe。
- 插件版本、音源协议、展示文案变更时,同步更新
README.md和index.html - 免密插件下载链接不能拼接
source - 音源能力以 functions/source-config.js 为准
- 新增或重排插件能力时,保持现有顶层结构顺序
歌单详情通过 sheetItem.worksNum 返回总数,与当前已加载歌曲数分开。空歌单保留 0,未知总数不使用当前页长度冒充。版本、外部插件清单及实测限制见 修复与验证记录。
通过 artistItem.songCount / artistItem.albumCount 分开返回作者统计。App 同步接入,缺失统计显示“已加载”;预览列表不冒充全量。见 作者统计修复、版本和验证记录。
汽水插件:签名转发地址为 https://api.vsaa.cn/api/music/soda/sign-pc.php,使用默认 TLS 证书校验。