Skip to content

合集分P视频字幕拉取时 p= 参数丢失 — 合集视频的笔记内容永远是错的 #398

@peihuaLJH

Description

@peihuaLJH

受影响的工作区

后端 (backend/)

版本

v2.1.0

部署方式

源码运行

复现步骤

Bug 报告:合集分P视频字幕拉取时 p= 参数丢失

严重程度: 🔴 致命 — 合集视频的笔记内容永远是错的

复现步骤:

  1. 粘贴一个合集/分P视频链接,例如:
    https://www.bilibili.com/video/BV1JmB8BjEnT?...&p=4
  2. 等待下载和笔记生成完成
  3. 观察生成的笔记内容

实际结果:
笔记内容是第1集的,不是第4集的。

根因:
BiliNote 内部两个模块对 p= 参数处理不一致:

模块 行为 结果
───────────────────────────── ─────────────── ─────────────────────────────────────────────
视频/音频下载(yt-dlp) ✅ 正确识别 p=4 文件名为 BVxxx_p4.mp3
字幕下载(bilibili_subtitle) ❌ 只取裸 BV ID 日志:B站直拉字幕成功: BV1JmB8BjEnT(无 _p4)

B 站合集视频不传 p 参数时默认返回第1集字幕。所以:

· 音频下对了(第4集 ✅)
· 字幕拉错了(第1集 ❌)
· 笔记用了错的字幕内容

日志证据:

2026-06-10 10:34:57 [INFO] app.downloaders.bilibili_subtitle - B站直拉字幕成功: BV1JmB8BjEnT lan=ai-zh 共 286 段
2026-06-10 10:35:17 [INFO] app.db.video_task_dao - Video task inserted. video_id: BV1JmB8BjEnT_p4

第一行拉字幕只用了 BV1JmB8BjEnT (无分P信息)
第二行视频任务正确带了 BV1JmB8BjEnT_p4

建议修复:
bilibili_subtitle 模块在拉取字幕时,应从链接中提取 p= 参数并传给 B 站 API,或者使用对应的 cid (每个分P有独立的
cid)。音频下载部分引用的 cid=34916861345 是正确的(对应 p4),字幕模块复用这个 cid 即可。

期望行为

建议修复:
bilibili_subtitle 模块在拉取字幕时,应从链接中提取 p= 参数并传给 B 站 API,或者使用对应的 cid (每个分P有独立的
cid)。音频下载部分引用的 cid=34916861345 是正确的(对应 p4),字幕模块复用这个 cid 即可。

实际行为

我试过很多次了,B站合集类型的视频无法正确生成对应的笔记,永远是我第一次给出的第三集内容

运行环境

操作系统 Windows 10.0.26200.8457(预览版)
Python 3.13(Microsoft Store)
pip 26.0.1
Node.js v24.14.0
yt-dlp 2026.06.09
FFmpeg 8.1.1-full_build
BiliNote app.exe 15.9 MiB(2026-06-06)
BiliNoteBackend.exe 27.5 MiB(2026-06-06)
浏览器 Chrome(用于获取 cookie)

日志 / 堆栈

日志证据:

 2026-06-10 10:34:57 [INFO] app.downloaders.bilibili_subtitle - B站直拉字幕成功: BV1JmB8BjEnT lan=ai-zh 共 286 段
 2026-06-10 10:35:17 [INFO] app.db.video_task_dao - Video task inserted. video_id: BV1JmB8BjEnT_p4, platform: bilibili,
task_id: 41828536

第一行拉字幕只用了  BV1JmB8BjEnT (无分P信息)
第二行视频任务正确带了  BV1JmB8BjEnT_p4

音频文件信息确认下载正确:

 json
 {
   "title": "黑马程序员2026最新版...p04 第1章-004-TikTok跨境店铺与本土店铺的区别",
   "file_path": "D:\\BiliNote\\data\\BV1JmB8BjEnT_p4.mp3",
   "video_id": "BV1JmB8BjEnT_p4"
 }

 原因

B 站合集视频不传  p  参数时,默认返回第1集字幕。所以:

 · ✅ 音频下对了(第4集)
 · ❌ 字幕拉错了(第1集)
 · ❌ 笔记用了错的字幕内容
 · ❌ 每次都复现,不是偶发

提交前自查

  • 我已搜索过 Issues,确认不是重复问题
  • 我提供的日志中包含 API key、cookie、SESSDATA 等敏感信息

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions