Skip to main content

B站视频下载工具 - 支持扫码登录、高清下载、智能目录管理

Project description

Bilibili视频下载工具

一个功能强大的B站视频下载工具,支持扫码登录、高清晰度下载、断点续传等功能。

⚠️ 免责声明

本工具仅供个人学习研究使用,请勿用于商业用途。

  • 下载的视频内容版权归原作者所有,请尊重创作者权益
  • 使用本工具即表示您同意遵守相关法律法规和B站用户协议
  • 下载的内容仅限个人观看,不得用于二次传播、商业用途或其他侵权行为
  • 因使用本工具产生的任何法律责任由使用者自行承担

✨ 功能特性

  • 🔐 扫码登录 - 支持B站扫码登录,获取大会员权限
  • 🎬 高清下载 - 支持360P/480P/720P/1080P/1080P60/4K等多种清晰度
  • 📦 音视频合并 - 自动合并DASH格式的音视频流
  • 断点续传 - 支持断点续传,避免网络中断重新下载
  • 📊 进度显示 - 实时显示下载进度和速度
  • 🔒 安全存储 - 登录信息加密存储,保护隐私安全
  • 🎯 简单易用 - 命令行界面,操作简单直观
  • 🎤 视频转录 - 使用 Whisper AI 进行语音识别,生成字幕和文本
  • 📄 Markdown转PDF - 自动化将Markdown文件转换为PDF,支持中文字体和图片嵌入

📦 安装

前置要求

  1. Python 3.7+
  2. ffmpeg (用于音视频合并)
  3. 系统依赖 (用于PDF转换,macOS用户)
    • pango
    • gdk-pixbuf
    • libffi

安装ffmpeg

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows
# 从 https://ffmpeg.org/download.html 下载并添加到PATH

安装PDF转换依赖 (macOS)

# 安装系统库
brew install pango gdk-pixbuf libffi

安装工具

# 克隆项目
git clone https://github.com/yourusername/bilibili-dl.git
cd bilibili-dl

# 安装依赖
pip install -r requirements.txt

# 或者安装为命令行工具
pip install -e .

🚀 快速开始

1. 登录B站账号

方法1: 手动导入Cookie (推荐,当前可用)

由于B站更新了登录API,扫码登录功能暂时需要手动导入Cookie:

# 运行Cookie导入工具
python3 import_cookie.py

然后按照提示:

  1. 在浏览器中登录B站
  2. 按F12打开开发者工具
  3. 切换到"应用程序/Application" -> "Cookie" -> "https://www.bilibili.com"
  4. 找到SESSDATA的值并复制
  5. 粘贴到导入工具中

方法2: 扫码登录

bili-dl login  # 当前可能遇到Cookie获取问题

如遇到"获取Cookie失败"错误,请使用方法1

2. 下载视频

# 使用BV号下载
bili-dl download BV1ms4y1Y76i

# 使用完整链接下载
bili-dl download https://www.bilibili.com/video/BV1ms4y1Y76i

# 指定清晰度
bili-dl download BV1ms4y1Y76i --quality 4k

# 指定输出目录
bili-dl download BV1ms4y1Y76i -o /path/to/save

# 同时下载封面
bili-dl download BV1ms4y1Y76i --with-cover

3. 查看视频信息

bili-dl info BV1ms4y1Y76i

4. 查看登录状态

bili-dl status

5. 退出登录

bili-dl logout

🎤 视频转录功能

功能说明

使用 OpenAI Whisper AI 对下载的视频进行语音识别,生成文本转录和 SRT 字幕文件。支持 99 种语言,特别优化中文识别。

单视频转录

# 基础用法 - 生成纯文本
bili-dl transcribe video.mp4

# 生成 SRT 字幕文件
bili-dl transcribe video.mp4 --srt

# 指定模型和语言
bili-dl transcribe video.mp4 --model medium --language zh

# 自定义输出路径
bili-dl transcribe video.mp4 --output transcript.txt

# 使用英文识别
bili-dl transcribe video.mp4 -l en --srt

批量转录

# 转录目录下所有视频
bili-dl batch-transcribe ./downloads/

# 递归处理子目录
bili-dl batch-transcribe ./downloads/ --recursive

# 使用更高质量模型
bili-dl batch-transcribe ./downloads/ --model small -r

模型选择指南

模型 参数量 速度 准确度 内存占用 推荐场景
tiny 39M ⚡⚡⚡⚡⚡ ⭐⭐ ~1GB 快速预览、实时场景
base 74M ⚡⚡⚡⚡ ⭐⭐⭐ ~1GB 日常使用(默认)
small 244M ⚡⚡⚡ ⭐⭐⭐⭐ ~2GB 平衡选择、中文优化
medium 769M ⚡⚡ ⭐⭐⭐⭐⭐ ~5GB 高质量需求
large 1550M ⭐⭐⭐⭐⭐ ~10GB 专业级、最高准确度

转录结果示例

转录结果保存在视频所在目录:

downloads/
└── 2026-02-27/
    └── BV1ms4y1Y76i_细胞聚团原因剖析/
        ├── 细胞聚团原因剖析.mp4              # 原视频
        ├── 细胞聚团原因剖析_transcript.txt   # 转录文本
        └── 细胞聚团原因剖析.srt              # SRT字幕

转录常见问题

Q: 首次使用很慢?

A: 首次使用需要下载模型文件(base 模型约 140MB),后续会使用缓存,速度很快。模型缓存位置:~/.cache/whisper/

Q: 如何使用 GPU 加速?

A: Whisper 自动检测 GPU:

  • NVIDIA GPU:自动使用 CUDA 加速(约 10x 速度提升)
  • Apple Silicon (M1/M2/M3):自动使用 MPS 加速
  • 无 GPU:使用 CPU 模式(较慢但稳定)

Q: 支持哪些视频格式?

A: 支持 MP4/MKV/AVI/MOV/FLV 等常见格式,Whisper 通过 FFmpeg 自动提取音频。

Q: 中文识别准确度如何?

A:

  • base 模型:满足日常需求(80-85% 准确度)
  • small 模型:较好效果(85-90% 准确度)
  • medium/large:专业级效果(90-95% 准确度)

Q: 转录需要多长时间?

A: 取决于视频长度和模型选择:

  • tiny/base:约为视频时长的 0.5-1 倍(1小时视频 30-60分钟)
  • small/medium:约为视频时长的 1-3 倍
  • 使用 GPU 可大幅加速(提升 5-10 倍)

Q: 如何提升识别准确度?

A:

  1. 使用更大的模型(small/medium/large)
  2. 确保音频清晰,背景噪音少
  3. 正确指定语言参数(--language zh
  4. 对于专业术语,可能需要后期人工校对

📖 详细使用

命令列表

bili-dl --help                      # 查看帮助
bili-dl login                       # 扫码登录
bili-dl logout                      # 退出登录
bili-dl status                      # 查看登录状态
bili-dl download <URL>              # 下载视频
bili-dl info <URL>                  # 查看视频信息
bili-dl transcribe <PATH>           # 转录视频为文本
bili-dl batch-transcribe <DIR>      # 批量转录目录
bili-dl export-pdf <FILE>           # 转换Markdown为PDF
bili-dl batch-export-pdf <DIR>      # 批量转换Markdown为PDF

下载选项

选项 简写 说明 默认值
--quality -q 视频清晰度 1080p
--output -o 输出目录 downloads
--with-cover - 下载封面 关闭

支持的清晰度

清晰度 是否需要登录 是否需要大会员
360p
480p
720p
1080p
1080p+
1080p60
4k

📂 项目结构

bilibili-dl/
├── bilibili_dl/
│   ├── __init__.py      # 包初始化
│   ├── auth.py          # 登录认证模块
│   ├── parser.py        # 视频信息解析
│   ├── downloader.py    # 视频下载模块
│   └── cli.py           # 命令行界面
├── requirements.txt     # 依赖列表
├── setup.py            # 安装配置
├── README.md           # 使用文档
└── .gitignore          # Git忽略文件

🔧 技术实现

登录流程

  1. 请求生成二维码(获取qrcode_key)
  2. 在终端显示二维码
  3. 轮询扫码状态(每2秒检查一次)
  4. 扫码确认后获取Cookie
  5. 加密保存到本地

下载流程

  1. 解析BV号/视频链接
  2. 获取视频基本信息
  3. 获取视频流信息(DASH/MP4)
  4. 选择目标清晰度
  5. 下载视频流和音频流
  6. 使用ffmpeg合并音视频

下载目录结构

视频按**日期和"BV号+标题"**自动分类保存:

downloads/
├── 2026-02-27/                               # 下载日期
│   ├── BV1ms4y1Y76i_细胞聚团原因剖析/        # BV号_标题
│   │   ├── 细胞聚团原因剖析.mp4               # 合并后的视频
│   │   ├── BV1ms4y1Y76i_video.m4s           # 临时视频流
│   │   ├── BV1ms4y1Y76i_audio.m4s           # 临时音频流
│   │   └── BV1ms4y1Y76i_cover.jpg           # 封面(如果下载)
│   └── BV1xxx_Python教程第一课/              # 另一个视频
│       └── ...
└── 2026-02-28/                               # 第二天下载的视频
    └── ...

优点:

  • 目录名包含标题 - 一眼就知道视频内容(最大亮点!)
  • ✅ 按日期组织,便于管理
  • ✅ 每个视频独立目录,避免混乱
  • ✅ 支持同名视频,无冲突
  • ✅ 方便批量处理和归档

合并工具自动递归扫描所有子目录:

# 自动查找并合并所有视频
python3 merge_video.py downloads/

安全措施

  • Cookie使用Fernet对称加密存储
  • 配置文件权限设置为600(仅用户可读写)
  • 不上传任何用户数据
  • 30天自动过期提醒

🐛 常见问题

1. 提示"未找到ffmpeg"

解决方案: 安装ffmpeg并确保在PATH中

# 验证ffmpeg是否可用
ffmpeg -version

2. 下载速度慢

原因: 可能是网络或CDN节点问题

解决方案:

  • 使用代理
  • 等待网络条件改善
  • 尝试不同时段下载

3. 提示"登录失败: 获取Cookie失败,请重试"

原因: B站更新了登录API,Cookie获取方式发生变化

解决方案:

  1. 推荐: 使用手动导入Cookie方式(见"快速开始"章节)
  2. 等待工具更新支持新登录API
  3. 详见 TROUBLESHOOTING.md 文档

4. 无法下载高清晰度

原因: 需要大会员权限

解决方案:

  • 使用大会员账号登录
  • 或选择较低清晰度(720p/1080p)

5. 下载中断

原因: 网络不稳定

解决方案: 工具支持断点续传,再次执行下载命令即可继续

📄 Markdown 转 PDF 功能

功能说明

自动化将 Markdown 文件转换为精美的 PDF 文档,特别适合转换学习笔记、报告文档等。

核心特性:

  • 自动化转换 - 纯命令行操作,无需手动打印
  • 中文字体支持 - 完美支持中文显示
  • 图片嵌入 - 自动处理相对路径图片
  • 精美排版 - 优化的CSS样式,专业的排版效果
  • 批量转换 - 支持递归处理整个目录

单文件转换

# 基础用法
bili-dl export-pdf report.md

# 指定输出路径
bili-dl export-pdf notes.md -o output.pdf

# 使用自定义CSS样式
bili-dl export-pdf document.md --style custom.css

批量转换

# 转换目录下所有MD文件
bili-dl batch-export-pdf ./reports/

# 递归处理子目录
bili-dl batch-export-pdf ./notes/ --recursive

# 输出到指定目录
bili-dl batch-export-pdf ./docs/ -r -o ./pdf_output/

# 使用自定义样式批量转换
bili-dl batch-export-pdf ./content/ -r --style custom.css

使用示例

# 转换学习笔记
bili-dl export-pdf "reports/2026-02-28/BV1xxx/学习笔记.md"

# 批量转换所有报告
bili-dl batch-export-pdf reports/ -r

# 结果示例
# ✅ PDF 已生成: 学习笔记.pdf
# 📊 文件大小: 2834.0 KB

支持的 Markdown 特性

  • 标题层级 (H1-H6)
  • 列表 (有序/无序/嵌套)
  • 代码块 (语法高亮)
  • 表格
  • 图片 (支持相对路径和HTML标签)
  • 引用块
  • 分隔线
  • 粗体/斜体
  • 链接

常见问题

Q: 图片没有显示在PDF中?

A: 确保图片路径正确。工具会自动将相对路径转换为绝对路径,图片文件需要存在于指定位置。

Q: 中文字体显示异常?

A: macOS 用户需要安装系统依赖:

brew install pango gdk-pixbuf libffi

Ubuntu/Debian 用户:

sudo apt-get install libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0

Q: 如何自定义PDF样式?

A: 创建自定义 CSS 文件,然后使用 --style 参数:

bili-dl export-pdf notes.md --style my-style.css

Q: 生成的PDF文件很大?

A: PDF 大小取决于嵌入的图片。如果图片较多或分辨率高,PDF 文件会相应增大。可以考虑:

  • 压缩图片
  • 降低图片分辨率
  • 只转换必要的内容

自定义CSS示例

创建 custom.css:

body {
    font-family: "SimHei", sans-serif;
    font-size: 12pt;
    line-height: 1.6;
}

h1 {
    color: #e74c3c;
    border-bottom: 2px solid #e74c3c;
}

code {
    background: #ffe5e5;
    color: #c7254e;
}

然后使用:

bili-dl export-pdf notes.md --style custom.css

📝 开发计划

  • 支持批量下载
  • 支持播放列表/合集下载
  • 支持弹幕下载
  • 支持字幕下载 (已实现 Whisper 转录)
  • 添加Web图形界面
  • 支持自定义代理
  • 支持多线程下载加速
  • 视频转录和字幕生成 (已实现 Whisper AI)
  • Markdown转PDF (已实现自动化转换)

🤝 贡献

欢迎提交Issue和Pull Request!

📄 许可证

MIT License

⚖️ 法律声明

本项目:

  • 不提供任何形式的视频资源
  • 不破解或绕过任何付费内容
  • 仅作为技术学习和研究用途
  • 使用者需自行承担法律责任

请合理使用本工具,尊重知识产权,支持正版内容。


⭐ 如果这个项目对你有帮助,请给个Star支持一下!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

railgun_bili_tools-1.2.1.tar.gz (39.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

railgun_bili_tools-1.2.1-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file railgun_bili_tools-1.2.1.tar.gz.

File metadata

  • Download URL: railgun_bili_tools-1.2.1.tar.gz
  • Upload date:
  • Size: 39.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for railgun_bili_tools-1.2.1.tar.gz
Algorithm Hash digest
SHA256 ecff30ac1e13b7ec9c3fc06616ab695c726cf69f9e4455c29245c370f9149867
MD5 f0f84153947b95aeefc3d342a6bb9e2a
BLAKE2b-256 d77b28b7e4b7049954cad9af8e3ec7af65631349e348d177125c7f52cef6c0b9

See more details on using hashes here.

File details

Details for the file railgun_bili_tools-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for railgun_bili_tools-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b22f49359b13a0cfc110cbce18c69d07045cb374d5a32ef5a4e087c8b4c8bc42
MD5 52cf71290c583412854d6ded4c25853a
BLAKE2b-256 f4f66140b2b4a5c7a1f7d6dada2b267531b78d70bfb92183959a12ebd7e3a9ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page