网站Logo TrackSail杂谈站

飞牛OS中使用bili-sync-rs下载B站收藏夹及使用jellyfin构建媒体库

miku0410
19
2025-05-20

bili-sync-rs介绍

bili-sync 是一款专为 NAS 用户编写的哔哩哔哩同步工具。

它的基本的工作原理是使用用户填写的凭据定期扫描视频合集、收藏夹等,获取到本地未下载过的内容并保存到本地,维持本地视频库与哔哩哔哩网站的同步。

下载的内容包括视频、封面、弹幕、标签与简介信息等,这些文件整体保持与 Emby、Jellyfin 等媒体服务器软件兼容的文件布局,使得目的文件夹可以直接被作为媒体库添加到这些软件中,无需干预自动识别。

https://github.com/amtoaer/bili-sync

部署流程

安装Docker镜像

首先打开飞牛OS自带的Docker,在Docker的镜像仓库中搜索amtoaer/bili-syns-rs并下载。

配置容器

下载完成之后在左侧本地镜像中运行bili-syns-rs,在部署过程中的高级设置里,我们需要为容器设置内容下载文件夹。

这里的存储位置中除了自带的配置文件夹外我们还需要额外设置用于存储收藏夹的目录/media和头像/people文件夹,这里需要注意的是/people文件夹的映射路径需设置成jellyfin的头像元数据存储目录否则媒体库的视频无法正确加载UP主头像,jellyfin的演员头像路径通常是

/vol1/@appcenter/Jellyfin/data/metadata/People

获取B站用户数据

安装完容器后第一次运行会报错。不用担心,此时我们打开容器/app/.config/bili-sync映射到存储空间的文件夹会看到里面生成了一个config.toml文件。其中的内容大概如下:

auth_token = "xxxxxxxx"
bind_address = "0.0.0.0:12345"
video_name = "{{title}}"
page_name = "{{bvid}}"
interval = 1200
upper_path = "/people"
nfo_time_type = "favtime"
time_format = "%Y-%m-%d"
cdn_sorting = false

[credential]
sessdata = ""
bili_jct = ""
buvid3 = ""
dedeuserid = ""
ac_time_value = ""

[filter_option]
video_max_quality = "Quality8k"
video_min_quality = "Quality360p"
audio_max_quality = "QualityHiRES"
audio_min_quality = "Quality64k"
codecs = [
    "AV1",
    "HEV",
    "AVC",
]
no_dolby_video = false
no_dolby_audio = false
no_hdr = false
no_hires = false

[danmaku_option]
duration = 15.0
font = "黑体"
font_size = 25
width_ratio = 1.2
horizontal_gap = 20.0
lane_size = 32
float_percentage = 0.5
bottom_percentage = 0.3
opacity = 76
bold = true
outline = 0.8
time_offset = 0.0

[favorite_list]

[collection_list]

[submission_list]

[watch_later]
enabled = false
path = ""

[concurrent_limit]
video = 3
page = 2

[concurrent_limit.rate_limit]
limit = 4
duration = 250

这其中credential部分是需要我们自己在浏览器中去获取的部分。我们首先需要在浏览器中登入自己的B站账号,随后按F12打开开发者工具并切换到应用程序选项卡中选中Cookie组,我们刷新一下可以看到其中包含很多参数,接下来我们只需找出对应参数的值粘贴到配置文件中即可。

前四个参数的值都可在Cookie组中找出而ac_time_value的值则需要切换到控制台选项卡中输入“window.localStorage.ac_time_value”来获取,如果返回的结果为undefined则重新登录账号再试或者切换到无痕模式下登入账号打开一个视频后再输入上面的代码后可返回正确的字符串。

修改配置文件

在获取参数后就可以获取到账号的数据了,接下来则是添加需要下载的收藏夹。在[favorite_list]下按照xxxxx = "/media/xxxx"的格式填写,等号前面填写的是收藏夹的ID,后面填写的是media文件夹下的子文件夹。收藏夹ID的获取方法:点入个人收藏夹页面在浏览器显示的网址后面找到fid后面的一串数字,这个即为该收藏夹的ID。

以下表格是配置文件中的一些重要参数及其说明

参数

含义

样例

video_name

视频所处文件夹的名称

支持设置 bvid(视频编号)、title(视频标题)、upper_name(up 主名称)、upper_mid(up 主 id),替换两个大括号内的值。

page_name

视频分页文件的命名

除支持 video 的全部参数外,还支持 ptitle(分 P 标题)、pid(分 P 页号),替换两个大括号内的值。

interval

扫描运行的间隔(单位:秒)

1200即表示每20分钟对收藏夹进行一次扫描同步

upper_path

jellyfin演员信息的保存位置

建议设置为/people否则无法正确识别演职员头像

sessdata

身份凭据1

按上文修改

bili_jct

身份凭据2

按上文修改

buvid3

身份凭据3

按上文修改

dedeuserid

身份凭据4

按上文修改

ac_time_value

身份凭据5

按上文修改

video_max_quality

下载视频最高流限制

由高到低依次为Quality8k,QualityDolby,QualityHdr,Quality4k,Quality1080p60,Quality1080pPLUS,Quality1080p,Quality720p,Quality480p,Quality360p,可以适当调整低一点

video_min_quality

下载视频最低流限制

不建议调整

audio_max_quality

下载音频最高流限制

由高到低依次为Quality192k,QualityHiRES,QualityDolby,Quality132k,Quality64k可以适当调整低一点

audio_min_quality

下载音频最低流限制

不建议调整

codecs

视频编码优先级

这个就根据个人喜好和设备性能,排在上面的优先级更高

no_dolby_video

不下载杜比视界视频

false不限制,true则限制不下载

no_dolby_audio

不下载杜比音频

false不限制,true则限制不下载

no_hdr

不下载hdr视频

false不限制,true则限制不下载

no_hires

不下载hires音频

false不限制,true则限制不下载

duration

弹幕在屏幕上的持续时间,单位为秒

自己根据喜好调整

font

弹幕使用字体

自己根据喜好调整

font_size

弹幕字体大小

自己根据喜好调整

width_ratio

计算弹幕宽度的比例

自己根据喜好调整

horizontal_gap

每条弹幕之间的最小水平间距

自己根据喜好调整

lane_size

弹幕所占据的高度

自己根据喜好调整

float_percentage

屏幕上滚动弹幕最多高度百分比

自己根据喜好调整

opacity

不透明度

自己根据喜好调整

bold

是否加粗

true表示是,false表示否

outline

描边宽度

自己根据喜好调整

time_offset

时间轴偏移,>0 会让弹幕延后,<0 会让弹幕提前,单位为秒

自己根据喜好调整

favorite_list

收藏夹下载目录配置

471022395 = "/media/学习"
2754496547 = "/media/test"
等号前面为b站的收藏夹ID,等号后面为对应收藏夹内容下载的目录,多个收藏夹可以配置多行,下载的目录可以设置成一样的,也可以不一样,配置的目录不存在会自动创建,这里/media建议和我一致,后面的学习,test等可以按需修改。

submission_list

UP主下载目录配置

同上

collection_list

合计下载目录配置

同上

使用jellyfin添加媒体库

安装并添加访问文件夹

在飞牛OS的应用中心中安装Jellyfin服务,随后在应用设置里添加允许访问的文件夹。此文件夹需为docker中/media映射在磁盘的文件夹。

添加媒体库

在首次注册后点击设置->控制台->切换到媒体库选项卡中,随后点击页面中的添加媒体库。

内容类型必须设置为混合电影和电视剧,否则无法正确的显示元数据的内容。

选择路径时我们可以返回飞牛云中jellyfin的应用设置复制文件夹的原始路径随后粘贴回jellyfin的路径中点旁边的搜索显示其子文件夹,随后选择需要添加的文件夹即可

因为我们下载B站视频时已经自带了文件的元数据,所以我们需要将在线刮削的选项全部取消。确保以下及类似选项已经取消勾选,否则会影响媒体库的显示内容。

媒体资料储存方式下的Nfo需要勾选。

随后就可静等扫描媒体库即可。

弹幕加载无中文解决办法

控制带播放选项卡下勾选以下内容

总结

该项目的部署到此已经结束bili-bync-rs相比bili-bync配置文件更加清晰,易用性和实用性也有了很大的提升。这些文件整体保持与 Emby、Jellyfin 等媒体服务器软件兼容的文件布局,使得目的文件夹可以直接被作为媒体库添加到这些软件中,无需干预自动识别。

动物装饰