Skip to content

fix(bilibili): 修正分P视频字幕优先链路未传p参数导致取错集#403

Open
wmsdsb wants to merge 3 commits into
JefferyHcool:masterfrom
wmsdsb:fix/bilibili-multipart-p-number
Open

fix(bilibili): 修正分P视频字幕优先链路未传p参数导致取错集#403
wmsdsb wants to merge 3 commits into
JefferyHcool:masterfrom
wmsdsb:fix/bilibili-multipart-p-number

Conversation

@wmsdsb

@wmsdsb wmsdsb commented Jun 11, 2026

Copy link
Copy Markdown

问题:B站分P视频(如62集课程),提交?p=36链接时,
字幕优先链路通过x/web-interface/view API拿cid时未传p参数,
默认取第1集cid,导致生成的是第1集的笔记。
同时yt-dlp正确下载了p36音频,但被跳过。

修复:

  • url_parser新增extract_bilibili_p_number()提取URL中的p参数
  • bilibili_subtitle的_get_cid()接收p参数,从data.pages[p-1]取对应分P的cid
  • fetch_subtitles()调用extract_bilibili_p_number()透传p

改动概述

修复 B 站分P视频提交 ?p=N 链接时,字幕优先链路未透传 p 参数,导致始终取第 1 集 cid 生成笔记。

为什么

B 站 x/web-interface/view API 默认返回第 1 集的 cid。分P视频(如 62 集课程)用户提交 ?p=36 时,extract_video_id() 只取了 BV 号丢掉了 p 参数,字幕链路用第 1 集的 cid 拉到第 1 集字幕,而 yt-dlp 下载的是正确的 p36 音频——两者对不上,GPT 基于错误的字幕生成笔记。

做了什么

  • backend/app/utils/url_parser.py: 新增 extract_bilibili_p_number() 从 URL 提取 ?p=N
  • backend/app/downloaders/bilibili_subtitle.py: _get_cid() 接收 p 参数,从 data.pages[p-1] 取对应分 P 的 cid;fetch_subtitles() 透传 p

测试方式

回归风险

  • 非分P视频:无影响,fallback 取 pages[0]
  • 分P序号超出范围:fallback 取 pages[0](第1集)
  • 短链接 b23.tv:先 resolve 再提取 p 参数
  • 影响面仅限 B 站分P视频的字幕优先路径,不影响 yt-dlp 下载和 Whisper 转写

Checklist

  • 分支命名遵循 CONTRIBUTING.md §3feature/* / fix/* / release/* / hotfix/*
  • base 分支正确(常规改动 → develop;线上紧急 → master;发版 → 见 §4.3)
  • Commit message 遵循 type(scope): subject 格式(CONTRIBUTING.md §5.1
  • 已自测核心流程
  • 已更新相关文档(README.md / CHANGELOG.md / CLAUDE.md / 模块 README,如适用)
  • 未夹带 secrets / .env / 大型二进制
  • 单 PR 不跨多个工作区做无关改动

huangjianwu and others added 3 commits June 7, 2026 02:05
问题:B站分P视频(如62集课程),提交?p=36链接时,
字幕优先链路通过x/web-interface/view API拿cid时未传p参数,
默认取第1集cid,导致生成的是第1集的笔记。
同时yt-dlp正确下载了p36音频,但被跳过。

修复:
- url_parser新增extract_bilibili_p_number()提取URL中的p参数
- bilibili_subtitle的_get_cid()接收p参数,从data.pages[p-1]取对应分P的cid
- fetch_subtitles()调用extract_bilibili_p_number()透传p
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