某天刷 B 站突然想起一个看过并收藏的视频,当我点开收藏夹想再看一遍的时候,发现有不少视频变这样了。
小电视哭丧着脸,我也是一脸懵。这好好的视频说下架就下了吗?
看来数字内容还是攥在自己手里才方便,平台里网盘里的东西说没就没了。
正好最近关注到一个开源哔哩哔哩工具项目 【bili-sync】,可以定时自动化把 B 站收藏的合集和收藏夹内容同步到本地。
这不巧了嘛咱有 NAS 呀,要空间有空间要挂机有挂机,只需要 Docker 部署一下,就再也不用看小电视两眼汪汪了。
说干就干,查阅项目文档,5 分钟搞定部署成功,体验了一下还真是方便。
先来介绍一下这款神器。
bili-sync 是什么?
bili-sync 是一款专为 NAS 用户编写的哔哩哔哩同步工具。
它的基本的工作原理是使用用户填写的凭据定期扫描视频合集、收藏夹等,获取到本地未下载过的内容并保存到本地,维持本地视频库与哔哩哔哩网站的同步。
下载的内容包括视频、封面、弹幕、标签与简介信息等,这些文件整体保持与 Emby、Jellyfin 等媒体服务器软件兼容的文件布局,使得目的文件夹可以直接被作为媒体库添加到这些软件中,无需干预自动识别。
如何安装 bili-sync?
作者为各个平台提供了预构建的二进制文件,并且打包了 Linux/amd64 与 Linux/arm64 两个平台的 Docker 镜像。用户可以自行选择使用哪种方式运行。
也就是说你不仅可以在支持 Docker 的 NAS 服务器上运行。同样也可以在 PC 上通过双击打开可执行文件直接运行。最终都是通过启动一个 WebUI 可视化界面,进行配置和所有操作。
区别就是 NAS 服务器一般是 24 小时不关机的,更适合定时同步更新,而 PC 一旦关机,就没法离线执行查询下载任务了。如果你没有 NAS 又想尝尝鲜,那也可以用 PC 试试,二进制文件支持 Linux 系统、Mac 和 Windows 系统。
安装前准备
bili-sync 是通过浏览器登录 B 站,获取用户 cookies 信息,根据填入的用户凭据,用 bilibili 的 API 接口连接 B 站,获取信息。
所以需要先用浏览器登录并找到以下五个参数信息保存备用:
SESSDATA:
bili_jct:
buvid3:
DedeUserID:
ac_time_value:
前面四个参数为 Cookies 参数,以 Edge 浏览器为例,登录 B 站后,按 Ctrl+Shift+I 或者 F12 打开开发者工具,在上方点击【应用程序】选项卡,左侧点【Cookie】展开,点击 https://www.bilibili.com 标签,复制对应的参数值保存。
最后一个 ac_time_value 相对特殊,仅用于刷新 Cookies,打开开发者工具,进入控制台,输入 window.localStorage.ac_time_value 即可获取值。
以上参数详细说明及不同浏览器获取教程,详见 bilibili-api 获取 Credential 类所需信息(https://nemo2011.github.io/bilibili-api/#/get-credential)
Docker 安装
推荐使用 Compose 安装,文档给出的 Docker Compose 文件注释详尽,大家可以根据自己机器情况修改:
services:
bili-sync-rs:
# 不推荐使用 latest 这种模糊的 tag,最好直接指明版本号
image:amtoaer/bili-sync-rs:latest
restart:unless-stopped
network_mode:bridge
# 该选项请仅在日志终端支持彩色输出时启用,否则日志中可能会出现乱码
tty:true
# 非必需设置项,推荐设置为宿主机用户的 uid 及 gid (`$uid:$gid`)
# 可以执行 `id ${user}` 获取 `user` 用户的 uid 及 gid
# 程序下载的所有文件权限将与此处的用户保持一致,不设置默认为 Root
user:1000:1000
hostname:bili-sync-rs
container_name:bili-sync-rs
# 程序默认绑定 0.0.0.0:12345 运行 http 服务
# 可同时修改 compose 文件与 config.toml 变更服务运行的端口
ports:
-12345:12345
volumes:
-${你希望存储程序配置的目录}:/app/.config/bili-sync
# metadata/people 正确挂载才能在 Emby 或 Jellyfin 中显示 UP 主头像
# 右边的目标目录不固定,只需要确保目标目录与 bili-sync 中填写的“UP 主头像保存路径”保持一致即可
-${Emby 或 Jellyfin 配置下的 metadata/people 目录}:/app/.config/bili-sync/upper_face
# 接下来可以挂载一系列用于保存视频的目录,接着在 bili-sync 中配置将视频下载到这些目录即可
# 例如:
# - /home/amtoaer/HDDs/Videos/Bilibilis/:/home/amtoaer/HDDs/Videos/Bilibilis/
# 如果你使用的是群晖系统,请移除最后的 logging 配置,否则会导致日志不显示
logging:
driver: "local"
我是使用飞牛 Docker Compose 安装,如果你 NAS 也是飞牛系统,可以照抄。
在文件管理里,飞牛存储空间创建以下文件夹路径:Docker/compose/bili-sync;/Media/bili-sync;右键->【详细信息】->【复制原始路径】。
我的飞牛 Compose 文件如下,注意 volumes 下面的挂载目录,即: 前面的文件夹路径,填入上一步创建的/Media/bili-sync 文件夹完整路径,根据自己的设备存储空间不同,需要自行修改:
services:
bili-sync:
image:amtoaer/bili-sync-rs:latest
container_name:bili-sync
user:0:0
ports:
-12345:12345
volumes:
-/vol1/1000/Docker/bili-sync/config:/app/.config/bili-sync
-/vol1/1000/Media/bili-sync:/bilibili
-/vol1/1000/Media/bili-sync/upper_face:/app/.config/bili-sync/upper_face
restart: unless-stopped
PC 直接运行
没有 NAS 的小伙伴,在 PC 上也可以运行,在 bili-sync 程序发布页(https://github.com/amtoaer/bili-sync/releases)
选择最新版本中对应机器架构的压缩包,解压后会获取一个名为 bili-sync-rs 的可执行文件,直接双击执行就行。
解压后双击运行,会打开 cmd 窗口,并生成第一次运行日志,注意保存里面的 auth_token 值,该 token 大有用处且只在第一次显示,务必妥善保存。
另外需要注意的是,如果你使用 PC 二进制可执行文件方式运行,需要安装 FFmpeg,并正确配置全局环境变量,任意位置可直接通过 ffmpeg 命令访问。具体方法可自行 AI 搜索解决这里就不展开了。
如何使用 bili-sync
Docker 容器或者直接 PC 运行起来之后,浏览器输入 http://你部署服务的机器 ip:12345 进入 WebUI 界面。
前端认证状态需要填入 Token,即上面提到的运行日志里的 auth_token,采用 Docker 方式运行的,打开 Docker 容器的运行日志查找。
填入该 token 之后,会出现更多配置信息,点开【B 站认证】,填入前面准备好的五个 cookies 参数信息,点下面的额保存设置。其他的【基本设置】,【视频质量】,【弹幕渲染】,【高级设置】这些可以保持默认,或者根据自己需要调整。
用户信息输入完成之后即可连接到自己的 B 站账号收藏夹和合集,以及关注的 up 主信息,并以简洁的卡片形式显示。
点击想要同步的收藏夹或者合集卡片下面的【订阅】按钮,注意本地保存路径,要填写容器内的路径,例如前面 compose 文件里的挂载路径: 后面的/bilibili/文件夹下面,子文件夹名可以自己写。
我第一次没搞清楚,填写挂载的飞牛目录完整路径,导致一直下载不成功,大家一定注意此处。
填错了也没关系,创建好之后,也可以在【内容管理】->【视频源】里面修改路径,另外还可以手动添加。
完成之后程序就开始查询下载了,第一次配置玩如果没有触发任务,别慌,等一段时间在间隔时间之后会再次触发查询,或者等不及直接重启容器,也会立即触发查询下载。
容器跑起来了,下载速度还不错的,下载能拉取到的视频质量据说跟自己的会员等级有关系。
执行日志显示正常扫描下载,说明配置没问题。
半小时不到,几百个视频下载完成。
每个视频以单独的文件夹存储,包含 Jellyfin 等视频服务可识别的封面,视频信息等等,飞牛影视也可以直接识别到。
仪表板监控首页,可以显示任务情况,以及系统资源使用情况。只是好像有个 Bug,存储空间显示不准确,显示我有 12T 多的空间,实际并没有😂
最后,在飞牛影视里添加媒体库,将下载文件夹/media/bili-sync 添加到媒体库中,注意内容类型选择【其他视频】,因为已经下载好视频信息了,不需要飞牛刮削,即使刮削,B 站视频飞牛也刮削不到。
添加好之后,就可以在飞牛影视中观看下载的视频了,OK,再也不用担心视频失效了!