使用 bili-sync 保存 B 站视频
使用 bili-sync 保存 B 站视频
目标 & 背景
有时候 B 站的视频,收藏后会被下架,或者作者自己删除了,等后面想回去接着看,收藏夹中只能看到该视频已失效,也完全记不得这个视频是啥
再加上家里的电视都是使用 Apple TV,想要给家人看非常麻烦,直到前段时间看到了 bili-sync 这个项目,该项目基于 bilibili-api 使用 python 进行开发
本篇文章基于 bili-sync 1.1.8 版本,如有不同,请参考官方文档
目录层级
首先按照下方层级创建对应的文件及文件夹,注意 config.json 文件是需要手动创建的
.
└── docker
└── bli-sync
├── config
│ └── config.json
└── data
在 config.json 中填入如下内容
这里的 interval 我设置的是 5,也就是 5 分钟刷新一次 B 站收藏夹
{
"sessdata": "",
"bili_jct": "",
"buvid3": "",
"dedeuserid": "",
"ac_time_value": "",
"interval": 5,
"path_mapper": {
},
"subtitle": {
"font_name": "微软雅黑,黑体",
"font_size": 40.0,
"alpha": 0.8,
"fly_time": 5.0,
"static_time": 10.0
},
"stream": {
"video_max_quality": 127,
"audio_max_quality": 30280,
"video_min_quality": 16,
"audio_min_quality": 30216,
"codecs": [
"av01",
"avc",
"hev"
],
"no_dolby_video": false,
"no_dolby_audio": false,
"no_hdr": false,
"no_hires": false
},
"paginated_video": true
}
B 站基础信息获取
在 bilibili-api 文档 中讲的比较详细,但是在我实际使用时,经常会碰到 bili-sync 自己挂了的情况,如果你也碰到类似情况,建议参考下方流程
- 首先打开 chrome 浏览器
- 新建一个 无痕窗口 (注意!一定要使用无痕窗口)
- 登录 B 站
- 在开发工具中找到 B 站的 cookie
- 在这里获取 sessdata、bili_jct、buvid3 和 dedeuserid 这四个属性值
- 在控制台窗口输入 window.localStorage.ac_time_value 获取 ac_time_value
最后将这 5 个属性,填到上面创建的 config.json 文件中
收藏夹路径映射
进入你 B 站的收藏页面,比如我这里的 学习 收藏夹,点击右边的学习即可进入该收藏夹的 web 页面
如果你的收藏夹是空的,是点不进去的,至少需要一个收藏
此时查看浏览器的地址,在 ml 后面的内容就代表了你当前收藏夹的 id
https://www.bilibili.com/medialist/detail/ml123456789
接着配置 config.json 中 path_mapper 的具体内容,该属性是一个 map,如果你有多个收藏夹,多加几行即可,如上文中我的学习收藏夹,将 id 填入,后面对应的是 bili-sync 在容器中的映射位置,其中 /Videos/Bilibilis 是固定的,后面的 学习 就是你自己要起的名字
"path_mapper": {
"123456789": "/Videos/Bilibilis/学习/",
"456": "/Videos/Bilibilis/学习2/"
},
docker 配置
这里需要映射三组路径,config 和 data 就是 目录层级 中需要创建的内容,而这里的 /volume1/视频/link/Bilibili 代表视频文件到底存放在哪里
services:
bili-sync:
image: amtoaer/bili-sync:1.1.8
tty: true
volumes:
- /volume1/视频/link/Bilibili:/Videos/Bilibilis/ # 视频文件
- /volume1/docker/bili-sync/config:/app/config/ # 配置文件
- /volume1/docker/bili-sync/data:/app/data/ # 数据库
environment:
- TZ=Asia/Shanghai
restart: always
network_mode: bridge
hostname: bili-sync
container_name: bili-sync
networks: {}
Emby 配置
bili-sync 在整理元数据时,使用的是 Emby 的标准,因此我之前搭建的 Plex 就无法正确识别元数据。所以为了可以正确运行,还需要在群晖上安装 Emby,这个过程比较简单,这里就不介绍了。在 Emby 添加媒体库时,我这里只打开了下面三个开关,其他的所有功能全部关闭
最后
日常我使用 infuse 作为我所有设备的终端播放,得益于 infuse 支持的库比较全,我可以通过增加 Emby 服务,将现有的 Plex 数据合并到一起,平日需要看 B 站的视频,直接在 infuse 选择即可,省去两个应用切来切去的麻烦
整体 bili-sync 在我这里已经平稳运行了挺长时间,几乎无感使用,尤其是新版本作者增加了分 P 下载,整理为集合的功能,非常舒服
- 感谢你赐予我前进的力量