Skip to content

About

BakaMusic 插件订阅服务

Resources

Stars

47 stars

Watchers

0 watching

Forks

Repository files navigation

🎵 BakaMusic 插件订阅服务

为 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。

网易云大歌单导入(2026-10-19)

wy.js 1.1.4 的整单导入保留每批 200 首歌曲详情,关闭导入期间的逐首音质补全, 避免数千首歌产生数千次额外请求而触发宿主超时。歌曲详情及 privilege 已返回的音质、 歌单元数据、歌曲顺序和批次失败抛错行为保留;音质详情仍可按需查询。 无需修改客户端,已安装插件需要更新。回归:npm test,包含 10,001 首跨批次导入、 分享文本解析、元数据/音质保留、小歌单及中途失败不返回半份歌单。

Windows 主机使用 BakaMusicFlutter 现有 Rust FFI、未改客户端,实际调用该插件导入 分享歌单 5021087445:来源总数 6,577,完整返回 6,577 首,耗时 20.651 秒。 这是主机在线验证;Android 真机更新后导入待用户验证。

搜索页热搜(2026-10-18)

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' --live

2026-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 或普通卡密。本站不自动获取签名盐;缺失或格式错误时,订阅和插件下载接口均会拒绝。


🚀 导入方式

1. 订阅导入

需要 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 后。服务端会移除该后缀。

2. 单插件导入

需要 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 请替换为自己的值。含卡密的链接、插件文件及更新地址不要公开分享。

3. 平台登录配置

在 BakaMusic 的插件用户变量中填写,和音源 Key 分开配置:

  • Bilibili:SESSDATA 可填纯值或完整 Cookie;BILI_COOKIE 用于完整 Cookie,优先使用;CK 是兼容别名。会员内容仍需账号具有对应权限。
  • 汽水音乐:sessionid 可填纯值或 sessionid=... 片段,过期后需更新。

登录 Cookie 同样属于敏感信息,请勿公开分享。


🔌 API

订阅接口

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

🧱 插件组织

顶层结构统一为:

  1. 依赖与基础常量
  2. 工具与格式化函数
  3. 搜索相关
  4. 播放 / 歌曲信息 / 歌词
  5. 专辑 / 歌手
  6. 歌单 / 推荐
  7. 榜单
  8. 评论
  9. 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 暴露平台 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 为准
  • 新增或重排插件能力时,保持现有顶层结构顺序

📎 相关文件

歌单总数(2026-10-22)

歌单详情通过 sheetItem.worksNum 返回总数,与当前已加载歌曲数分开。空歌单保留 0,未知总数不使用当前页长度冒充。版本、外部插件清单及实测限制见 修复与验证记录。

作者单曲与专辑总数(2026-10-22)

通过 artistItem.songCount / artistItem.albumCount 分开返回作者统计。App 同步接入,缺失统计显示“已加载”;预览列表不冒充全量。见 作者统计修复、版本和验证记录。

汽水插件:签名转发地址为 https://api.vsaa.cn/api/music/soda/sign-pc.php,使用默认 TLS 证书校验。

About

BakaMusic 插件订阅服务

Resources

Stars

47 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages