Skip to content

fix(bilibili): 支持 skip_download 以跳过有字幕时的音频下载(识别到字幕依然下载音频) - #460

Open
krisyox wants to merge 1 commit into
JefferyHcool:masterfrom
krisyox:fix/skip-download-when-subtitle
Open

krisyox wants to merge 1 commit into
JefferyHcool:masterfrom
krisyox:fix/skip-download-when-subtitle

Conversation

@krisyox

@krisyox krisyox commented Oct 17, 2026 •

Copy link
Copy Markdown

改动概述

修正 BilibiliDownloader.download() 不识别 skip_download 参数的问题,使有字幕时真正跳过音频下载。

为什么

note.py 在有字幕时会调用 BilibiliDownloader.download(skip_download=True),意图仅提取视频元信息。但 BilibiliDownloader.download() 方法签名不接受该参数,抛出 TypeError: ... got an unexpected keyword argument 'skip_download',被外层捕获后回退为完整下载音频,造成不必要的带宽/磁盘开销,也易让用户误以为仍在做语音转写。Fixes 内部行为,无关联 issue。

做了什么

仅修改 backend/app/downloaders/bilibili_downloader.py:

  • 为 download() 增加 skip_download: bool = False 参数
  • ydl.extract_info(video_url, download=not skip_download),为 True 时仅提取元信息
  • skip_download=True 时 audio_path = None,使 note.py 中 if download_result.file_path is None 的判断生效
    (注:download_subtitles() 内既有的 'skip_download': True 是 yt-dlp 自身参数,未改动。)

测试方式

  • 本地 backend 启动验证通过(docker restart 后 healthy)
  • 手动验证步骤:
    对 BV1NqWc6gEPh 复测:
    • 修复前:后端日志出现 unexpected keyword argument 'skip_download',并完整下载音频
    • 修复后:download(skip_download=True) 不再报错,返回 title/duration 且 file_path=None;note_results 目录下无新增 mp3

回归风险

影响面极小:仅 BilibiliDownloader.download() 新增可选参数,默认值 False 与原有行为一致;不改变字幕抓取、转写或笔记生成链路,无需前后端同步部署。

Checklist

  • 分支命名遵循 fix/*(fix/skip-download-when-subtitle)
  • base 分支正确(本仓库无 develop,常规改动 → master)
  • Commit message 遵循 type(scope): subject 格式(fix(bilibili): ...)
  • 已自测核心流程
  • 未夹带 secrets / .env / 大型二进制
  • 单 PR 不跨多个工作区做无关改动(仅 downloader.py,已排除本机 Dockerfile.gpu 适配)

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