Skip to content

fix: 对齐网易云心动模式整轮续推、种子与退出恢复 - #405

Open
HSJ-BanFan wants to merge 7 commits into
SPlayer-Dev:devfrom
HSJ-BanFan:fix/heart-mode-refill
Open

HSJ-BanFan wants to merge 7 commits into
SPlayer-Dev:devfrom
HSJ-BanFan:fix/heart-mode-refill

Conversation

@HSJ-BanFan

@HSJ-BanFan HSJ-BanFan commented Oct 21, 2026 •

Copy link
Copy Markdown

改动类型

  • 缺陷修复(fix)
  • 新功能(feat)
  • 重构 / 优化(不改变对外行为)
  • 文档(docs)
  • 其他(请在「改动说明」中注明)

是否包含破坏性变更

  • 是(请在「改动说明」中详细描述)
  • 否

改动说明

修复心动模式播放完一轮后仍循环原列表的问题,并按网易云 PC 客户端的行为补齐以下逻辑:

  • 进入心动模式时将当前种子歌曲置顶,并保存进入前的队列快照。
  • 初始请求按桌面端参数发送 type=fromPlayAll、count=歌单长度、startMusicId=第一首可播放曲目、starPlaylist 和 uid;starPlaylist 使用原始 NCM song 结构。
  • 在队列项上记录 playedOnce,整轮每首至少播放一次后调用 /api/homepage/more/rcmd/song,每次追加 3 首「更多推荐」。
  • 新增可持久化的「自动推荐更多」开关;关闭时停止续推并移除已追加的更多推荐曲目。
  • 队列 UI 增加「更多推荐」分隔行;更多推荐曲目不显示「AI 推荐」标记,AI 推荐曲目仍保留标记。
  • 退出心动模式时恢复进入前的队列和播放位置,并固定回到列表循环、关闭随机;快照持久化,重启后仍可恢复。
  • 续推失败时退回智能播放列表;两个接口都失败时回到原队列循环。

无版权曲目不做主动过滤,保留聚合播放器通过插件或其他音源兜底的机会。

关联 Issue

Closes #404

测试情况

本地环境:Windows 11 10.0.26200,已合并最新 dev(1.2.1 / Electron 44.9)后重新构建验证。

  • pnpm format:通过,无改动。
  • pnpm typecheck:node + web 通过。
  • pnpm lint:0 个错误、0 个警告。
  • pnpm test:50 个 node 用例、515 个 web 用例(66 个测试文件)全部通过。
  • 1.2.1 实机验证:心动队列 440 首,种子「慢歌一」置顶,161 首 AI 推荐;缩短队列触发整轮续推后 3 -> 6,新增 3 首 moreRcmd,分隔行正常;退出心动恢复进入前的 30 首队列和列表循环。
  • 真机测试覆盖:进入/退出恢复、种子置顶、整轮续推 3 首、连续 3 轮 3 -> 6 -> 9 -> 12、分隔行、更多推荐不显示 AI、开关关闭清理、请求中途关闭、重启恢复、FM 进入/退出、空红心歌单、混合网易云 + QQ 音乐队列、单曲入口、喜欢页入口、拖动经过分隔行、首曲上一首回绕、随机/单曲循环边界、普通播放和封面歌词回归。
  • 已知限制:服务端每次返回的推荐曲目和数量会浮动;首轮需要整轮每首至少播放一次;远程音源不会预载 PCM,交叉淡入需要本地或已缓存音源;无版权曲目仍可能进入队列,播放失败时的状态同步由现有失败处理逻辑负责。

截图 / 录屏

截图中的账号信息已打码。

完整心动队列

完整心动队列

进入心动模式后的完整队列:共 440 首,种子「慢歌一」置顶,161 首 AI 推荐,「自动推荐更多」开启。

一轮更多推荐

一轮更多推荐与分隔行

为了在测试中快速触发同一套整轮续推逻辑,将队列缩短为 3 首初始曲。播放完这 3 首后追加 3 首 moreRcmd,队列从 3 首变为 6 首,并出现「更多推荐」分隔行;新增曲目不显示「AI 推荐」标记,初始 AI 推荐仍保留标记。

自查清单

  • 本 PR 只包含一个主要功能 / 修复,没有夹带无关改动
  • 已在本地完整测试通过;AI 生成的代码同样自行测试并审阅过,未做未经验证的提交
  • 已运行 pnpm format,并确认 pnpm typecheck、pnpm lint 通过
  • 改动涉及原生模块时已 pnpm build:native 验证;未手写 native/*/index.d.ts(本 PR 未改动原生模块)
  • 已向 dev 分支提交

@HSJ-BanFan

Copy link
Copy Markdown
Author

已合并最新 dev(1.2.1 / Electron 44.9)并重新构建验证。pnpm typecheck、lint(0 错误 0 警告)、50 个 node 用例、515 个 web 用例全部通过。1.2.1 实机:心动队列 440 首、种子「慢歌一」置顶、161 首 AI 推荐;缩短队列触发整轮续推 3 -> 6,新增 3 首 moreRcmd 并显示「更多推荐」分隔行;退出后恢复进入前的 30 首队列和列表循环。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

心动模式播放完一轮后循环原列表,没有追加更多推荐

1 participant