Skip to content

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

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

HSJ-BanFan wants to merge 6 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,Electron 43.2.0,基于 dev 05dbbeb8 的分支。

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

截图 / 录屏

UI 截图已在本地生成:

  • 完整心动队列:heart-mode-restored-full.png
  • 一轮更多推荐与分隔行:heart-mode-more-rcmd.png

为避免上传包含账号信息的截图,暂未直接附到 PR;如维护者需要,我可以补充脱敏版本。

自查清单

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

HSJ-BanFan and others added 6 commits October 21, 2026 13:25
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>

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