Skip to content

v0.31.0

Choose a tag to compare

@deltrivx deltrivx released this 03 Oct 06:42
· 4 commits to main since this release

ToneCore v0.31.0

网易云音源自研直连(不依赖第三方脚本);入库改为按精确曲目 ID(避免入库到翻唱版);曲库页功能收纳。

一、网易云音源自研直连

为什么必须补

v0.30.0 把音源并入 RoMusic 与飞牛后,实测 23 份脚本里 5 份加载失败
(六音音源、聚合API接口、野花、野草、长青SVIP,均为联网初始化超时)。

而当时的自研直连只覆盖酷我(fetchKwUrl)。网易云是搜索质量最好的主力平台,
却只能靠第三方脚本
—— 脚本一失效,主力平台就没了。这是明显的能力缺口,
所以照酷我的范式补上 wy-url.ts。

实测结论(不是猜的)

接口 结果
/api/song/enhance/player/url?ids=[id]&br=<码率> ✅ 免登录,直接返回真实播放地址
/api/song/enhance/player/url/v1?level=exhigh ❌ 参数错误 code:400(需额外加密参数,故不用)

一个必须说清楚的事实:无损会被静默降级

实测同一首歌(id 1973665667)各档位:

br=128000 → type=mp3  br=128000  ✅
br=192000 → type=mp3  br=192000  ✅
br=320000 → type=mp3  br=320000  ✅
br=999000 → type=mp3  br=320000  ⚠️ 实际只给到 320k!

也就是无 VIP 时要无损也会拿到 320k。好消息是响应里的 br 会如实反映,
所以代码回读实际 br/type 来判定音质 —— 界面显示的是真实音质,不会谎报「无损」,
落盘扩展名也与内容一致。

二、修复:入库可能落到翻唱版(重点)

这是哥哥说「仔细思考还缺少什么」时我发现的真问题,跟「歌词提前跑完」是同一个坑。

根因

/api/play 只吃 keyword + artist,会把推荐位和搜索结果自带的精确平台 ID 丢掉,
退化成「按歌名重新搜一遍」。

问题在于:打分再准,也抵不过再搜一次带来的不确定性。用户在推荐位看到的
明明是原唱,点「入库」后服务端重新搜索,很可能落到翻唱版 —— 用户完全无从察觉。

修法

新增 POST /api/fetch-by-id(platform + songId),直接按 ID 取链,
保住用户看到的那一首。

前端两处入库都改走它:

  • 曲库页推荐位(saveOne)
  • 在线搜索(saveOne + saveBatch)

批量入库此前有同一个问题,一并修正了。批量现在是「入队」语义
(逐条入下载队列),文案也相应改为「已入队」,不再声称「已入库」。

三、曲库页功能收纳

改之前的状态很不一致:

位置 改前
曲库页推荐行 完全没有操作按钮,只能点整行播放
在线搜索行 3 个按钮平铺(播放 / 入队 / 入库)
主页列表行 已用 RowActions 收纳(v0.28.0)

现在统一按主页 RowActions 范式:

  • 列表视图:播放留行内(高频操作),其余收进「更多」菜单
    —— 播放 / 加入队列 / 下载入库 / 复制曲目信息
  • 网格视图:hover 浮出,避免小卡片被按钮挤满
  • 以后新增功能只需在 rowActions() 里加一项,不用再挤布局

验证

npm run build   ✅ web + server 均通过
npm test        ✅ 15 项全过
package-lock    ✅ 未漂移

需要你实测确认

  1. 曲库页:推荐行右侧应出现「更多」菜单,含 下载入库 / 复制曲目信息
  2. 入库正确性(本次重点):从推荐位挑一首入库,到主页比对是否是原唱
    —— 这是这次修的核心问题,值得验一下
  3. 音质:非 VIP 账号入库无损时,实际会得到 320k(界面会如实显示,不是 bug)

待办

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