pip install sole-bili-get -i https://www.pypi.org/simple/
PS(更新版本):pip install sole-bili-get -U
git clone https://github.com/muggledy/bili-get.git
python setup.py sdist bdist_wheel
pip install dist\sole_bili_get-0.0.1-py3-none-any.whl //demo
bili-get --help
C:\Users\muggledy\Downloads>bili-get https://www.bilibili.com/video/BV1CY4y1F7hP
output: C:\Users\muggledy\Downloads
(origin url):https://www.bilibili.com/video/BV1CY4y1F7hP
(title):p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼
(desc):此视频送给希望一气看完昭和全奥的朋友们!
(episodes num):7
(quality):清晰 480P(id:32), 流畅 360P(id:16)
selected download quality(MAX):32
get danmu urls success for 7 episodes
p1 danmu xml file is downloaded into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼.xml
start to download p1(video:清晰 480P,852x480,avc1.64001F_581618_29.412) from https://www.bilibili.com/video/BV1CY4y1F7hP/?p=1...
100.00%|████████████████████| 下载完成【application/octet-stream】 84.96MB/84.96MB
start to download p1(audio)...
100.00%|████████████████████| 下载完成【application/octet-stream】 28.28MB/28.28MB
ffmpeg merge success, save into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼.mp4
Note: this is a multi-episode video, you can download them all at once with --playlist
-
默认是下载到当前工作路径,可以通过
-o
或--output
指定输出目录,不存在则自动创建,譬如bili-get https://www.bilibili.com/video/BV1CY4y1F7hP -o D:\workspace\bilibili
。这会在--output
目录下产生两个文件夹:bili_tmp/
和bili_output/
,前者存放一些临时文件,用于记录多剧集视频的下载进度,如果下载过程中发生中断,重新执行命令可以继续下载过程(且对于尚未合成的剧集会尝试进行合成,除非指定--nomerge
参数),后者则是视频、音频、封面、弹幕文件的输出文件夹 -
对于多剧集视频,可以指定
--playlist
自动下载全部剧集,只要不删除对应的bili_tmp/
临时文件,可以任意重复执行下载命令,如bili-get https://www.bilibili.com/video/BV1CY4y1F7hP --playlist
,也不会重复下载,如果UP主新发布了剧集,则会继续下载 -
-c
或--cookie
用于指定您的B站Cookie信息,这样就可以下载1080P视频了C:\Users\muggledy\Downloads>bili-get https://www.bilibili.com/video/BV1CY4y1F7hP -c "your cookie" output: C:\Users\muggledy\Downloads (origin url):https://www.bilibili.com/video/BV1CY4y1F7hP (title):p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼 (desc):此视频送给希望一气看完昭和全奥的朋友们! (episodes num):7 (quality):高清 1080P(id:80), 高清 720P(id:64), 清晰 480P(id:32), 流畅 360P(id:16) selected download quality(MAX):80 get danmu urls success for 7 episodes p1 danmu xml file is downloaded into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼.xml start to download p1(video:高清 1080P,1920x1080,avc1.640032_2344634_29.412) from https://www.bilibili.com/video/BV1CY4y1F7hP/?p=1... 100.00%|████████████████████| 下载完成【video/mp4】 342.48MB/342.48MB start to download p1(audio)... 100.00%|████████████████████| 下载完成【video/mp4】 28.28MB/28.28MB ffmpeg merge success, save into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年!七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们!_1初代奥特曼.mp4 Note: this is a multi-episode video, you can download them all at once with --playlist
Cookie获取方式如下:
注:如果是Windows平台使用Chrome浏览器,可以指定
-c
参数为chrome
,程序将自动从./AppData/Local/Google/Chrome/User Data/default/Network/Cookies
读取B站的Cookie信息,譬如我们可以通过bili-get https://www.bilibili.com/video/BV18G411D7FM -c chrome
命令下载1080p视频 -
-q
或--quality
用于指定要下载的视频质量(清晰度),可选值有MAX
(最高质量,缺省值)、MIN
(最低质量)、MANUAL
(手动选择视频质量) -
支持多线程下载,
-t
或--threads
用于指定额外的下载线程数(缺省值为0,表示不启用多线程),譬如指定-t 3
,加上主线程,总计会有1+3=4个线程同时下载单个视频二进制文件,不同线程分别下载视频的不同部分,并且只有在平均每个线程被分派下载的字节数>4M时才会真的启用多线程,即对于小文件,仍是采用单个主线程下载 -
--nomerge
表示是否自动合成下载下来的音视频文件,默认合成,但需要提前下载ffmpeg工具(如windows版本)并将其路径添加到PATH
环境变量 -
--force
表示强制重新下载视频,如果没有指定--playlist
参数,则只是重新下载当前剧集,否则会直接删除bili_tmp/
临时文件,重新下载全部剧集,但不会立即删除全部已下载音视频文件,而是覆盖更新 -
--debug
用于在控制台输出全部debug日志信息,不指定该参数,也会将日志输出到bili_tmp/download.log
中以备查阅 -
默认随视频会下载封面图片
-
默认随视频会下载弹幕XML文件,可以使用danmu2ass做弹幕格式转换,双击Danmu2Ass.sln,用Visual Studio打开并编译,在项目Danmu2Ass目录下会生成bin文件夹,进入其中的Debug文件夹,可以看到一个Kaedei.Danmu2Ass.exe可执行文件,将视频和弹幕文件一块拖动到该可执行文件图标上去即可生成ASS字幕文件,再通过potplayer打开视频即可自动加载字幕
-
对于多剧集视频,支持一种特殊的多进程下载方式:开启多个终端窗口,分别执行同一个下载命令
bili-get https://www.bilibili.com/video/BV16S4y1C7ad --playlist
,不同的bili-get进程将互相协作各自选取不同的剧集号进行下载。原理简单来说就是:本地存储了一个临时文件用于记录当前多剧集视频的下载进度,将该文件抽象为一个待下载剧集号池子,不同bili-get进程通过文件锁的方式互斥地访问该临时文件、即互斥地从待下载剧集号池中锁定各自想要下载的剧集号,每个进程每次只会从池子中选取一个下载任务,下载完再从池子中选取另一个任务。另注意,多进程下载不支持--force
参数,其行为未定义
如果觉得本工具有用,请点个Star呗~,有bug或有改进意见请提issue,thx!