🍻 bilibili video and danmaku downloader | B站视频、弹幕下载器
Project description
bilili
WIP,大规模重构中,尚不如 master 分支稳定,由于 aria2 的下载速度不如直接用 python 下载快(很迷),所以将重新添加一个 Python 下载器
使用 Python 下载 B 站视频,ビリリ~
仅限个人学习和研究使用,切勿用于其他用途
快速开始
bilili
可以从以下两种视频主页获取视频
- 普通视频:
https://www.bilibili.com/video/avxxxxxx
https://b23.tv/avxxxxxx
https://www.bilibili.com/video/BVxxxxxx
https://b23.tv/BVxxxxxx
- 番剧视频:
https://www.bilibili.com/bangumi/media/mdxxxxxx
安装 FFmpeg
由于大多数格式需要合并,所以 bilili 依赖于 ffmpeg,你需要事先安装好它
Windows 请手动下载后,存放到任意目录下,并将 ffmpeg.exe
所在目录添加到环境变量
而如果是 *nix
,可以很方便地通过包管理器一键完成
安装 Bilili
pip install bilili
此外你还可以在 Github 上下载最新的源码
git clone git@github.com:SigureMo/bilili.git
pip install -r requirements.txt
运行
如果你是通过 pip
直接安装程序,此时你可以直接使用命令 bilili
来进行下载
bilili <url>
而如果你是通过源码运行,需要在项目根目录运行如下命令
python -m bilili.bilili_dl <url>
当然,你需要将 <url>
替换为前面的视频主页 url
参数
bilili
还支持很多参数,具体如下
-f
/--format
选择下载格式(flv
orm4s
ormp4
),默认为 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
弹幕
注意事项
视频格式
视频格式是指 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
Hashes for bilili-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89d60974ee2594a6c1d4cbf351b896d3f3f564844dacade006642e957b3d1a46 |
|
MD5 | caa2a43d31235da3ff44b7c57e7a422d |
|
BLAKE2b-256 | aa0c59e305e2845863be053a77b427d70a294d03aba46497e8247f09cce87dc1 |