Skip to content

v0.30.0

Choose a tag to compare

@deltrivx deltrivx released this 03 Oct 04:13
· 5 commits to main since this release

ToneCore v0.30.0

音源并入 RoMusic 与飞牛音乐扩展(按内容去重);曲库在线推荐改为网易云每日推荐 + 全量榜单。

一、音乐源:并入 RoMusic 与飞牛音乐扩展

三处脚本本就是同一套格式

先做了真实比对,而不是假设:三处音源(ToneCore 本地 / Unraid RoMusic / 飞牛 fnmusic-ext)
都是洛雪(LX)音源脚本格式 —— 以「六音音源」为例,三处的头部注释与 globalThis.lx
通信方式完全一致。所以可以直接共用,不需要任何转换层。

去重:52 个文件其实只有 23 份内容

目录 文件数
sources(本地) 9
sources-romusic(RoMusic) 20
sources-fnos(飞牛) 23
合计 52
按内容 sha1 去重后 23

去重按内容 sha1 而不是文件名:实测不存在「同名不同内容」的情况,但按内容去重
在两种情况下都正确,按文件名去重会误杀同名不同版本的脚本。

去重保留靠前目录的版本 —— 主目录的本地副本永远优先于外部副本。

加载:必须并发

脚本 init 需要联网拉配置,单份最坏等 12s。串行加载 23 份最坏 276 秒,
启动慢到像卡死。改为 6 路并发后最坏耗时约为 1/6。

不需要改容器模板

新增 extraSourcesDirs 配置(env EXTRA_SOURCES_DIRS,冒号分隔),
但未显式配置时会自动发现 /data/sources-romusic、/data/sources-fnos ——
目录存在即生效。所以这次并入外部音源没有动容器模板。

界面上现在能看出每个脚本来自哪套仓库(本地 / RoMusic / 飞牛)。

二、曲库推荐:改为网易云

参考飞牛音乐扩展(proxy/recommend.py)的接入方案,采用同样的两级降级:

级别 接口 说明
netease-daily /api/v3/discovery/recommend/songs 每日推荐,优先
netease-charts /api/toplist + /api/playlist/detail 榜单,免登录兜底

分级的原因:推荐位不该因为单个源挂掉就整块空掉。

榜单不再硬编码 4 个

原来写死 4 个榜单(热歌/新歌/原创/飙升)。实测 /api/toplist 返回 63 个榜单
(飙升、新歌、热歌、原创、古典、电音、说唱、UK、Billboard…),
改为动态取前若干个,取不到清单时才回退内置的那 4 个。

三、两条必须说清楚的实测事实

1. 每日推荐不是「猜你喜欢」

该接口未登录也能返回 32 首真数据,但我连着请求两次,曲目 ID 完全一致:

第1次前5个ID: [458725081, 297748, 1866165360, 2638372289, 483378334]
第2次前5个ID: [458725081, 297748, 1866165360, 2638372289, 483378334]

说明它是全网通用的每日推荐,不是个性化推荐。真正个性化必须带登录态(cookie),
ToneCore 不做账号体系,所以拿到的就是通用版。

它依然比固定榜单新鲜(每天轮换),所以作为首选 —— 但不要宣传成「猜你喜欢」。
界面上我只标了「每日更新」,没有过度承诺。

2. 飞牛的网易云服务调不到,无法复用

飞牛的 musicbox(proxy/app.py 里 FNMUSIC_MUSICBOX_URL,默认 http://127.0.0.1:8770)
含真正的登录态与个性化能力。但 compose 里映射是 127.0.0.1:8770:8002 —— 只监听本机。

从 Unraid(192.168.31.2)实测:

curl http://192.168.31.5:8770/api/v1/toplist  →  HTTP 000(不可达)

所以本项目不能接飞牛的服务,只能照它的方案自己接网易云公开接口。
(改监听范围要动 FnOS 上的 compose,属你的系统配置,我没碰。)

验证

npm run build   ✅ web + server 均通过
npm test        ✅ 15 项全过

需要你实测确认

  1. 曲库页在线推荐:应出现「每日推荐」板块(带「每日更新」标),下面是若干榜单
  2. 设置页音源列表:脚本数应从 9 增至最多 23,且能看出来源

待办

  • 酷我(kw)在线搜索封面:该平台不返回可用封面地址(实测 404)
  • 音源状态显示口径
  • 锁屏动态歌词:浏览器能力边界,做不到