Bilibili视频下载器 - 类似yt-dlp的B站视频下载工具
Project description
Bilibili视频下载器 (BiliDownloader)
一个类似yt-dlp的Bilibili视频下载工具,支持下载B站视频并自动转换为MP4格式。
🌟 功能特性
- 🎥 支持Bilibili视频URL解析和下载
- 🔄 自动处理m4s视频流(完整和分段)
- 🎬 自动转换m4s为MP4格式(使用FFmpeg)
- 🔐 支持Cookie导入获取更高质量视频
- 🔏 WBI签名认证,获取1080P高质量流
- 📊 实时下载进度显示
- 🛠️ 简单易用的命令行界面
- 📝 详细的错误处理和日志记录
💡 技术优势
质量对比
- 游客模式: 获取720P/1080P视频
- Cookie登录: 可获取更高码率版本
- 文件大小: 通常比yt-dlp下载的文件更大(质量更高)
认证机制
- ✅ WBI签名认证
- ✅ Netscape Cookie支持
- ✅ 自动登录状态检测
- ✅ 智能质量选择
🚀 安装要求
- Python 3.8+
- FFmpeg(用于视频格式转换)
📦 依赖库
pip install requests beautifulsoup4 lxml
🎯 使用方法
基本使用
# 下载单个视频(游客模式,1080P)
python main.py https://www.bilibili.com/video/BV1234567890
# 指定输出目录
python main.py -o ./downloads https://www.bilibili.com/video/BV1234567890
Cookie使用(推荐)
# 使用Cookie获取最高质量
python main.py --cookies cookies.txt https://www.bilibili.com/video/BV1234567890
# 不提示Cookie输入
python main.py --no-cookie-prompt https://www.bilibili.com/video/BV1234567890
高级选项
# 查看所有选项
python main.py -h
# 自定义FFmpeg路径
python main.py --ffmpeg-path /usr/local/bin/ffmpeg <URL>
# 调试模式
python main.py -v https://www.bilibili.com/video/BV1234567890
🍪 Cookie设置指南
获取Cookie文件
- 安装浏览器插件(推荐使用Cookie-Editor)
- 登录bilibili.com
- 导出Cookie为Netscape格式
- 保存为cookies.txt文件
Cookie文件格式示例
# Netscape HTTP Cookie File
.bilibili.com TRUE / FALSE 1757636940 SESSDATA your_sessdata_here
.bilibili.com TRUE / FALSE 1757636940 bili_jct your_bili_jct_here
.bilibili.com TRUE / FALSE 1757636940 DedeUserID your_user_id_here
.bilibili.com TRUE / FALSE 1773014473 buvid3 your_buvid3_here
重要Cookie说明
- SESSDATA: 登录会话标识(必需)
- bili_jct: CSRF令牌(必需)
- DedeUserID: 用户ID
- buvid3: 浏览器标识
🔧 技术实现
视频流解析
- WBI签名认证获取高质量流
- 解析Bilibili页面获取视频信息
- 支持DASH格式视频流
- 智能选择最佳质量(按带宽、分辨率、文件大小)
下载机制
- 支持HTTP 206 Partial Content分段下载
- 断点续传功能
- 实时进度显示
- 多重试机制
格式转换
- 使用FFmpeg将m4s转换为MP4
- 支持视频音频流合并
- 保持原始视频质量
- 自动清理临时文件
📁 项目结构
BiliDownloader/
├── README.md # 项目说明文档
├── main.py # 主程序入口
├── requirements.txt # 依赖库列表
├── example_cookies.txt # Cookie文件示例
├── src/
│ ├── __init__.py # 包初始化文件
│ ├── extractor.py # 视频信息提取模块
│ ├── downloader.py # 视频下载器核心
│ ├── converter.py # FFmpeg转换模块
│ ├── cookie_manager.py # Cookie管理模块
│ └── utils.py # 工具函数
└── tests/ # 测试文件
└── test_downloader.py
📈 性能对比
| 工具 | 视频质量 | 文件大小 | Cookie支持 | WBI签名 |
|---|---|---|---|---|
| BiliDownloader | 1080P | 81MB | ✅ | ✅ |
| yt-dlp | 1080P | 77MB | ✅ | ✅ |
| 其他工具 | 480P-720P | 20-40MB | ❌ | ❌ |
🛠️ 开发说明
本项目采用模块化设计,主要包含以下组件:
-
视频信息提取器 (
extractor.py):- WBI签名认证
- 解析B站页面,提取视频元数据和流URL
- Cookie登录状态管理
-
下载器 (
downloader.py):- 处理m4s视频文件下载
- 支持分段和断点续传
-
转换器 (
converter.py):- 调用FFmpeg进行格式转换
-
Cookie管理器 (
cookie_manager.py):- Netscape格式Cookie解析
- 登录状态检测
- 会话管理
-
工具模块 (
utils.py):- 提供通用工具函数
⚠️ 注意事项
- 请遵守Bilibili的服务条款和版权规定
- 仅供学习研究使用,请勿用于商业用途
- 下载的视频请勿二次分发
- Cookie文件包含敏感信息,请妥善保管
🆚 与yt-dlp对比
| 特性 | BiliDownloader | yt-dlp |
|---|---|---|
| B站专用优化 | ✅ 专为B站设计 | ❌ 通用工具 |
| 下载质量 | ✅ 超越yt-dlp | ✅ 高质量 |
| 使用简易性 | ✅ 简单直观 | ❌ 参数复杂 |
| Cookie支持 | ✅ 用户友好 | ✅ 命令行复杂 |
| 中文支持 | ✅ 完全中文化 | ❌ 英文为主 |
| 文件大小 | 🚀 更轻量级 | ❌ 体积庞大 |
🎉 License
本项目仅供学习交流使用。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bili_downloader-1.0.1.tar.gz
(77.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bili_downloader-1.0.1.tar.gz.
File metadata
- Download URL: bili_downloader-1.0.1.tar.gz
- Upload date:
- Size: 77.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61ad52e0b47c9fc5c8a2c5270ee41dc7ce66dd7d2edd0eff9db90ff99e1b4686
|
|
| MD5 |
e38bbbef0821c8b0fdcde0ca1e4164fa
|
|
| BLAKE2b-256 |
c303f7594b32b545918cc68b2cc74cae9143b61fcd4c7d04042ae613653e38be
|
File details
Details for the file bili_downloader-1.0.1-py3-none-any.whl.
File metadata
- Download URL: bili_downloader-1.0.1-py3-none-any.whl
- Upload date:
- Size: 96.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e373882e4e0ea731cd7697495678fe90d2d3c8a8a70bc72f9c7563cb460c5677
|
|
| MD5 |
3ffa7342a3570e7aacb80b3163f4448c
|
|
| BLAKE2b-256 |
2b14cca2f164cff6fb592a144de978883b46a126d8e0a984675bba1477aed112
|