Skip to content

内置插件 ​

内置插件随 AB 发布,位于 module/plugins/builtin/,用与第三方插件相同的 SDK 实现,可以当作写法参考。在 设置 → 插件 中启停和配置。

id默认作用
rename启用重命名方式 pn、advance、template
ingest-filters启用包含过滤(torrent.filter)
media-server-refresh启用整理完成后刷新 Jellyfin / Emby / Plex(未填写地址和 Key 时什么也不做)
hardlink停用把整理好的文件硬链接到媒体库

rename ​

宿主只自带 none(保留原名)。pn 以文件名解析出的标题命名,advance 以番剧文件夹名命名,两者的输出与 3.x 逐字节一致。template 用 Jinja2 沙箱模板渲染文件名主体。

模板在 设置 → 插件 → 重命名 中填写,例如 {{ title }} - S{{ season|pad(2) }}E{{ episode|pad(2) }}。可用变量:title、bangumi_name、season、episode、episode_type、group、kind、language。过滤器 pad(n) 补零并保留半集小数。保存时试渲染一次,不合法的模板被拒绝(HTTP 422)。运行时渲染失败,或结果为空、含路径分隔符时,该文件保留原名并通知,不会退回 pn。

ingest-filters ​

补充规则自带「排除过滤」之外的「包含过滤」:配置一组正则(忽略大小写)后,只有名称匹配任一表达式的种子才会下载。留空不过滤。非法正则按字面匹配。

media-server-refresh ​

订阅 torrent.organized 与 hardlink 发布的 hardlink.linked(文件新放入媒体库)。收到第一个事件后等待 delay 秒,期间的事件合并成一次刷新请求;刷新请求发出后到达的事件再排一次。

选项说明
serverjellyfin、emby 或 plex
url服务器地址,如 http://192.168.1.10:8096(Plex 默认端口 32400);留空则不刷新
api_keyJellyfin / Emby 的 API Key,或 Plex 的 X-Plex-Token
delay延迟秒数,默认 30

订阅 torrent.organized,把正片与字幕链接到媒体库目录,下载目录原样保留继续做种。

选项说明
source_root下载根目录(AB 本地路径)。媒体库保持与它相同的目录结构:library_root / (文件相对 source_root 的路径)
library_root媒体库目录(AB 本地路径),不能位于 source_root 内
path_map[{downloader, from, to}]:把下载器路径前缀 from 换成 AB 本地路径 to。downloader 默认为 default;按最长前缀匹配,未匹配的路径原样使用
cross_device硬链接遇到跨文件系统(EXDEV)时:copy(默认)、symlink、skip(跳过并通知)
  • 首次启用时 source_root 与 library_root 尚未填写,插件显示加载失败;设置表单已出现,填写并保存后插件重新加载。
  • 链接或副本先写到目标旁的临时文件,再原子地改名,复制中断不会留下半个文件。
  • 媒体库中已有同名文件、但不是本插件创建的:跳过,不覆盖,并发一条 hardlink.failed 通知。
  • 本插件之前为同一集创建的链接,在版本升级(新版本替换旧种子,规范文件名不变)后被原子替换为指向新文件的链接。
  • 已链接的文件再次收到事件时不做任何事;插件在自己的键值存储里记录它创建过的目标路径。插件放置后被用户删除的文件,再次收到事件时也不重建,只有补链会重建。
  • 删除种子不会删除媒体库中的链接。
  • 启用前已经下载的文件不会自动处理。在插件的设置分区点「链接已有文件」,或调用 POST /api/v1/plugins/hardlink/backfill:遍历 source_root 下的 .mp4 / .mkv / .ass / .srt,返回 {"linked", "exists", "conflict", "failed"} 计数。

Docker

硬链接不能跨文件系统。在 Docker 中,请把下载目录与媒体库放在同一块盘上,并以同一个挂载点映射进 AB 容器(例如把 /mnt/media 整体挂载为 /media,下载目录与媒体库都在其下)。两个独立挂载的目录即使在同一块盘上,也会被视为不同文件系统,链接会退化为 cross_device 指定的行为。下载器运行在另一个容器里、看到的路径与 AB 不同时,用 path_map 做映射。

AutoBangumi 基于 MIT 许可证发布。(最新版本: v3.3.2)