Skip to content

fix: 酷狗歌单/专辑超过 300 首被截断,分页拉取全量并补充分页测试 - #248

Open
abkkkbb wants to merge 1 commit into
SPlayer-Dev:devfrom
abkkkbb:fix/kg-playlist-truncation
Open

abkkkbb wants to merge 1 commit into
SPlayer-Dev:devfrom
abkkkbb:fix/kg-playlist-truncation

Conversation

@abkkkbb

@abkkkbb abkkkbb commented Sep 7, 2026 •

Copy link
Copy Markdown

改动类型

  • 缺陷修复(fix)

是否包含破坏性变更

  • 否

改动说明

修复 #247。

问题:酷狗歌单/专辑歌曲数超过 300 时,客户端只请求 page=1&pagesize=300 单页就收工,其余歌曲静默丢失。而酷狗 special/song、album/song、/v1/album_audio/lite 接口均支持分页(实测验证)。

修复:新增 electron/main/apis/kugou/core/pagination.ts 提供 fetchAllPages——先取第一页拿 total,再并发补拉剩余页拼接。三处调用点(歌单、专辑 mobilecdn 通道、专辑网关通道)统一改走该函数。

设计要点:

  • pagesize 保持 300 不变,只补翻页逻辑,改动最小
  • 剩余页并发拉取(Promise.all),大歌单总耗时 ≈ 两次往返
  • 单页失败容错(返回空页),个别页超时不影响整体
  • MAX_SONGS = 5000 上限防御异常 total,翻页后 slice(0, total) 精确封顶
  • 无 total 时不盲翻,按第一页数量收工
  • 歌单翻页请求超时放宽至 30s(mobilecdn 实测单请求可达 15s+,默认 8s 偏紧)
  • 返回的 total 改为实际取回的 songs.length,界面数字与真实数据一致

关联 Issue

Closes #247

测试情况

  • 新增单元测试 pagination.test.ts 覆盖 7 个场景:不足一页不翻页 / 多页拼接顺序 / 整页数翻页 / 单页失败容错 / 第一页失败抛错 / 异常 total 封顶 / 无 total 不盲翻
  • pnpm test:node:41/41 通过;pnpm test:web:57/57 通过;pnpm typecheck、pnpm lint、pnpm format 均通过
  • 真实接口回归:歌单 8540649(832+ 首)全量取回,第 301 首(接口第二页首条)在列表中可搜索
  • 实机验证(Windows 11,dev 构建):打开测试歌单显示总数与酷狗服务端实时数据一致
  • 平台覆盖:改动仅涉主进程网络层,平台无关;实机验证为 Windows

自查清单

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

@abkkkbb
abkkkbb force-pushed the fix/kg-playlist-truncation branch from 3218721 to 5085664 Compare September 7, 2026 14:24

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.

酷狗歌单超过 300 首时仅显示前 300 首,其余歌曲丢失

1 participant