Skip to main content

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文件

  1. 安装浏览器插件(推荐使用Cookie-Editor)
  2. 登录bilibili.com
  3. 导出Cookie为Netscape格式
  4. 保存为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

🛠️ 开发说明

本项目采用模块化设计,主要包含以下组件:

  1. 视频信息提取器 (extractor.py):

    • WBI签名认证
    • 解析B站页面,提取视频元数据和流URL
    • Cookie登录状态管理
  2. 下载器 (downloader.py):

    • 处理m4s视频文件下载
    • 支持分段和断点续传
  3. 转换器 (converter.py):

    • 调用FFmpeg进行格式转换
  4. Cookie管理器 (cookie_manager.py):

    • Netscape格式Cookie解析
    • 登录状态检测
    • 会话管理
  5. 工具模块 (utils.py):

    • 提供通用工具函数

⚠️ 注意事项

  • 请遵守Bilibili的服务条款和版权规定
  • 仅供学习研究使用,请勿用于商业用途
  • 下载的视频请勿二次分发
  • Cookie文件包含敏感信息,请妥善保管

🆚 与yt-dlp对比

特性 BiliDownloader yt-dlp
B站专用优化 ✅ 专为B站设计 ❌ 通用工具
下载质量 超越yt-dlp ✅ 高质量
使用简易性 ✅ 简单直观 ❌ 参数复杂
Cookie支持 ✅ 用户友好 ✅ 命令行复杂
中文支持 ✅ 完全中文化 ❌ 英文为主
文件大小 🚀 更轻量级 ❌ 体积庞大

🎉 License

本项目仅供学习交流使用。

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

bili_downloader-1.0.0.tar.gz (33.9 kB view details)

Uploaded Source

Built Distribution

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

bili_downloader-1.0.0-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file bili_downloader-1.0.0.tar.gz.

File metadata

  • Download URL: bili_downloader-1.0.0.tar.gz
  • Upload date:
  • Size: 33.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for bili_downloader-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a9304916f2f60723469a846d59eea0db3df891e5188bcc13325bb18ca22b7259
MD5 5ebb36623018b0f1f325bb3026f92064
BLAKE2b-256 1b08e7eb31fcc8e6a0e29063d725e51c55d66322cf62b33d10cfdcf03da3a0d7

See more details on using hashes here.

File details

Details for the file bili_downloader-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bili_downloader-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 160129fb1baac2fea36a54103b66045e6fb18d05499ee782a85f35b1bc870040
MD5 6969c9a2ae327db89475b107baf6e38e
BLAKE2b-256 503853930f5bf45feae69302a1a316a7dfa41110d1a49fcc0d52d2b67da523cb

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