🍻 bilibili video and danmaku downloader | B站视频、弹幕下载器
Project description
bilili
WIP,大规模重构中,尚不如 master 分支稳定,由于 aria2 的下载速度不如直接用 python 下载快(很迷),所以将重新添加一个 Python 下载器
重构进度
- 移除 aria2 下载器
- 即时 ass 弹幕转换
- 稳定 Python 下载器
- 边下载边合并
- 好看的界面
使用 Python 下载 B 站视频,ビリリ~
仅限个人学习和研究使用,切勿用于其他用途
快速开始
bilili 可以从以下两种视频主页获取视频
- 普通视频:
https://www.bilibili.com/video/avxxxxxxhttps://b23.tv/avxxxxxxhttps://www.bilibili.com/video/BVxxxxxxhttps://b23.tv/BVxxxxxx
- 番剧视频:
https://www.bilibili.com/bangumi/media/mdxxxxxx
安装 FFmpeg
由于大多数格式需要合并,所以 bilili 依赖于 ffmpeg,你需要事先安装好它
Windows 请手动下载后,存放到任意目录下,并将 ffmpeg.exe 所在目录添加到环境变量
而如果是 *nix,可以很方便地通过包管理器一键完成
你可以通过直接在终端运行 ffmpeg -version 测试是否安装成功
安装 Bilili
pip 安装
现在 bilili 支持通过 pip 一键安装
pip install bilili
源码安装
此外你还可以从 Github 上下载最新的源码进行安装
git clone git@github.com:SigureMo/bilili.git
cd bilili/
python setup.py build
python setup.py install # 可能需要 sudo
运行
运行非常简单~
bilili <url>
当然,你需要将 <url> 替换为前面的视频主页 url
调试
本地调试
git clone git@github.com:SigureMo/bilili.git
cd bilili/
pip install -r requirements.txt
python -m bilili.bilili_dl <url>
参数
bilili 还支持很多参数,具体如下
-f/--format选择下载格式(flvorm4sormp4),默认为 m4s 格式,注意该参数仅代表下载源格式,所有格式最后均会转为 mp4-d/--dir指定存储目录,默认为项目根目录-q/--quality指定清晰度,默认为120,对应关系如下code 清晰度 120 超清 4K 116 超清 1080P60 112 高清 1080P+ 80 高清 1080P 74 高清 720P60 64 高清 720P 32 清晰 480P 16 流畅 360P 6 极速 240P 208 未知,MP4 格式专属,无法作为参数指定 如果不存在指定的清晰度,会自动降低到最接近的清晰度
-t/--num-thread指定最大下载线程数,默认为 30-p/--episodes选集,可通过以下方式进行选择,默认为 all<p1>单独下某一剧集<p1>,<p2>,<p3>,...,<pn>即通过,分割,不要加空格<p_start>~<p_end>即通过~分隔,下载起始到终止的剧集all全部下载
-w/--overwrite强制覆盖已下载视频-c/--sess-data传入cookies中的SESSDATA--playlist-type指定播放列表类型,支持dpl和m3u,默认为dpl,设置为no即不生成播放列表--path-type指定播放列表路径的类型(rp:相对路径,ap:绝对路径),默认为相对路径--danmaku指定弹幕类型,支持xml和ass,如果设置为no则不下载弹幕,默认为xml弹幕
参数的使用
参数的使用很简单,比如修改格式为 flv,只需要
bilili <url> --format=flv
# 或者
bilili <url> -f flv
不需要指定具体值,只切换 True or False 的参数也不需要在命令中指定值,比如开启强制覆盖已下载视频选项
bilili <url> --overwrite
# 或者
bilili <url> -w
注意事项
视频格式
视频格式是指 bilibili 直接提供的资源格式,本程序最终都会转换成通用的 mp4 格式方便观看,不同格式在通用性、下载速度等方面的比较如下
| M4S | FLV | MP4 | |
|---|---|---|---|
| 支持程度 | 中(少数视频不支持) | 高 | 低(仅支持 acg_video) |
| 下载速度 | 高 | 低 | 中 |
| 需要 FFmpeg 合并 | 是 | 是 | 否 |
| 清晰度支持 | 全面 | 中(部分较新的 4K 等清晰度无法获取) | 极少(仅支持 1080P 及更低的清晰度,且无法选择) |
| 总结 | B 站当前使用的格式,拥有齐全的清晰度和最佳的下载速度 | 当 M4S 无法下载时的备用选项,但大多数视频也在支持 | 除了不需要合并,一无是处 |
高清晰度下载
如果你想下载大会员才能看的清晰度,请先确保你是大会员,本程序不会帮助你去获取你没有权限获取的视频
而如果你已经是大会员,登录帐号后,在 B 站按 F12 开启控制台,切换到 Network 选项卡,刷新页面,在第一个资源(往往是 html)的 Header -> cookie 中找到 SESSDATA 字段,并通过相关参数传入程序即可
弹幕
默认会下载 XML 格式的弹幕,如果想使用 ASS 格式的弹幕(大多数播放器都支持,可以自动加载),可以加参数 --danmaku=ass 自动转换,或者手动在us-danmaku转换
另外,程序内自动转换依赖 danmaku2ass ,但是并没有将它存放在我的代码里,而是根据需要动态从 github 上下载并加载的
播放列表
默认生成相对路径类型的 PotPlayer 播放列表,如果你不想使用 PotPlayer 的话,可以通过参数来修改
参考项目
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
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 bilili-0.2.5.tar.gz.
File metadata
- Download URL: bilili-0.2.5.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c2c01337722d2aa5f3bd65cd962064dce702cc9a63361353e83d8d337ea9b39
|
|
| MD5 |
30b5f6a5213ab0d62140b5f3703a03f7
|
|
| BLAKE2b-256 |
ccf2fadc41c7c67d1943e6333af94f41b2d8fa492cde4b30dcda78f1bebd7f92
|
File details
Details for the file bilili-0.2.5-py2.py3-none-any.whl.
File metadata
- Download URL: bilili-0.2.5-py2.py3-none-any.whl
- Upload date:
- Size: 59.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2da434b68c39c8651a94208181ea5961c2126d24242f27706795bb795a858c5
|
|
| MD5 |
fa7ef83537a83909f77ba429ea7cce51
|
|
| BLAKE2b-256 |
357ac9da44d82586445701ffd46072bdeacbb730bb8b0698409c380b45d07134
|