基于 rust tokio 编写的 bilibili 收藏夹同步下载工具。
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.6...v2.0.7
如果视频已经下载完并成功合并,但视频下载状态还未保存至数据库中时程序被中断,继续运行时程序会尝试重新下载该视频并合并。 由于此时 ffmpeg 检测到目标文件已存在,需要手动在命令行中输入 'Y' 才能继续。但由于程序不会进行 stdin 操作,因此 ffmpeg 会卡在“是否 overwrite” 的询问无法继续运行。 该版本为 ffmpeg 的调用添加了 -y 参数,当目标文件已存在时默认进行覆盖,不会再询问。
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.5...v2.0.6
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.4...v2.0.5
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.3...v2.0.4
该版本主要引入了一个功能,额外拷贝一份 poster 作为 fanart,方便 emby 官方客户端或一些第三方程序使用该图作为背景。
然而,已经下载过的视频不会触发这个拷贝过程,因此我写了一个简单的 python 脚本来对已有的视频做这个操作,该脚本位于源码仓库的 scripts/2.0.3_add_fanart.py
,使用方法:
python 2.0.3_add_fanart.py <path1> <path2> ...
脚本内注释有对脚本的更多说明。
以下是 emby 官方 web 端的效果图,可以看到 emby 会读取 fanart 作为详情页的背景图:
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.2...v2.0.3
Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.1...v2.0.2
手写 changelog 好累啊,下个版本看看能不能安排一个自动生成(悲
{ truncate 占位符 要截断的长度 }
,如 { truncate title 5 }
指截取 title 的前 5 个字符。注意此处的字符是指 char 而非 byte,无论是中文还是英文、数字、特殊符号均作为一个 char 处理
SCAN_ONLY
设置为一个非空值,或指定 --scan-only
命令行参数启用RUST_LOG
环境变量bili-sync 已经完全由 Rust 重写,带来了更快的运行速度与更少的运行时占用。 需注意的是,出于项目功能和实现难度上的考量,该版本与 v1.x 的 Python 版本配置不兼容。
Docker 方面,为了区分不同的构建,避免意料外的升级,v2.0.0 版本开始采用 amtoaer/bili-sync-rs
的包名发布。
自该版本起,每次发版会在 Release 中携带预构建的各平台二进制包。如裸机使用该程序,需确认 FFmpeg 存在于 $PATH 中。
与 v1.x 版本的区别:
paginated_video
)的选项。该版本主要进行了一些修复:
Full Changelog: https://github.com/amtoaer/bili-sync/compare/1.1.7...1.1.8
该版本变动较多,请尽可能阅读完版本变更。以下逐个说明。
单个视频的 nfo 标签应该设置为movie
,在之前版本错误地写为了 episodedetails
。
emby 自身做了额外的兼容可以正常识别,但极空间不行(#41),该版本修复了该问题。
数据库批量操作可能会出现处理数量过多导致的 SQL 错误,该版本为所有批量操作设置 batch_size 以解决该问题。
在设置中引入 paginated_video
选项,默认关闭,用于控制分页视频的下载。
关闭时保持原始行为,开启时对于多P视频(大于1),程序会构造 tvshow
和 episodedetails
类型的 nfo 信息,将分P模拟为电视剧处理。
需要澄清的是,分P视频是共享 bvid 的,这意味着没办法判断你收藏时收藏的是哪一P。该开关关闭时的“原始行为”是指始终尝试下载第一P,而非下载你收藏时的分P位置。
如果开启该选项,程序将总是会下载全部分P,对于部分上百P的视频或者单P过大的视频可能会出现耗时长、存储占用大的情况。还请用户自行选择是否开启。(例如我刚刚找了一个 4k 的埃尔登法环全流程,下载了 189G)。
做了一些额外的修改,让check
命令可以适用于分P情况。其它几个命令大概检查了一下应该没什么要适配的,遇到问题可以报告。
在该版本中引入了 stream 配置,用于指定下载时视频、音频流的选择策略,codecs 也迁移为了 stream 的子选项,迁移过程会在启动时自动完成。 以下是新的配置项:
"stream": {
"video_max_quality": 127,
"audio_max_quality": 30280,
"video_min_quality": 16,
"audio_min_quality": 30216,
"codecs": [
"av01",
"avc"
],
"no_dolby_video": false,
"no_dolby_audio": false,
"no_hdr": false,
"no_hires": false
}
这些选项的变量名很清楚,唯一值得注意的是视频质量和音频质量的取值,请参考以下枚举变量设置:
class VideoQuality(Enum):
"""
视频的视频流分辨率枚举
- _360P: 流畅 360P
- _480P: 清晰 480P
- _720P: 高清 720P60
- _1080P: 高清 1080P
- _1080P_PLUS: 高清 1080P 高码率
- _1080P_60: 高清 1080P 60 帧码率
- _4K: 超清 4K
- HDR: 真彩 HDR
- DOLBY: 杜比视界
- _8K: 超高清 8K
"""
_360P = 16
_480P = 32
_720P = 64
_1080P = 80
_1080P_PLUS = 112
_1080P_60 = 116
_4K = 120
HDR = 125
DOLBY = 126
_8K = 127
class AudioQuality(Enum):
"""
视频的音频流清晰度枚举
- _64K: 64K
- _132K: 132K
- _192K: 192K
- HI_RES: Hi-Res 无损
- DOLBY: 杜比全景声
"""
_64K = 30216
_132K = 30232
DOLBY = 30250
HI_RES = 30251
_192K = 30280
Full Changelog: https://github.com/amtoaer/bili-sync/compare/1.1.6...1.1.7