利用XArr-Rss拯救Sonarr糟糕的动画追番体验
背景
前段时间,笔者自己研究并搭建了一套影音自动化系统,最后暂时定型为Overseerr+Prowlarr+Radarr+Sonarr+qBittorrent+XArr-Notify+Plex。关于这套系统的搭建本文暂时不再展开叙述,站内和网络上已经有一些相关教程,各位可以自行查找。
原计划是打算用Sonarr作为新番动画的追番管理器和监控下载服务,但在实际使用中,发现了一些问题以至于预期的流程没有顺利执行,其中最为主要的问题有以下几点:
由索引器提供的搜索结果里,大部分番剧因为发布的命名格式不被Sonarr识别,造成无法正常抓取下载。
由索引器提供的搜索结果里,部分结果的语言被识别为English或其它语言,如果Sonarr的Language Profile限制了只下载中文,那么也可能会错误拒绝掉一些实际上是内嵌中文的结果。
Sonarr的数据来源是tvdb,且对中文的支持并不好,在发给索引器进行资源搜索时,使用的是英文名或罗马音,如果字幕组的发布名称中没有包含英文名的话,就很有可能不会被搜索到,这也是很多人有时候用Sonarr搜不到资源的主要原因。
为了解决以上识别问题,我曾经使用Mikanarr来处理新番动画,但实际体验中仍有部分问题(Sonarr在导入时是根据字幕组发布命名来解析的季集,尤其是存在多季的时候经常分析错误,这是Sonarr的问题),且作者几乎不怎么维护项目,方案不够完美。
基于此现状,我找到XArr-Notify的作者,从实际需求出发,开发了本次介绍的主角XArr-Rss来帮助辅助Sonarr识别。
XArr-Rss简介
XArr-Rss可以简单理解为一个RSS转换器,它可以将各个BT发布站点的RSS内容转换成Sonarr能正确识别的RSS内容。它在整个自动化流程中扮演索引器的角色,定位与Prowlarr、Jackett类似,主要针对日本动画尤其是新番着重做了优化,可以和其它索引器互为补充。
它的大致运作流程如下:
它能够支持多数据源和多种匹配规则,正确识别网络上绝大多数日本动画资源以供Sonarr抓取下载。
安装
XArr-Rss提供了Docker镜像:xiaoyi510/xarr-rss
如果是Windows/Linux用户
先将镜像拉到本地:
docker pull xiaoyi510/xarr-rss
在powershell/终端运行如下命令创建并启动容器(根据自己情况,修改为自己硬盘的挂载路径,需要添加tmdb的host):
docker run -d --name xarr-rss --add-host=api.themoviedb.org:108.156.91.21 -e TZ=Asia/Shanghai -p 8086:8086 -v <你的本地路径>:/app/conf --restart unless-stopped xiaoyi510/xarr-rss:latest
如果是群晖用户
将本地数据文件夹路径 挂载到 容器的/app/conf,端口8086即可。
需提前给api.themoviedb.org添加host或者提供代理,以获取正确的中文名称。
如果是Unraid用户
unraid 模板下载地址 执行命令即可
原作者节点
curl -sSL https://xarr.52nyg.com/unraid-template/config.sh | sh
人生观节点
curl -sSL https://file.lxg2016.com/assets/docker/xarr-rss/config.sh | sh
使用
启动容器后,我们在浏览器输入以下地址进入后台配置页面
http://你的域名或ip:8086/
1、登录帐号,如果没有XARR系列帐号可以先 注册 一个。
2、修改系统设置,改成上面登录后台地址的一致即可,需要Sonarr可以正常访问到该地址。
3、修改服务设置,填入你自己的Sonarr信息、TMDB的ApiKey、qBittorrent的通信信息。保存后,xarr-rss会从你的Sonarr获取你的监控列表,然后从tmdb获取中文数据,期间会存在一小会同步的时间。
tmdb的ApiKey可在 这里 申请获取,需先注册一个tmdb帐号,申请ApiKey时选择Developer,随便填写一些英文信息就可以,拿到一个V3 auth的字符串。
4、添加数据源,支持多个数据源通知存在,支持针对单个数据源配置代理。
5、在分组-管理分组里新增一个分组,然后刷新页面。
6、左边栏会显示新建的分组,点击进入分组,点新增。
来到最为重要的规则设置界面,它是整个软件里最为核心的配置,后续我们最常使用的就是这里规则的创建。
选择媒体:数据来自Sonarr监控列表,选择需要添加规则的番剧。
数据源选择:从哪里获取数据,支持多选。
语言:与Sonarr中的Language Profile对应,默认Chinese,用于语言筛选。
质量:与Sonarr中Quality Profiles对应,默认WEBDL-1080p,可自行根据资源修改,需要与Sonarr的质量关键词对应。
规则:一条规则包含三项内容:正则表达式、偏移量、第几季。一个番剧下允许存在多条规则,这样就可以支持匹配多个发布组、亦可以对不同季度设置的不同匹配规则。
正则表达式:用于匹配资源发布标题,解决一直以来的识别难题。下面详细讲。
偏移量:详见下面常见问题中的Q2,有具体说明和举例。
第几季:会根据所选媒体自动拉取最新监控的季度数,可自行修改。
右侧数据栏:根据顶部所选数据源加载内容,用于复制发布标题和测试正则表达式的匹配效果。
-----------------------
着重讲一下规则这一部分,这里以《古见同学有交流障碍症 第二季》为例子,讲解设置规则的流程。
1)在右侧数据源列表或BT数据源网站上复制你想看的番剧的发布标题,粘贴到正则表达式输入框内。
【幻樱字幕组】【4月新番】【古见同学有交流障碍症 Komi-san wa, Komyushou Desu.】【15】【GB_MP4】【1920X1080】
2)点击“转移正则表达式内容”按钮,输入框内的特殊符号会自动添加转移用的反斜杠""。输入框内数据变为
3)用鼠标将输入框中的集数选中,点击“替换选择文本为剧集标记”。最终输入框内数据变为
4)点击“测试匹配效果”,来看看我们的规则是否正确~ 看起来没有问题,右侧数据列表中能够匹配上的数据也会亮起来。
5)填写偏移量(一般默认为0即可)、选择第几季。
6)这样一条规则就创建完成了,我们可以给每部番剧都添加上规则,每部番剧支持添加多条规则。最后点击右下角的提交。
7、点击左边栏-管理分组,刷新Rss文件。
在浏览器中打开页面上提示的"全部分组RSS地址"以检查是否生成转换后的rss
http://<你的内网ip>:8086/rss/group/group_all.xml
可以看到程序已经自动从数据源中过滤并转换出了Sonarr能够正确识别的内容。
8、点击分组后面的“创建Sonarr索引”,程序会自动帮我们在Sonarr中添加一个RSS索引器,是不是很方便
当然你也可以自己手动添加。进入Sonarr-Settings-indexers,新增一个类型为Torrent RSS Feed的indexer,勾选"Enable RSS",填入上面打开无误的rss地址,保存。不过能自动就不要手动对不对
9、所有配置流程完成,后续Sonarr就可以自动抓取资源啦!
常见问题
Q1:为什么通过XArr-Rss生成的Rss没有内容?
A1:XArr-Rss只会生成出能够匹配上你设定好规则的内容并加以转换,如果源RSS中没有能够匹配规则的内容则生成为空。首先检查源RSS中是否包含你想下载的内容。
如果你确定规则无误且源RSS也有应当能匹配上的数据,也有可能是后台还未刷新缓存导致,可以手动刷新后重新获取。
Q2:偏移量是什么?
A2:默认为0无需更改,此设置项仅特殊场景下使用,用于配合字幕组编号规则,调整集数前后移动。
举例说明:由幻樱字幕组翻译的《古见同学有交流障碍症》第二季第一集,字幕组从13集继续编号,发布标题为
【幻樱字幕组】【4月新番】【古见同学有交流障碍症 Komi-san wa, Komyushou Desu.】【13】【GB_MP4】【1920X1080】
如果偏移量为默认值0,则转换后的RSS的季度和集数为S02E13
Komi Can't Communicate - S02E13 - Chinese - WEBDL-1080p
而Sonarr只会寻找S02E01的资源,无法触发自动下载,因此需要设置偏移量为-12,这样转换后的RSS的季度和集数为S02E01,此时Sonarr可以正常抓取并开始下载。
Komi Can't Communicate - S02E01 - Chinese - WEBDL-1080p
Q3:为什么在Sonarr里自动搜索或手动搜索时没有来自XArr-Rss的结果?
A3:因为Sonarr对于类型为RSS的indexer不支持自动搜索(Automatic Search)和交互式搜索(Interactive Search),仅支持通过RSS同步的方式获取XArr-Rss的转换结果,只要配置得当,不影响后续的抓取和下载流程。
Q4:现在支持哪些站点?
A4:截至本文发布之时,已适配支持蜜柑计划、萌番组、爱恋动漫、ACG.RIP、动漫花园,其它站点陆续适配中。理论上支持RSS的站点都可以用本软件做转换处理。
Q5:分组如何使用?
A5:通常只设置一个分组已经可以满足日常需求,如需将不同分组的番剧区分到不同的链接以作他用,可以创建多个分组,需要注意不同分组下的番剧不能重复。
可使用如下链接获取不同分组下的RSS转换结果,需要替换成你自己的内网ip及对应分组的id(不带尖括号):
http://<你的内网ip>:8086/rss/group/group_<分组id>.xml
比如:http://192.168.0.128:8086/rss/group/group_1.xml
Q6:服务设置里填写的qBittorrent配置有什么用途?
A6:当Sonarr通过XArr-Rss抓取到种子后,会发送给qBittorrent进行资源下载,同时也会通知XArr-Rss,XArr-Rss会自动将下载任务重命名为转换后的英文标准格式标题,帮助Sonarr在后续导入时正确识别第几季第几集。
小知识:Sonarr的抓取和导入解析器是独立的两部分,前面RSS转换解决的只是抓取问题,如果不在qBittorrent中进行改名,Sonarr下载完导入时会再次根据种子里的文件名进行解析,从实际体验上来看对于第二季第三季等多季动画的识别成功率几乎为0,所以经常会出现明明是第二季的资源,却被Sonarr放到了第一季的文件夹。XArr-Rss通过修改任务名的方式避免了此问题。
Q7:支持其它下载器吗?
A7:当前只支持qBittorrent,后续计划支持其它下载器,如rutorrent、Transmission等。
个人经验分享
如果你使用蜜柑计划,日常追番只需配置数据源为 列表模式(最新发布的第一页) 或 带有个人token的订阅链接(个人订阅中的最近7日的更新) 就够用了,一旦新的一集发布,就会自动捕获并被Sonarr抓取下载。
如果部署好此项目时番剧已经开播一段时间,想要批量下载多集,可以添加一个数据源,链接为这个番剧自己的RSS地址,然后编辑规则时勾选这个番剧自己的数据源即可拉取到全部集数。
每季度新番只需要在第一集资源发布后,在XArr-Rss的管理界面给番剧添加一次规则即可,后续字幕组/发布组只要不改变标题格式,就可以一直抓取到,无需再次管理。
规则设置的时候,如果你懂的正则表达式的书写,且对字幕组没有要求,完全可以填写更为宽松的匹配规则用于匹配所有字幕组/发布组。
总结
XArr-Rss的出现,解决了长期以来Sonarr无法识别动画命名的问题,在Sonarr本身不计划加强中文支持的情况下,提供了非常强大的匹配规则,非常适合追番使用。
最后让我们来梳理一下,在系统配置完成后,平时想看一部新番我们需要哪些步骤:
在Overseerr/Ombi等前端提交请求,或直接在Sonarr添加番剧到监控列表。
在XArr-Rss的分组里添加这部番剧,选择使用的数据源,并添加标题匹配规则。(只需要在每一季第一集配置一次)
Sonarr自动抓取-下载-导入-改名-通知一条龙。
在Plex/Emby/Jellyfin中观看视频。
顺便,推荐一下原作者的前一个项目XArr-Notify,用于Radarr/Sonarr发送企业微信通知。
Dockerhub:xiaoyi510/xarr-notify
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~



















校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案