- 后端
- 前端
- 音视频
【免费下载链接】Auto_Bangumi
AutoBangumi - 全自动追番工具
AutoBangumi 是一款基于 RSS 订阅的全自动番剧下载与整理工具,用户只需在 Mikan Project 等站点订阅番剧,即可由程序自动完成新剧集追踪、下载、重命名与目录整理。本文以项目官方"关于"文档为骨架,结合 RSS 引擎、重命名器、TMDB 解析器 等源码实现,系统讲解其核心工作流、目录整理规范、重命名策略与源码级运行原理,并给出完整的 Docker 快速部署步骤,帮助你零门槛搭建一套"配置一次、持续使用"的全自动追番管线。
关于 AutoBangumi
AutoBangumi是一款基于 RSS 订阅的全自动番剧下载和整理工具。只需在 Mikan Project 或类似网站订阅番剧,即可自动追踪和下载最新剧集。
整理后的文件名和目录结构可直接兼容 Plex、Jellyfin 等媒体库软件,无需额外的元数据刮削。也就是说,从 RSS 抓取到下载完成、文件落盘的那一刻起,媒体库软件就能直接识别并呈现正确的剧集封面、标题与季集信息,中间没有任何人工介入。
从架构上看,AutoBangumi 由三部分组成:
- 后端服务(
backend/src/main.py):基于 Python 的异步全栈,负责 RSS 拉取、标题解析、下载器对接、文件重命名与数据库持久化; - WebUI 前端(
webui/src):基于 Vue 3 的配置与管理界面,提供 RSS 添加、番剧卡片、规则编辑、下载器设置等功能; - 下载器适配层(
backend/src/module/downloader):抽象 qBittorrent、aria2 等下载客户端,统一完成种子添加、查询、重命名与删除。
功能特性一览
AutoBangumi 的核心设计目标可以概括为"简单的一次性配置,持续使用"。围绕这一目标,项目提供了以下关键能力:
- 简单的一次性配置,持续使用;
- 无需操心的 RSS 解析器,可提取番剧信息并自动生成下载规则;
- 番剧文件整理(目录结构见下文);
- 全自动重命名——超过 99% 的番剧文件在重命名后可被媒体库软件直接刮削;
- 基于父文件夹名称自定义重命名所有子文件;
- 季中追番补全当季所有缺失剧集;
- 高度自定义选项,可针对不同媒体库软件进行微调;
- 零维护,完全透明运行;
- 内置 TMDB 解析器,可生成完整的 TMDB 格式文件和番剧元数据;
- 支持 Mikan RSS 订阅的反向代理。
核心工作流:订阅 → 解析 → 下载 → 整理
一条番剧从订阅到入库的完整链路,在源码中对应RSSEngine.refresh_rss()(backend/src/module/rss/engine.py):
- 拉取 RSS 条目:遍历所有启用的 RSS 源,通过
RequestContent.get_torrents()抓取种子列表。源码中对同一主机的请求做了节流处理——RSS_PER_HOST_DELAY = 2.0(秒),避免一次性轰炸同一站点触发 HTTP 429 限流(issue #1026),不同主机之间则并行拉取(信号量上限为 5)。 - 标题解析与规则匹配:将每个种子的标题交给解析器,提取番剧名、季、集、字幕组、分辨率等信息,再与数据库中的番剧订阅规则做匹配(
match_bangumi_in_list)。命中过滤规则的种子会被跳过(match_torrent)。 - 偏好去重:对设置了
preferred_group(字幕组偏好)或preferred_resolution(分辨率偏好)的番剧,同一集只保留最匹配偏好的版本,避免多字幕组重复下载(_select_preference_skips)。 - 投递下载器:通过
DownloadClient.add_torrent()把种子加入 qBittorrent 或 aria2。投递失败的种子不入库,下一轮刷新时会重新匹配并重试;同时会发出DownloadFailureEvent通知。 - 持久化与状态维护:成功的种子写入数据库,并更新 RSS 源的
connection_status、last_checked_at等健康状态字段;工作 → 出错的状态跃迁会触发RssFailureEvent通知。
整个流程由后台调度循环定时驱动,用户无需干预。
RSS 解析器:从标题到结构化订阅规则
解析器的职责
AutoBangumi 的解析器用于分析 RSS 条目标题,并生成番剧、季度、集数、字幕组等结构化信息(见 docs/config/parser.md)。在 WebUI 中可以配置以下全局解析参数:
| WebUI 选项 | 说明 | 对应config.json参数(rss_parser节) | 默认值 |
|---|---|---|---|
| 启用 | 是否启用 RSS 解析器,关闭后不再自动解析新条目 | enable | true |
| 标题解析器 | 经典解析器(稳定)保持原有行为;通用解析器(Preview)支持剧集范围、OVA、剧场版与混合合集,两种模式不会自动互相回退 | engine(classic/tokenizer) | classic |
| 语言 | 解析器偏好的标题语言 | language(zh/jp/en) | zh |
| 排除 | 全局过滤规则,支持普通字符串或正则表达式,匹配的条目在解析阶段被过滤 | filter | ["720", "\\d+-\\d+"] |
此外,从 v3.1 开始,单个 RSS 的来源解析器在添加或编辑 RSS 时设置,可以按订阅源独立选择解析引擎。
三种解析路径
在源码层,标题解析由TitleParser(backend/src/module/parser/title_parser.py)统一调度,包含三条路径:
- 确定性解析(
raw_parser):通过内置的 tokenizer / 经典正则引擎提取标题结构。对无法识别的 PV、合集、range 等类型会按业务准入策略直接拒绝,防止误订阅; - Mikan 主页解析(mikan_parser.py):当 RSS 条目携带番剧主页链接时,抓取主页中的官方标题(自动去除"第 X 季"后缀)与海报图,用于生成规范的订阅名称;
- LLM 解析(可选):支持 OpenAI 兼容接口、Anthropic Claude、Google Gemini 等多供应商,提供
primary(LLM 优先)与fallback(确定性解析失败时兜底)两种模式,并内置熔断、并发信号量与结果缓存机制。
解析完成后,标题被转换为Bangumi订阅记录,自动生成下载规则,整个过程无需人工编写任何过滤规则。
番剧文件整理:媒体库友好的目录结构
AutoBangumi 自动将下载完成的文件整理为以下结构,这与 Plex / Jellyfin 的刮削约定完全对齐:
Bangumi ├── bangumi_A_title │ ├── Season 1 │ │ ├── A S01E01.mp4 │ │ ├── A S01E02.mp4 │ │ ├── A S01E03.mp4 │ │ └── A S01E04.mp4 │ └── Season 2 │ ├── A S02E01.mp4 │ ├── A S02E02.mp4 │ ├── A S02E03.mp4 │ └── A S02E04.mp4 ├── bangumi_B_title │ └─── Season 1该结构包含两个关键设计:
- 顶层目录按番剧标题命名,季内文件统一放入
Season N子目录; - 文件采用
标题 SxxExx的季集命名,媒体库无需依赖文件名以外的任何信息即可完成匹配。
全自动重命名:超过 99% 文件可直接被媒体库刮削
重命名示例
AutoBangumi 的全自动重命名引擎能识别字幕组发布名中的标题、季、集、分辨率等要素,并转换为标准媒体库命名:
[Lilith-Raws] Kakkou no Iinazuke - 07 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4].mp4 >> Kakkou no Iinazuke S01E07.mp4三种重命名方式
重命名行为由番剧管理设置中的rename_method控制(docs/config/manager.md、docs/feature/rename.md):
| 方式 | 语义 | 示例 |
|---|---|---|
pn(默认) | Pure Name,使用种子下载名中的标题信息 | [Lilith-Raws] 86 - Eighty Six - 01 ...mkv→86 - Eighty Six S01E01.mkv |
advance | 高级重命名,使用父文件夹名称作为标题 | /downloads/Bangumi/86 - Eighty Six(2023)/Season 1/...mkv→86 - Eighty Six(2023) S01E01.mkv |
none | 不重命名,文件保持原样 | — |
此外,AutoBangumi 还支持:
- 收藏重命名:对位于收藏一级目录、可从文件名解析出集数的剧集进行重命名,并自动归入
Season文件夹与BangumiCollection目录; - 字幕文件重命名:
pn/advance均有对应的subtitle_pn/subtitle_advance变体,可同时重命名同目录下的字幕文件并保留语言后缀; - 剧集偏移:从 v3.2 起支持按季偏移与集偏移修正编号,例如
S02E01应用"季度 -1、剧集 +28"后变为S01E29,适用于 RSS 编号与 TMDB 数据不一致、或因播出间隔产生"虚拟季度"的番剧。
源码层面的重命名实现
在 backend/src/module/manager/renamer.py 中,Renamer.gen_path()统一负责目标路径生成。几个值得注意的实现细节:
- 集数格式化为两位补零(
S01E07),而总集篇等半集(如 12.5)会保留小数,避免覆盖同季整数集(issue #667); - 对第 0 集(Special / OVA)与会导致非正数的偏移自动忽略,防止误覆盖正片(issue #977);
- 电影 / 剧场版不使用
SxxExx编号,而是生成Title (Year).ext格式,与父文件夹命名保持一致; - 重命名成功后会给下载器任务打上
ab:renamed标签(_RENAMED_TAG),供 filebot、hlink 等外部脚本过滤已处理任务(issue #147); - 复杂的"修订版本替换"流程(V1 → V2 换源)以状态机方式分步执行,并带有租约锁与回滚机制,保证媒体库索引不被破坏。
季中追番与剧集补全
AutoBangumi 支持季中追番补全当季所有缺失剧集:当用户在中途订阅某部正在播出的番剧时,程序会自动检测当季已播出但尚未下载的集数,并主动补全。
该功能在 backend/src/module/manager/collector.py 中实现:
SeasonCollector.collect_season():给定番剧规则,通过搜索器或直接抓取 RSS 链接获取整季种子列表,经release_fits_bangumi过滤后批量投递下载器;eps_complete():后台循环定期查询not_complete的番剧,对eps_collect标记为 False 的番剧自动执行整季收集。
如果下载的种子已经存在,程序会返回 406 并标记"种子已经添加",避免重复下载;收集失败时则会回滚刚插入的订阅行,不留幽灵规则。
高度自定义选项与零维护运行
番剧管理配置
番剧管理器设置(config.json的bangumi_manage节)提供了针对不同媒体库软件微调的能力:
| 参数 | 说明 | WebUI 选项 | 默认值 |
|---|---|---|---|
enable | 启用番剧管理器 | 启用 | true |
eps_complete | 启用剧集补全 | 番剧补全 | false |
rename_method | 重命名方式(normal/pn/advance/none) | 重命名方式 | pn |
group_tag | 为下载器任务添加字幕组相关标签 | 添加组标签 | false |
remove_bad_torrent | 移除下载器中状态异常的种子 | 删除坏种 | false |
track_orphans | 把未匹配到规则的种子记录为"未匹配种子";关闭后后续新增规则可立即接住 RSS 中仍存在的旧条目 | 记录未匹配种子 | true |
其中track_orphans对应一个重要的运行哲学:默认开启时,未匹配的种子会被记录以便追踪;关闭后,它们会在每轮 RSS 刷新时重新尝试匹配,让后补规则可以"接住"仍留在源里的旧集。
网络与元数据服务配置
AutoBangumi 内置的 TMDB 解析器需要访问外部元数据服务,docs/config/network.md 中提供了网络覆盖能力(network节):
| 参数 | 说明 | 默认值 |
|---|---|---|
tmdb_base_url | TMDB API 地址,网络受限时可改为可访问的反代地址 | https://api.themoviedb.org |
tmdb_api_key | 自定义 TMDB API Key,留空时使用内置共享 key | "" |
bgm_base_url | Bangumi API 地址 | https://api.bgm.tv |
在源码中,tmdb_parser(backend/src/module/parser/analyser/tmdb_parser.py)会实时读取这些配置(issue #1042),并对查询结果做 512 条上限的 LRU 缓存;用户自配 key 优先于内置共享 key(issue #975)。解析器不仅提取标题、季、年份与海报,还会统计各季已播集数、检测基于播出间隔的"虚拟季度"断点,并为剧集偏移的自动检测提供数据支撑。
快速开始:Docker 一键部署
AutoBangumi 推荐使用 Docker 部署(完整步骤见 docs/deploy/quick-start.md)。
1. 创建数据与配置目录
# 使用绑定挂载 mkdir -p ${HOME}/AutoBangumi/{config,data} cd ${HOME}/AutoBangumi也可以选择 Docker 卷:
docker volume create AutoBangumi_config docker volume create AutoBangumi_data2. 使用 Docker CLI 部署
docker run -d \ --name=AutoBangumi \ -v ${HOME}/AutoBangumi/config:/app/config \ -v ${HOME}/AutoBangumi/data:/app/data \ -p 7892:7892 \ -e TZ=Asia/Shanghai \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -e UMASK=022 \ --network=bridge \ --dns=8.8.8.8 \ --restart unless-stopped \ --log-opt max-size=10m \ --log-opt max-file=3 \ ghcr.io/estrellaxd/auto_bangumi:latest3. 使用 Docker Compose 部署
将以下内容保存为docker-compose.yml:
version: "3.8" services: AutoBangumi: image: "ghcr.io/estrellaxd/auto_bangumi:latest" container_name: AutoBangumi volumes: - ./config:/app/config - ./data:/app/data ports: - "7892:7892" network_mode: bridge restart: unless-stopped dns: - 8.8.8.8 environment: - TZ=Asia/Shanghai - PGID=$(id -g) - PUID=$(id -u) - UMASK=022启动:
docker compose up -d4. 获取 Mikan RSS 订阅链接
访问 Mikan Project,注册账号并登录,点击右下角的RSS按钮复制链接。RSS 链接格式如下:
https://mikanani.me/RSS/MyBangumi?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 或 https://mikanime.tv/RSS/MyBangumi?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx关于订阅源的详细注意事项(如每部番剧只订阅一个字幕组、简繁字幕二选一、OVA/剧场版订阅限制等)请参阅 RSS 订阅设置。Mikan Project 主站在部分地区可能被屏蔽,可使用备用域名mikanime.tv。
5. 首次配置
安装 AB 后,WebUI 将自动启动,但主程序处于暂停状态。访问http://abhost:7892:
- 打开网页,默认用户名为
admin,默认密码为adminadmin,首次登录后请立即修改; - 输入下载器的地址、端口、用户名和密码;
- 点击应用保存配置,AB 将重启,右上角圆点变绿表示正常运行;
- 点击右上角+按钮,勾选聚合 RSS,选择解析器类型,输入 Mikan RSS 链接。
等待 AB 解析聚合 RSS,解析完成后将自动添加番剧并管理下载。
番剧管理界面
WebUI 的首页以卡片形式展示所有订阅番剧(docs/feature/bangumi.md):
点击番剧海报即可管理单个番剧条目:
- 规则选择:同一番剧存在多个下载规则(如不同字幕组)时会弹出选择框;
- 通知徽章:黄色
!徽章表示订阅需要审核(如检测到偏移问题),数字徽章表示存在多个规则,组合徽章(! | 2)同时提示两者; - 剧集偏移自动检测:点击"自动检测",AB 分析 TMDB 剧集播出日期识别"虚拟季度"并建议正确的偏移值,后台扫描线程还会定期检查现有订阅的偏移问题;
- 归档 / 取消归档:可手动归档已完结番剧,或由 AB 依据 TMDB 的系列状态("已完结" / "已取消")自动归档;
- 禁用 / 删除:禁用后不再下载或重新解析;注意直接从聚合 RSS 中删除条目,它会在下次解析周期被重新创建;
- 高级设置:提供季度偏移、剧集偏移、以及用于种子匹配的自定义正则过滤器。
社区、贡献与许可证
AutoBangumi 提供官方更新通知频道与 Bug 反馈群组,欢迎提交 Issues 和 Pull Requests 参与贡献。项目感谢 Sean 等贡献者的大力帮助,完整贡献者名单可见于项目贡献者图。
免责声明:由于 AutoBangumi 通过非官方版权渠道获取番剧,请勿将其用于商业用途、勿制作包含 AutoBangumi 的视频内容在国内视频平台(版权相关方)上发布、勿将其用于任何违反法律法规的活动。AutoBangumi 仅供学习和个人使用。
项目采用 MIT License 开源发布,代码仓库中包含完整的 贡献指南、架构设计文档 与 更新日志,供开发者深入研读。
- 后端
- 前端
- 音视频
【免费下载链接】Auto_Bangumi
AutoBangumi - 全自动追番工具
相关推荐
【免费下载】 AutoBangumi:基于RSS的全自动追番整理工具详解
AutoBangumi:基于RSS的全自动追番整理工具详解 项目概述 AutoBangumi是一款专为动漫爱好者设计的自动化工具,它通过RSS订阅实现番剧的自动
后端前端音视频AutoBangumi:基于 RSS 的全自动追番整理下载工具技术解析
AutoBangumi:基于 RSS 的全自动追番整理下载工具技术解析 AutoBangumi 是一个基于 RSS 的 全自动追番整理下载工具 :你只需要在 M
后端前端音视频AutoBangumi 全自动追番工具:RSS 订阅解析、下载管理与媒体库整理核心机制详解
AutoBangumi 全自动追番工具:RSS 订阅解析、下载管理与媒体库整理核心机制详解 AutoBangumi(简称 AB)是一个基于 RSS 的全自动番剧
后端前端音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考