批量下载哔哩哔哩视频和弹幕的工具
- 需要有 python 环境
- 如果没有安装 pip,自行搜索各个平台的安装方法
脚本依赖 yt-dlp 下载视频
pip install yt-dlp
yt-dlp 依赖 ffmpeg 将下载的视频和音频合并在一起
sudo apt install ffmpeg
注意系统自带的 apt 源安装的 ffmpeg 版本可能过旧,对于某些视频可能没法处理。比如音频流是 FLAC 编码的视频。所以需要自己安装最新版本。
# 下载最新静态构建版本(访问 https://johnvansickle.com/ffmpeg/ 确认最新版本)
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
# 解压并进入目录
tar xvf ffmpeg-release-amd64-static.tar.xz
cd ffmpeg-*-static
# 将二进制文件复制到系统路径(覆盖旧版前建议备份)
sudo cp ffmpeg ffprobe /usr/local/bin/
# 验证版本
ffmpeg -version
将 ffmpeg.exe 添加进系统的环境变量 path 里
- -prefix (-p) 下载的视频名字添加前缀
- -output (-o) 指定下载的路径,如果不指定,则下载到当前 cd 的目录
- -video (-v) 是否下载视频,传递参数1或者0,默认是1。
- -danmuku (-d) 是否下载弹幕,传递参数1或者0,默认是1。
- -cookie (-c) 指定浏览器 cookie 的路径,有 cookie 能下载当前登录账号可观看的最高质量的视频
- 浏览器添加扩展插件 Get cookies.txt LOCALLY
- 打开 bilibili 确保已登录账号
- 点击扩展-插件-Export,下载当前的 cookie
- 单个视频下载
- 下载完成后添加前缀 20200704
- 保存到路径 ~/desktop/video
- 指定 cookie 的路径 ~/download/cookies.txt
- -d 设置为 0 不下载弹幕
python3 bilidown.py av1830060 -p 20200704 -o ~/desktop/video -c ~/download/cookies.txt -d 0
-
多个视频下载
av号
网页地址
bv号
- av170001
- https://www.bilibili.com/video/BV1Es411j7AE
- BV15x411N7tu
-
其他参数对所有视频生效
python3 bilidown.py av170001 https://www.bilibili.com/video/BV1Es411j7AE BV15x411N7tu -p 20200704 -o ~/desktop/video
mac 去修改 ~/.bash_profile
Linux/Ubuntu 去修改 ~/.bashrc
以下是我的自定义 shell 内容,提供参考,可将其添加在文件末尾
./bilidown.py
需要替换为脚本的路径
function download_video_danmu() {
sudo python3 ./bilidown.py -c '~/download/cookies.txt' $*
}
function download_video_danmu_to_default() {
sudo python3 ./bilidown.py -o '/Users/renge/Desktop/bilidown/' -c '~/download/cookies.txt' $*
}
alias bilidown='download_video_danmu'
alias bilidown_default="download_video_danmu_to_default"
修改完成后执行 source .bashxxx
使其立刻生效 .bashxxx 为刚刚修改的文件
现在我们可以使用自定义的命令 bilidown 下载视频了
省去了每次手动输入 cookie 地址
cd ~/bilidown
bilidown av1830060 -p 安达可爱
下载视频到默认的目录
bilidown_default av1830060 -p 岛村可爱
Renge@RengedeMacBook-Pro ~ % bilidown_default av1830060 -p 岛村可爱
--------------------------------
downloading danmuku xml av1830060
finished xml av1830060
[BiliBili] Extracting URL: https://www.bilibili.com/video/av1830060
[BiliBili] 1830060: Downloading webpage
[BiliBili] BV15x411N7tu: Extracting videos in anthology
[BiliBili] BV15x411N7tu: Downloading wbi sign
[BiliBili] BV15x411N7tu: Downloading video formats for cid 2814198
[BiliBili] 1830060: Extracting chapters
[info] BV15x411N7tu: Downloading 1 format(s): 100111+30280
[info] Downloading video thumbnail 0 ...
[info] Writing video thumbnail 0 to: /Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.jpg
[download] Destination: /Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.f100111.mp4
[download] 100% of 3.85MiB in 00:00:00 at 8.97MiB/s
[download] Destination: /Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.f30280.m4a
[download] 100% of 1.44MiB in 00:00:00 at 3.34MiB/s
[Merger] Merging formats into "/Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.mp4"
Deleting original file /Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.f100111.mp4 (pass -k to keep)
Deleting original file /Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.f30280.m4a (pass -k to keep)
[EmbedThumbnail] Neither mutagen nor AtomicParsley was found. Falling back to ffmpeg
[EmbedThumbnail] ffmpeg: Adding thumbnail to "/Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.mp4"
[Metadata] Adding metadata to "/Users/renge/Desktop/bilidown/岛村可爱 【静止系MAD】Waiting for The Moon.mp4"
--------------------------------
Renge@RengedeMacBook-Pro ~ %
-
Windows 需要编写 .bat 脚本,然后去
我的电脑-右击-属性-高级系统设置-环境变量-系统变量-Path-编辑-新建-粘贴目录
添加环境变量 -
Win10 用户可以去安装 Ubuntu 子系统,然后将下载路径指定为
/mnt/d/bilidown
其中mnt 为 window 的根目录,d当然就是d盘