Bili Sync Versions Save

基于 rust tokio 编写的 bilibili 收藏夹同步下载工具。

v2.0.7

2 weeks ago
  1. 每次扫描收藏前都调用一个简单接口检查登录状态,避免匿名用户走到后续流程,下载到 480p 的低清晰度视频。
  2. 支持在配置文件中自定义 NFO 文件中采用的视频时间。 可选值有两个:favtime 代表加入收藏夹的时间,pubtime 代表视频发布的时间。默认使用 favtime: image
  3. 修复某些视频分页的 cid 过大导致的数值溢出。 image

What's Changed

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.6...v2.0.7

v2.0.6

1 month ago

该版本修复了如下问题:

如果视频已经下载完并成功合并,但视频下载状态还未保存至数据库中时程序被中断,继续运行时程序会尝试重新下载该视频并合并。 由于此时 ffmpeg 检测到目标文件已存在,需要手动在命令行中输入 'Y' 才能继续。但由于程序不会进行 stdin 操作,因此 ffmpeg 会卡在“是否 overwrite” 的询问无法继续运行。 该版本为 ffmpeg 的调用添加了 -y 参数,当目标文件已存在时默认进行覆盖,不会再询问。

What's Changed

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.5...v2.0.6

v2.0.5

1 month ago
  1. 替换日志库,现在日志的时间将读取本地时间,而非固定为 UTC 时间。
  2. 调低并发下载量与 read_timeout 值,尝试缓解下载速度慢时出现的阻塞现象。

What's Changed

New Contributors

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.4...v2.0.5

v2.0.4

1 month ago

What's Changed

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.3...v2.0.4

v2.0.3

1 month ago

手写的 ChangeLog

该版本主要引入了一个功能,额外拷贝一份 poster 作为 fanart,方便 emby 官方客户端或一些第三方程序使用该图作为背景。 然而,已经下载过的视频不会触发这个拷贝过程,因此我写了一个简单的 python 脚本来对已有的视频做这个操作,该脚本位于源码仓库的 scripts/2.0.3_add_fanart.py,使用方法:

python 2.0.3_add_fanart.py <path1> <path2> ...

脚本内注释有对脚本的更多说明。


以下是 emby 官方 web 端的效果图,可以看到 emby 会读取 fanart 作为详情页的背景图:

What's Changed

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.2...v2.0.3

v2.0.2

1 month ago

What's Changed

Full Changelog: https://github.com/amtoaer/bili-sync/compare/v2.0.1...v2.0.2

v2.0.1

1 month ago

手写 changelog 好累啊,下个版本看看能不能安排一个自动生成(悲

fix

  • 配置文件存在但格式错误将不会再覆盖为默认配置,而是提示错误信息(#71)
  • 定位并解决了一个风控的判断错误,并为请求设置超时时间,避免长时间阻塞(#77)
  • 修复程序第一次执行时生成的默认配置文件中不存在 credential 的问题(#78)

feat

  • 支持在模板中截断文本,避免路径过长(#73)
    • 语法为: { truncate 占位符 要截断的长度 },如 { truncate title 5 } 指截取 title 的前 5 个字符。注意此处的字符是指 char 而非 byte,无论是中文还是英文、数字、特殊符号均作为一个 char 处理
  • 支持 scan-only 参数,开启该参数后将仅向数据库中写入视频信息而跳过下载流程(#76)
    • 可通过将环境变量 SCAN_ONLY 设置为一个非空值,或指定 --scan-only 命令行参数启用
    • 该功能主要用于手动从 1.0 迁移,具体迁移思路请参考该评论

chore

  • 该版本开始设置默认的日志等级为 info(#75)
    • 此前未在程序内进行额外指定,默认仅会打印 error
    • 该变动主要影响非 docker 版,docker 内已经默认设置了 RUST_LOG 环境变量

v2.0.0

2 months ago

v2.0.0 已发布!

bili-sync 已经完全由 Rust 重写,带来了更快的运行速度与更少的运行时占用。 需注意的是,出于项目功能和实现难度上的考量,该版本与 v1.x 的 Python 版本配置不兼容

Docker 方面,为了区分不同的构建,避免意料外的升级,v2.0.0 版本开始采用 amtoaer/bili-sync-rs 的包名发布。 自该版本起,每次发版会在 Release 中携带预构建的各平台二进制包。如裸机使用该程序,需确认 FFmpeg 存在于 $PATH 中

与 v1.x 版本的区别:

  1. 完全重写带来的各部分差异(配置文件格式、日志等)。
  2. 引入模板,支持自定义视频和分页的存储路径。
  3. 移除分页视频是否仅下载第一页(即paginated_video)的选项。
  4. 引入了一个实验性的画布比例对齐方案,基本解决了弹幕字体大小不一致的问题。

1.1.8

3 months ago

该版本主要进行了一些修复:

  1. 修复视频标题含有非法 xml 字符,导致标题不能识别的问题(如 &、<、>)
  2. 修复分 p 视频不存在第一帧图片时的异常问题(修复后会 fallback 到视频的封面)
  3. 修复开启分 p 后执行 refresh 命令导致历史视频也被刷新为分 p 的问题

Full Changelog: https://github.com/amtoaer/bili-sync/compare/1.1.7...1.1.8

1.1.7

3 months ago

该版本变动较多,请尽可能阅读完版本变更。以下逐个说明。

Fix

nfo 修复

单个视频的 nfo 标签应该设置为movie,在之前版本错误地写为了 episodedetails。 emby 自身做了额外的兼容可以正常识别,但极空间不行(#41),该版本修复了该问题。

可能的数据库错误修复

数据库批量操作可能会出现处理数量过多导致的 SQL 错误,该版本为所有批量操作设置 batch_size 以解决该问题。

Feature

支持分P视频下载

在设置中引入 paginated_video 选项,默认关闭,用于控制分页视频的下载。 关闭时保持原始行为,开启时对于多P视频(大于1),程序会构造 tvshowepisodedetails 类型的 nfo 信息,将分P模拟为电视剧处理。

需要澄清的是,分P视频是共享 bvid 的,这意味着没办法判断你收藏时收藏的是哪一P。该开关关闭时的“原始行为”是指始终尝试下载第一P,而非下载你收藏时的分P位置

如果开启该选项,程序将总是会下载全部分P,对于部分上百P的视频或者单P过大的视频可能会出现耗时长、存储占用大的情况。还请用户自行选择是否开启。(例如我刚刚找了一个 4k 的埃尔登法环全流程,下载了 189G)。

对额外命令的分P适配

做了一些额外的修改,让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