lifegpc / bili

A tool to download barrage/video from bilibili/acfun. Support English, Japanese and Chinese(China).一个Python编写的从Bilibili/Acfun下载弹幕/视频的工具。支持英语、日语和中文(中国)。(WEBGUI正在路上)
GNU Affero General Public License v3.0
355 stars 35 forks source link
acfun barrage bilibili danmu downloader python subtitles video-downloader

English 日本語

Rust 重构版开发中

Rust重构版

BiliBili 弹幕/视频下载软件

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=DTeS
-----END PGP PUBLIC KEY BLOCK-----

程序功能

如果视频指向的是番剧,将会自动重定向到番剧

仅下载音频

目前只支持DASH流的解析结果。(目前只有极个别的解析结果不是DASH。)

番剧

本程序支持以下的输入(以SS26291为例,忽略大小写):

如果根据现有的SS或EP号找不到内容,将会尝试使用相同的SS和EP号去访问已购买课程

仅下载音频

目前只支持DASH流的解析结果。

仅下载封面

在下载当前话的封面时,会自动下载整个番剧的封面。

已购买课程

本程序支持以下的输入(以SS150为例,忽略大小写):

会将所有已购买课程解析出来以供选择需要下载的课程。

收藏夹

本程序支持以下的输入(以UID1为例):

会将所有收藏夹内的视频解析出来以供选择需要下载的视频。

支持的GET参数

会将一个UP主的所有频道解析出来以供选择需要下载的频道。

频道

本程序支持以下的输入(以UID928123为例):

会将一个频道的所有视频解析出来以供选择需要下载的视频。

投稿视频列表

本程序支持以下的输入(以UID1为例):

会将一个UP主的所有投稿视频解析出来以供选择需要下载的频道。

直播回放

本程序支持以下的输入(以R1mx411c7En为例):

settings.json

该文件保存了一些设置,可以运行setsettings.py来设置。

webui.json

保存了WEB用户界面的设置。

sections.json

当WEB用户界面打开密码验证时,存储会话信息。

tv.bilibili.player.xml

该文件包括弹幕过滤规则。 可以直接将在PC网页端播放器的弹幕过滤设定中导出的文件放至程序目录下,并确保文件名为tv.bilibili.player.xml

开始使用

直接运行start.py即可

prepare.py

运行后可以取得运行WEB用户界面必须的一些文件。
运行时确保可以直接访问java
由于死🐴的Cloudflare的防BOT检测,现在已经无法自动更新/下载compiler.jar,请去这里下载compiler.jar,没有该文件将无法进行编译。(貌似目前没有防BOT检测)

WEB用户界面

运行startwebui.py后,可以在浏览器访问。
默认地址为http://localhost:8080

过滤弹幕

运行filter.py即可
注意:必须要有tv.bilibili.player.xml文件才能进行弹幕过滤。

翻译

你可以在Transifex上为该程序提供翻译。
感谢Kum4423提供日语翻译。

其他

完美支持普通视频的弹幕下载
现已支持SS号(番剧)的普通弹幕和全弹幕下载,但全弹幕下载开始时间可能需要手动调整(目前暂未发现每1P的具体时间戳)
全弹幕下载建议使用自动模式,不建议自己输入间隔天数
注:第1P一般是准确的。

全弹幕下载问题

由于B站限制了历史弹幕的调用次数,大概12h内可以调用1000次左右,所以在弹幕较多的时候请设定较大的时间间隔。
被限制后大约12h后会恢复正常

FAQ

Release中每个文件的区别

建议选择后4个版本。

无法输入密码

这是由于输入密码时关闭了输入内容在屏幕上输出(回显)导致的。
解决方法是直接正常输入密码后按回车键即可。

大会员账号提示仅大会员可以观看

先删除cookies.json,然后使用Chrome Driver登录,不要使用WEB UI登录。(WEB UI登录目前存在BUG)

默认下载位置在哪

默认下载位置在程序所在目录下的Download文件夹。
如果使用安装包安装的话,程序所在目录默认在%appdata%/bili%appdata%/bili x86%appdata%/bili x64

要不要使用ffmpeg, arai2c

建议都使用。
ffmpeg是用来自动合并分离的视频的。
aria2c可以极大地改善下载的体验。

如何批量下载

目前可以使用,隔开多个输入,也可以采用收藏夹等方式批量下载。
批量下载时建议配合命令行使用。(命令行的基础知识请自己搜索)
例如每次都选择下载方法4,可以使用py start.py -d4
更多的命令行指令可以采用py start.py -h查看。

闪退怎么办

目前除了windows_x64和windows_x86的batch脚本外,另外的版本都会在运行完毕后直接退出(无论程序是否出现错误)。
如果是主程序,可以在设置里启用写入日志到文件,然后去程序所在目录下的log文件夹寻找日志。如果出现错误,你可以在最后面看到错误的具体信息。

aria2c的几个下载设置是什么意思

aria2c是一个多线程下载工具。
多线程下载简单理解就是把1个文件分成n部分,每一部分同时下载。
同时下载的部分数越多,一般速度也就越快。
有关aria2c的设置:
是否启用aria2c:建议是,使用aria2c可以提供更好的下载体验(下载速度快)
使用aria2c时单个服务器最大连接数和单个文件最大连接数:这两者共同来限制最多能有多少部分能够同时下载。因此调大这两者可以增加同时下载的部分数,从而使速度加快。
使用aria2c时文件分片大小:aria2c是根据文件分片大小来将1个文件分成n部分。假设有1个100M的文件,文件分片大小是20M,因此这个文件将会被分成5部分。当文件大小不足文件分片大小的2倍时,这个文件将不会被分成n部分,而是当作一个整体下载。调小这个可以时文件被分成的部分数加多,一定程度上可以加快速度。
注:如果出现0b/s的情况,说明暂时被BiliBili CDN封禁,请适当调整上述参数以降低同时下载的部分数。
在使用aria2c下载时使用备用网址:建议开着,这样可以同时从多个CDN服务器下载内容,加快下载速度。
使用aria2c下载时文件预分配方式:这个一般建议保持默认值。
在使用aria2c时最大总体速度(B/s):这个根据个人需求设置吧。