Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 

文章代表作者个人观点,少数派仅对标题和排版略作修改。


前言

我在上篇中提到,我使用树莓派主要目的是进行 BT 下载,下载我想看的剧集和电影,对于这种需求,最简单的方案是运行一个带 Web UI 的下载器,比如 qBittorrent 或 Transmission,甚至 qBittorrent 还自带 RSS 功能,只要编写好筛选规则,就能自动从下载站获取想要的资源,也算是某种程度的自动化了,我有很长一段时间都是这样干的。

不过我发现了有更加好用、更加优雅的解决方案,不但可以自动搜寻并下载想要的资源,还可以自动分类重命名整理好,并且还能在完成下载后推送通知到我的手机上,对于下载客户端,还能自动识别恶意吸血者并自动封禁。

这些功能是借助一系列开源软件来实现的,我使用 Sonarr 监控电视剧,Radarr 监控电影,qBittorrentTransmission 作为下载器,其中 qBittorrent 用来下载公开 BT 站中的资源,Transmission 用来下载私有 PT 站中的资源,PeerBanHelper 用来封禁吸血 IP,另外还有 Jackett 用来为 Sonarr 和 Radarr 提供下载链接,以及 Bazarr 为视频搜寻字幕。

关于这些软件如何部署,如何配置,还是有一些需要注意的点的,所以这篇文章我会分享一下我的部署与使用经验。

这篇文章的内容很大一部分参考了 TRaSH-Guides 的教程,这个网站对 Sonarr、Radarr 以及一系列配套软件的部署与配置有十分详尽且专业的教程,如果想要进一步了解,可以去这个网站看看。

配置索引器

索引器的作用是从 BT 站点中搜寻资源的下载链接并发送给 Sonarr 和 Radarr,其实 Sonarr 和 Radarr 已经内置了一些索引器,但是基本都是私有 PT 站,如果你有这些站点的账号,可以跳过这一节,直接使用它们内置的索引器。如果想要使用其他的 BT 站点,就需要搭配外部索引器使用。

能够配合 Sonarr 与 Radarr 使用的外部索引器有 Prowlarr 与 Jackett,两个都支持非常多的 BT 与 PT 站点,包括很多国内的站点。Prowlarr 其实与 Sonarr 和 Radarr 集成度更好,但我个人用 Jackett 比较顺手,所以我一直都是用的 Jackett。

另外因为我家的网络情况部署 Jackett 后无法正常获取资源,所以我的 Jackett 并没有部署在我家的树莓派上,而是在我位于香港的 VPS 上,并用 Traefik 进行反向代理,关于 Traefik 的具体用法,可以看我之前的文章

我用来部署 Jackett 的 Docker Compose 文件在这里,如果已经正确配置了 Traefik,那么只需把 Compose 文件里的域名改成自己的,然后运行 docker compose up -d 就可以启动了。

在这个 Compose 文件里,除了 Jackett 容器,还有一个叫 Byparr 的容器,它是 Flaresolverr 的替代品,是用来应对一些站点的人机验证的,我在之前发现 FlareSolverr 因为太久没更新不能正常工作了,一番搜索后找到了 Byparr,不过最近 FlareSolverr 又恢复了更新,所以两个应该都能用,选择哪个看喜好就行。

启动 Jackett 后,在浏览器中输入设定的域名应该就能打开 Jackett 的界面了,首先需要设定密码,然后需要设定 FlareSolverr 的地址,因为两个容器在同一个 Docker 网络中,直接用容器名当作主机名就可以相互访问,所以 FlareSolverr 的地址直接填 http://byparr:8191 就行。

之后就可以点击最上方的 Add indexer 搜索并添加想要的站点了,公开的 BT 站大多无需配置可以直接添加,而私有 PT 站基本都需要配置账户,有些是直接填用户名密码,有些需要额外填图形验证码,而图形验证码多数时候是需要正确配置 FlareSolverr 才能显示的,而有些更是需要一定的操作来获取浏览器 Cookie,这里就不一一展开了。

我添加了四个站点,两个公开的 BT 站,1337x 的资源比较全,但有些质量比较差,不过有时搜索冷门资源时只有这个站的种子有速度;TheRARBG 应该算原版 RARBG 关站后的精神继任者吧,网站风格和原站很相似,也有大部分原站的资源,但是新资源良莠不齐,甚至还有假资源。

假资源的特征一般都很明显,比如一集电视剧播出前几天就有了资源,而且下载后内容不是正常的视频文件,而是 ISO 文件甚至是 exe 文件,那么这些资源基本就确定是假的,而且假资源被举报的多了页面会全屏标红作为警告,需要注意辨别不要下到假资源,更不要尝试打开疑似是假资源的文件。至于另外两个私有 PT 站我就不便展示了。

主要软件的部署与配置

在开始在树莓派上部署之前,我习惯先创建两个 Docker 网络,一个名为 frontend,用来放需要对外开放端口的服务,另一个是 backend,用来放不需要对外开放端口的服务。创建 Docker 网络时默认不会开启 ipv6 支持,而我家的宽带网络有 ipv6,且有 ipv6 的话下载器速度能快很多,所以我还需要给 frontend 网络开启 ipv6 支持:

docker network create --ipv6 frontend
docker netwrok create backend

我把 Sonarr、Radarr、Bazarr、qBittorrent、Transmission 以及 PeerBanHelper 的部署全部放进了一个 Compose 文件中,所有镜像都放在一个 Compose 文件中的好处是可以批量修改一些需要重复使用的变量,Compose 文件的具体内容可以看这里,可以根据自己需要自行修改。

除了 PeerBanHelper,其他容器我都是选择的 LinuxServer.io 的镜像,他们维护了非常多高质量的容器镜像,感兴趣的可以移步网站查看。

另外 qBittorrent 和 Transmission 的容器我并没有使用最新版,分别有不同的原因。

qBittorrent 一直有内存泄露的问题,最新的 V5 版本似乎更加严重,我没有选择使用功能更强大的 qBittorrent 增强版也是同样的原因,增强版内存泄露问题甚至更严重,我之前测试过这个qBittorrent 增强版镜像,如果不给容器添加内存限制,不到半小时就能把树莓派所有系统内存吃满,直到整个系统都无响应。

所以我选择了 4.6.6-libtorrentv1 版本,这个版本我用下来比较稳定,相比于默认使用的 libtorrentv2,libtorrentv1 据说内存泄露也会少一些。至于增强版的特殊功能,反吸血可以借助 PeerBanHelper 实现,自动添加 tracker 可以借助自定义脚本实现。

Transmission 没有使用最新版的原因其实很简单,因为我只用 Transmission 下载并做种私有 PT 站的种子,如果下载客户端版本过新,有些 PT 站会不支持,所以我就选了一个确定能用的版本不再更新了。

部署时一定要把 docker-compose.yaml、存储环境变量的 .env 以及脚本 qb.sh 三个文件一起下载下来放在同一个文件夹里,在本文的示例中我会将其放到 /home/pi/containers/media 目录里。我把需要修改的内容全部设置成了环境变量放在了 .env 文件里,Compose 文件本身基本不需要修改。在 .env 文件里:

  • MEDIA_DIR 是用来存放下载文件的路径,在所有容器中都会被映射成容器内部 /data 路径,修改这个变量会同时修改所有容器的路径映射;
  • QB_TORRENTING_PORT 是 qBittorrent 做种的端口,TR_TORRENTING_PORT 是 Transmission 做种的端口,运营商有可能封禁默认的端口,所以需要指定一个不同的端口,最好使用随机数生成器生成一个五位数的不常用端口;
  • TR_USERTR_PASS 是 Transmission 网页面板的用户名和密码,不指定的话 Transmission 就无需登录直接能打开;
  • TRANSMISSION_WEB_HOME 是可选的 Transmission 自定义 Web UI 路径,需要自行下载第三方 Web UI 并指定路径;
  • PUIDPGID 是宿主系统当前用户和用户组的 id,可以通过运行 id 命令查看当前的 id,一般都是 1000;
  • TZ 是时区,按需修改即可。

关于文件夹的映射,其实也是有讲究的。

Sonarr 和 Radarr 会把下载完成的文件整理到指定文件夹并重命名好,但是在使用 Docker 部署的情况下,不同的软件运行在不同的容器中,如果不同的容器映射的文件夹路径不同,那么 Sonarr 和 Radarr 就无法得知如何转移这些文件,这时就需要使用 Sonarr 和 Radarr 自带的远程路径映射功能,但是开发者并不推荐使用这个功能,并且设置的时候很容易把自己也绕进去。

另外 Sonarr 和 Radarr 默认会使用硬链接的方式把下载完成的文件转移到指定文件夹,硬链接简单来说就是让同一个文件出现在两个位置且只占用一份的空间,这样下载软件可以继续做种,Sonarr 和 Radarr 同时也能将文件重命名并整理好。

但问题是硬链接存在一些限制,硬链接只适用于单个文件而不能是文件夹,且两个路径要在同一个磁盘上,如果两个路径是分别被映射进容器里的,即使在宿主机上所有文件都是在同一个磁盘上的,在容器中也会被认为是不同的磁盘,那么硬链接就会不起作用,Sonarr 和 Radarr 会转而使用复制的方式整理文件,不但会额外占用空间,复制过程还会比较慢。

所以要想 Sonarr 和 Radarr 正确工作,就要选择一个文件夹用来存储所有文件,且在所有容器中的映射路径相同。TRaSH-Guides 推荐的文件结构是把宿主机上同一个路径在所有容器中都映射为 /data,Sonarr 使用的文件夹是 /data/media/tv,Radarr 使用的文件夹是 /data/media/movie,而下载器默认的下载文件夹是 /data/torrents,路径名称可以和建议的不同,但一定要在所有容器中保持一致。我的 docker-compose.yaml 就是这样编写的,修改环境变量 MEDIA_DIR 就会同时更改所有容器的文件夹映射。

如果我打算将所有文件都放在宿主机的 /mnt/share/data 里面,使用随机数生成器生成的 qBittorrent 与 Transmission 的做种端口分别为 53003 和 21627,Transmission 的用户名和密码都为 admin,使用 Transmission 默认的 Web UI,PUID 和 PGID 都是 1000,时区是 Asia/Shanghai,那么 .env 内容应该是这样的:

MEDIA_DIR=/mnt/share/data
QB_TORRENTING_PORT=53003
TR_TORRENTING_PORT=21627
TR_USER=admin
TR_PASS=admin
PUID=1000
PGID=1000
TZ=Asia/Shanghai

编辑完成后,在与 docker-compose 相同目录下,也就是 /home/pi/containers/media 目录,运行 docker compose up -d,应该就会拉取所有的容器镜像并尝试启动了。

qBittorrent 配置

首先我们配置下载器,在树莓派同局域网下的另一台电脑上的浏览器里输入树莓派的 IP 加端口 8080,就可以打开 qBittorrent 的 Web UI 了。

前面没有指定 qBittorrent 的用户名和密码,这是因为我用的 linuxserver 的 qBittorrent 镜像在第一次启动时会随机生成登录密码,在终端中运行 docker logs qbittorrent 就可以看到随机生成的密码了。

登录进入 qBittorrent 网页,点击上方的齿轮图标,对其进行一些初始配置。最重要的是修改 Web UI 的用户名和密码,以及把下载目录设为 /data/torrents,记得保存完后要点击最下方的保存。

另外我还习惯打开做种限制,当分享率达到 2,或是做种到达 48 小时后,暂停种子,Sonarr 和 Radarr 会自动删除完成做种的种子;另外我还会在高级设置里勾选上「总是向同级的所有 Tracker 汇报」和「总是向所有等级的 Tracker 汇报」,勾选上这两项有时能够连接到更多用户,速度可能更快。

另外也可以选择为 qBittorrent 配置更好看的 Web UI,我比较喜欢 VueTorrent,因为我使用的是 linuxserver.io 镜像,所以可以通过添加一个环境变量来直接为 qBittorrent 安装 VueTorrent:

# 这个环境变量要放在 Compose 文件里,放在 .env 文件里应该是不起作用的
DOCKER_MODS=ghcr.io/vuetorrent/vuetorrent-lsio-mod:latest

但是因为网络的原因,很可能会安装失败,所以我还是比较偏向手动安装:

# 将 VueTorrent 仓库克隆下来
git clone --single-branch --branch latest-release https://github.com/VueTorrent/VueTorrent.git

在启动容器时 /home/pi/containers/media 目录下会自动创建一个 qb-config 的文件夹,这个文件夹存储着 qBittorrent 的配置文件,在 qBittorrent 容器内部被映射为了 /config。为了方便我直接将克隆下来的 VueTorrent 文件夹复制到了这个 qb-config 文件夹内部。

cp -r VueTorrent /home/pi/containers/media/qb-config/VueTorrent

然后在 qBittorrent 的 Web UI 设置里,勾选「使用备用 Web UI」,然后将文件路径指定为 /config/VueTorrent,不要填错了,否则可能会导致 Web UI 无法启动,

保存后刷新就可以看到全新的 Web UI 了,比原版好看不少。

Transmission 配置

在树莓派同局域网下的另一台电脑上的浏览器里输入树莓派的 IP 加端口 9091,就可以打开 Transmission 的 Web UI 了,Transmission 要修改的不多,点击右上角图标,在弹出页面里点击「Edit preference」打开设置,同样把下载路径改为 /data/torrents,我还习惯把临时下载路径关掉,其他的应该就没有什么了。

Transmission 默认的 Web UI 非常简陋,不过它也可以更换 Web UI,我比较喜欢的是 Transmissionic,从它的 Releases 界面下载最新的 zip 压缩包并解压,解压后获得了一个叫「web」的文件夹,为了方便辨认我将其改名为了「transmissionic」。

/home/pi/containers/media 目录下也会自动创建一个 tr-config 的文件夹,这个文件夹存储着 Transmission 的配置文件,在容器内部被映射为了 /config,我直接将 transmissionic 文件夹复制到了这个文件夹里面。

cp -r transmissionic /home/pi/containers/media/tr-config/transmissionic

接着在 .env 文件里添加一行 TRANSMISSION_WEB_HOME=/config/transmissionic,并重新启动容器:docker compose up -d --force-recreate,等容器重启后刷新网页,就能看到全新的 Web UI 了:

切记千万不要修改 qBittorrent 和 Transmission 设置中的做种端口,也不要勾选使用随机端口相关的选项。一旦做种端口改变,而容器没有设置对应的端口转发规则,就会导致无法下载,也无法做种。如果需要更改做种端口,要在 .env  文件中修改环境变量并重新创建容器。

PeerBanHelper 配置

接着需要配置 PeerBanHelper 来为下载器封禁吸血客户端,在浏览器中输入树莓派 IP 加端口 9898 打开 PeerBanHelper 的控制面板,第一次打开需要进行一定的配置。

Token 其实相当于登录密码,设置完之后不要忘记;BTN 需要注册账号,如果没有的话直接保持默认,之后再进行配置;最后添加第一个下载器,因为我用 Transmission 只用来下载私有 PT 站的种子,基本不需要担心有吸血客户端,所以我只打算添加 qBittorrent,因为容器都在同一个 Docker 网络内,地址只需要填 http://qbittorrent:8080

之后可以选择开启 BTN 网络,BTN 网络简单来说就是和其他用户共享吸血 IP 列表,以增强反吸血能力。BTN 网络需要连接到对应的服务端,PeerBanHelper 文档中推荐使用开发者搭建的服务端 Sparkle

在浏览器中打开 Sparkle 官网,并用 Github 授权登录;登录后,点击网站首页中央的「创建用户应用」。

点击「创建新应用」,为应用添加一个名字,最后完成创建应用;

一定要把页面上显示的 APP ID 和 APP Secret 复制下来,一旦关闭这个页面,APP Secret 就不会再显示了;

之后前往 PeerBanHelper 的 Web UI,前往「设置」-「基础设置」,找到 BTN 设置部分,勾选「启用 BTN 模块」,URL 填 https://sparkle.pbh-btn.com/ping/config,APP ID 和 APP Secret 里填上刚才复制的内容,「允许 BTN 下发脚本」选项勾选后能够允许 PeerBanHelper 接收并执行来自服务器的脚本,有助于提高反吸血精度,但存在一定风险,如果你不信任 Sparkle 服务端,那就不要勾选;

滚动到页面底部点击保存按钮,刷新页面后前往「设置」-「运行状态」,如果看到 BTN 状态是已启用,且配置文件获取成功,就说明 BTN 网络配置成功了,如果状态显示是失败,就尝试重启容器后再查看。

Sonarr 与 Radarr 基础配置

Sonarr 与 Radarr 的界面与使用方式基本一样,这节我就主要以 Radarr 做演示。

首先打开对应的 IP 加端口打开 Web UI,Sonarr 默认端口是 8989,Radarr 默认端口是 7878,第一次打开需要设置用户登录,把「Authentication Method」改为「Forms」,然后设定用户名和密码,点击 Save,就可以进到主页面了。

然后去到「Settings」-「UI」,把「UI Language」改成 Chinese,「Movie Info Language」是显示电影信息时所用的语言,可以根据自己的喜好更改,再点击右上角的「Save Changes」,刷新页面后就是中文界面了。此时系统状态里面会有好几个报错,这是正常的,因为很多东西都没有正确配置,后面会一步步配置好,另外推荐点击左上角高级设置按钮从而在设置页面显示更多高级设置,后面会用得到,最后一定记得更改完后要点击左上角的「保存更改」;

去到「设置」-「媒体管理」,翻到最下面,点击「添加根目录」,根目录就是 Sonarr 和 Radarr 用来存放整理后的视频文件的目录,我前面将宿主机文件夹映射到了容器的 /data 路径,这里面我将 Sonarr 的根目录设置为了 /data/media/tv,Radarr 的根目录设置为了 /data/media/movie

接着在同一个页面往上翻,勾选「重命名剧集」或「重命名电影」,重命名文件的目的主要有两个,一个是方便自己辨认,另一个是方便其他媒体软件(Kodi、Emby、JellyFin、Plex 等等)识别,TRaSH-Guides 对 SonarrRadarr 的命名规范有比较详尽的解释,也有推荐的命名格式。其实大部分时候只要把标题展示清楚,并且提供正确的元数据,媒体软件就能够正确识别,所以命名格式按自己喜好来就好,下面是我的命名格式,可以参考下:

之后添加下载客户端,去到「设置」-「下载客户端」,点击页面的加号,选择 qBittorrent,主机名填「qbittorrent」,其他保持默认就好,再填入用户名和密码,点击下方的测试,测试成功后再点保存,这样就添加上了一个下载客户端,重复之前的操作,只是这次选择 Transmission,主机名填「transmission」,就可以添加第二个下载客户端了。

下一步添加索引器,首先打开之前配置好的 Jackett 的 Web UI,以添加 1337x 索引器为例,点击 1337x 旁边的「Copy Torznab Feed」将索引器链接复制下来,另外 Jackett 主页右上角的 API Key 也顺便一起复制下来,去到 Sonarr 和 Radarr 的「设置」-「索引器」,点击加号,选择「Torznab」,把名称改成 1337x,URL 填入自己刚刚复制的 Troznab 链接,API 密钥填入刚刚复制的 Jackett API Key,分类这里如果是 Sonarr 就勾选所有 TV 有关的分类,如果是 Radarr 就勾选所有 Movie 有关的分类,,另外再翻到最下方,把下载客户端指定为刚刚添加的 Qbittorrnet 客户端,表示从这个索引器获取的种子都会发送给 qBittorrent 下载。

按照同样的步骤添加其它索引器,不过我会把私有 PT 站的索引器取消勾选「启用 RSS」以及「启用自动搜索」,这样只有在我手动搜索时才可以下载这些 PT 站的种子,另外把下载客户端指定为 Transmission,这样所有从 PT 站获取的种子都会发送到 Transmission 下载。

最后也可以为剧集和电影启用元数据,可以让媒体软件识别更准确,去到「设置」-「元数据」,我主要用的是 Kodi,所以我只启用了 Kodi 的元数据,如果用的其它媒体软件可以按需启用。

其实这时 Sonarr 和 Radarr 就已经可以开始使用了,可以点击左上角的「添加新项目」来添加想看的电影或剧集,Radarr 使用的电影数据源来自 TMDB,对中文内容支持挺不错,大部分时候搜索电影的中文名都可以搜索到,电影元数据也能以中文展示,而 Sonarr 使用的电视剧数据源来自 tvdb,对中文支持较差,大多数时候需要用英文名搜索,有时虽然能够用中文搜索,但显示的元数据依旧是英文。

电影或剧集添加后,如果是已经播出且能通过索引器搜索到资源,Sonarr 会自动搜寻并尝试下载质量最佳的版本,可以在详情页面点击放大镜图标强制开始自动搜索,也可以点击头像图标手动搜索并选择自己想要的质量版本。

如果是还未播出的资源,也可以在侧边的「日历」查看剧集或电影播出的日期,以便得知播出的具体时间。

更多高级配置

为了获得更快的下载速度,以及抓取质量更好的资源,我们还可以为 Sonarr 和 Radarr 进行更多高级设置。

想要让 BT 下载获得更快的下载速度,一个方法是为种子添加更多 Tracker,我比较推荐使用 TrackerList.com 收集的 Tracker 列表,然后添加到 qBittorrent 里面。

  • 首先去往 TrackerList.com,找到精选列表,复制下列表里的所有内容;
  • 接着在 qBittorrent 的 Web UI,去到「设置」-「Bittorrent」,勾选「自动将这些 Tracker 添加到新下载」,把刚刚复制的 Tracker 列表粘贴到下面,完成后点击保存;

这样 qBittorrent 就会将这些 Tracker 列表添加到所有新种子里面了,理论上会获得更多用户连接,从而获得更快的下载速度。

但问题是这些 Tracker 列表有很强的时效性,可能过段时间就不好用了,所以要经常更新,手动更新还是挺麻烦的。qBittorrent 增强版有一个特色功能,只要填入 Tracker 列表的链接,就能自动更新 Tracker 列表,然而在普通版 qBittorrent 上并没有这个功能。

好在我在 Github 上发现了有人写的一个脚本,将这个脚本配合 Sonarr 和 Radarr 使用,就能自动为新添加的种子更新 Tracker 列表了。在之前和 Compose 文件放在一起的 qb.sh 其实就是基于这个脚本做了一些修改,主要就是把 Tracker 列表的链接换成了个速度比较快的分流地址,以及修改了 qBittorrent 服务端的主机名从而能够在容器内使用,我在 Compose 文件中将这个脚本映射到了容器内的 /usr/local/bin/qb 路径。

  • 在使用之前,需要对 qb.sh 文件做一些修改,在文件开头部分,需要把 qbt_usernameqbt_password 改成自己 qBittorrent 的用户名和密码。
  • 在 Sonarr 和 Radarr 的 Web UI,去到「设置」-「连接」,点击加号,选择最后面的「自定义脚本」,名字随便取一个,触发条件只选「抓取中」,路径选择 /usr/local/bin/qb,最后点击保存就完成了。

Sonarr 和 Radarr 有时会自动抓取到质量比较差的视频文件,比如一集 45 分钟的剧集视频文件可能才几百兆,这种的码率就有些太低了,这是因为 Sonarr 和 Radarr 对于视频码率默认的配置有些过于低了。

TRaSH-Guides 对于视频码率以及质量配置有十分详尽的推荐,太过于详尽以至于如果参考网站上的配置在软件上一点点修改将会花费非常多的时间和精力,不过好在有更好的解决方法,TRaSH-Guides 在网站上也列出了一些工具,可以很方便地将推荐配置同步并应用到 Sonarr 和 Radarr 上,我最后选择的工具是 Recyclarr

Recyclarr 可以使用容器运行定时同步,但是 TRaSH-Guides 的推荐配置并不会频繁更改,同步一次后就可以很长时间不用管了,所以我最后还是选择用它的 cli 版本手动同步。

  • 在我使用的 Arch Linux 上,Recyclarr 可以通过 AUR 直接安装;
  • 安装后运行 recyclarr config list templates 获取已有的配置预设,第一次运行需要获取在线资源,可能会比较慢,如果网络条件不好可能会失败。对大部分人来说 Sonarr 的 web-1080p-v4 与 Radarr 的 hd-bluray-web 预设是兼顾质量和文件体积的最优解,web-1080p-v4 代表流媒体 1080p 资源,而 hd-bluray-web 代表蓝光盘的 720p/1080p 和流媒体 1080p 资源;
  • 然后运行 recyclarr config create --template web-1080p-v4 创建 Sonarr 的质量预设,再运行 recyclarr config create --template hd-bluray-web 创建 Radarr 的质量预设,这会在 ~/.config/recyclarr/configs 目录添加 web-1080p-v4.ymlhd-bluray-web.yml 配置文件,编辑这两个文件,将开头的 base_urlapi_key 改为 Sonarr 和 Radarr 对应的地址和 API 密钥,至于 API 密钥如何获取,去到 Sonarr 和 Radarr 的「设置」-「通用」,在「安全」一栏应该就能看到 API 密钥了;
  • 修改完两个配置文件后,运行 recyclarr sync,就能把所有 TRaSH-Guides 的推荐配置应用到 Sonarr 和 Radarr 上了。

要验证配置是否应用成功,去到 Sonarr 和 Radarr 的「设置」-「质量」,可以看到 HDTV-720p 及以上的默认码率都被调高了;

在「设置」-「自定义格式」这里,添加了很多自定义的格式(原来这里是空的);

在「设置」-「配置」这里,Sonarr 会多出一个「WEB-1080p」,Radarr 会多出一个「HD Bluray+WEB」。

在添加剧集和电影时,需要在质量配置处选择刚刚添加的质量配置,这样在自动抓取时才会尝试抓取质量更好的资源。

另外新添加的质量配置默认开启了质量升级,意味着即使剧集或电影已经抓取到了资源,Sonarr 和 Radarr 依然会尝试搜寻质量更好的资源并进行替换,如果不需要质量升级,可以去到「设置」-「配置」,点击刚刚添加的质量配置,取消勾选「允许升级」。

Bazarr 配置

Bazarr 是一个字幕管理工具,可以自动为 Sonarr 的剧集和 Radarr 的电影搜寻字幕文件,还可以对字幕进行格式转换、时间同步等操作。

在和树莓派统一局域网的其他电脑浏览器上输入树莓派的 IP 加端口 6767,就可以打开 Bazarr 的 Web UI 了,第一次打开仍然需要设置用户名和密码,另外因为软件是运行在容器里的,所以推荐把自动更新关掉,同样在每次修改完后不要忘记点击左上方保存。

接着配置字幕语言,去到「Settings」-「Languages」,首先添加「Languages Filter」,我这里添加了简体中文、繁体中文以及英语,表示 Bazarr 只会尝试搜寻这三个语言的字幕,然后翻到下面的「Languages Profile」,点击「Add New Profile」,首先为新预设命名,再点击「Add Language」,因为我之前添加了三个语言,所以这里要点三次添加三个语言,并把三个语言分别设置为简体中文、繁体中文以及英语,下方的「Cutoff」代表停止搜寻字幕的条件,我这里选择 Any,表示只要繁简英三种语言有一种存在字幕就会停止搜寻字幕,如果只想下载简中字幕,那这里就选择成简体中文,最后我还习惯把「Use Original Format」勾选上,表示直接保存字幕的原始格式不进行转换。

接着在同一个页面往下翻找到「Default Language Profiles For Newly Added Shows」,把 Series 和 Movies 都勾选上,并把 Profile 选为刚刚创建的预设,这一步最好在连接 Sonarr 与 Radarr 之前进行,因为如果已经连接上 Sonarr 或 Radarr 但这里没有勾选上,那么已经添加的剧集和电影就不会自动应用这个预设,需要后面手动应用。

然后要为 Bazarr 添加字幕源,去往「Settings」-「Providers」,在「Enabled Providers」下面,点击加号,搜索并添加想要的字幕站,Bazarr 支持的字幕网站列表可以看这里。据我所知,Bazarr 支持的字幕网站里,有中文字幕的只有 opensubtitles.orgopensubtitles.com伪射手网以及字幕库,其中:

  • opensubtitles.org 的字幕非常全,但是网站正在计划关站,目前只有 VIP 用户才能使用 API;
  • opensutitles.com 是前者的新版网站,中文字幕资源目前不是很全,用起来差强人意;
  • 字幕库的中文字幕资源非常全,更新也非常快,但是不知何时开始进入网站需要输入验证码,这导致目前它在 Bazarr 里面几乎完全无法使用;
  • 伪射手网字幕资源比较少,网站不太稳定,经常连接失败,但在 Bazarr 里面也勉强能用。

所以 Bazarr 实质上可以用来下载中文字幕的网站只有一个半,一个 opensubtitles.com,和半个伪射手网😂。

首先添加 opensubtitles.com,需要已经在网站注册过账号,然后在 Bazarr 里面填入网站的账号密码,点击「Enable」即可启用。

添加伪射手网需要先获取 API 密钥,首先注册登录到网站,然后打开用户面板就可以看到自己的 API 密钥了,将 API 密钥复制下来,填入到 Bazarr 里面,点击「Enable」即可启用。

接着终于可以连接到 Sonarr 和 Radarr 了,去到「Settings」-「Sonarr」或「Radarr」,勾选「Enabled」,因为是在同一个容器网络内,Address 直接填对应的容器名即可,后面保持默认基本不用改,API key 填 Sonarr 或 Radarr 的 API 密钥,然后点击「test」,如果连接成功会显示 Sonarr 或 Radarr 的版本号。下方的「Minimum Score」代表字幕文件与视频资源允许的最低匹配度,如果经常遇到自动抓取的字幕质量较差,或是时间不同步,可以尝试调高匹配度;如果经常抓取不到想要的字幕,但是可以手动搜索到字幕,可以尝试调低匹配度。另外匹配度高并不代表字幕质量好,有时抓取到的匹配度很高的字幕却是质量很差的机翻字幕,还有我发现伪射手网的字幕在 Bazarr 里面显示的匹配度经常都不高,只有 20-30 左右。

因为可用的字幕源有限,Bazarr 在下载中文字幕方面体验并不算完美,不过 Bazarr 也还支持手动添加字幕,对于 Bazarr 找不到的字幕,我一般会去 SubHD 手动下载字幕,然后回到 Bazarr,在对应的电影或剧集主页右上角有个上传按钮,可以在这里上传自己手动下载的字幕,只要字幕文件名足够规范,Bazarr 会识别出字幕对应的是哪一集,识别不出也能手动选择,最后自动将字幕文件放到合适的位置并重命名,倒也省去了手动复制重命名的麻烦。

其实在曾经还有个十分好用的项目 ChineseSubFinder 可以专门用来搜索并下载中文字幕,不过这个项目已经停止更新,与之配套的在线服务器也关停了,所以目前已经不能用了,还是挺可惜的。

消息推送

Sonarr、Radarr、PeerBanHelper 与 Bazarr 都可以配置消息推送,从而把重要信息及时推送给用户,在本篇文章里,我会演示为这些软件配置推送消息到自建的 Gotify 服务端,关于自建 Gotify 的部署与使用,可以看我之前的文章

Sonarr 与 Radarr 配置消息推送的步骤基本相同,去到「设置」-「连接」,点击加号,选择 Gotify,触发器可以按需选择,填入自建 Gotify 的服务器链接和 APP Token,也可以选择在消息中包含电影海报和元数据链接,配置完后点击测试,会向 Gotify 服务器推送一个测试消息,如果能收到消息就说明配置成功了,点击保存即可。

PeerBanHelper 在最近的版本更新中也加入了 Gotify 的支持,去到「设置」-「基础设置」,翻到最下面「消息通知」,点击「新增」,名字随便取一个,类型选择 Gotify,它给的实例链接是 https://push.example.de/message?token=<apptoken>,需要把域名换成自己的 Gotify 服务端域名,apptoken 换成自己的 APP Token,点击测试,如果能收到测试消息,就说明配置成功了,点击保存即可。

要为 Bazarr 配置消息通知,去到「Settings」-「Notifications」,点击加号,搜索并添加 Gotify。URL 这里就有点复杂了,Bazarr 的消息通知是借助 Apprise 实现的,有自己的 URL 格式,如果我的 Gotify 服务端域名是 gotify.example.com,且默认使用的是 HTTPS,APP Token 是 SuperSecretToken,根据文档,URL 就应该写成 gotifys://gotify.example.com/SuperSecretToken。点击测试,如果能收到测试消息,就说明 URL 是正确的,点击保存即可。

同步至网盘

我的树莓派上只挂载了一块容量 1T 的外接硬盘,下载的剧集和电影多了自然是不够用的,但我又不舍得删,幸好我有阿里云盘的会员,我可以将下载的资源同步到阿里云盘上,然后本地的资源就可以删掉了。另外我还买了阿里云盘的三方应用权益包,可以在任何地方使用支持阿里云盘或 WebDAV 的播放器来观看下载的资源。

要想自动将本地的资源同步至阿里云盘,可以用这个阿里云盘命令行客户端,使用 Docker 部署进行自动同步。

Docker 部署可以参考软件文档的 Docker Compose 文件,我的 Compose 文件是这样的:

---
services:
  sync:
    image: tickstep/aliyunpan-sync:v0.3.7
    container_name: aliyunpan-sync
    restart: unless-stopped
    mem_limit: 150mb
    volumes:
      - /mnt/share/data/media:/home/app/data:rw
      - ./sync_drive:/home/app/config/sync_drive
      - ./aliyunpan_config.json:/home/app/config/aliyunpan_config.json
    environment:
      - TZ=Asia/Shanghai
      - ALIYUNPAN_DOWNLOAD_PARALLEL=2
      - ALIYUNPAN_UPLOAD_PARALLEL=2
      - ALIYUNPAN_DOWNLOAD_BLOCK_SIZE=1024
      - ALIYUNPAN_UPLOAD_BLOCK_SIZE=10240
      - ALIYUNPAN_PAN_DIR=/media
      - ALIYUNPAN_SYNC_MODE=upload
      - ALIYUNPAN_SYNC_POLICY=increment
      - ALIYUNPAN_SYNC_CYCLE=infinity
      - ALIYUNPAN_SYNC_DRIVE=resource
      - ALIYUNPAN_SYNC_LOG=true
      - ALIYUNPAN_LOCAL_DELAY_TIME=10
    networks:
      - backend
networks:
  backend:
    external: true

因为这个容器不需要开放端口,所以我将其放到了 backend 网络里,把同步的目录设置为了 /mnt/share/data/media,就是 Sonarr 和 Radarr 存放文件的路径,上传模式是增量上传。

在启动容器之前,还需要先获取登录凭据文件,据我所知获取登录凭据唯一的方法是在电脑上安装这个软件,使用命令行登录后获取到登录凭据文件,再将文件映射进容器中。

在我使用的 Arch Linux 上,阿里云盘命令行客户端可以直接从 AUR 安装。之后在命令行登录:

# 在登陆前要设置环境变量指定配置文件的存储路径,
# 没有指定的话会默认放在可执行文件的同目录下,在这里也就是 /usr/bin,会很麻烦。
export ALIYUNPAN_CONFIG_DIR=~/.config/aliyunpan
# 运行命令进行登录
aliyunpan login

运行后会在终端显示一个登录链接,将这个链接复制进浏览器打开,然后使用扫码登录,可能需要扫两次码,登录成功后回到终端点击回车就可以完成登录了。

登录成功的话会在设定的配置文件路径中新建一个 aliyunpan_config.json 文件,这就是登录凭据。

将登录凭据和 Compose 文件放在同一个文件夹内,我放在了 /home/pi/containers/aliyunpn,在这个文件夹内运行 docker compose up -d 启动容器,就可以自动将新添加的文件上传到阿里云盘了。

总结

以上就是我对自动化追剧的探索与累积的经验,当然这些不只适用于树莓派与 Rocky Linux 发行版,任何能够安装并运行 Docker 的硬件与系统都能以此为参考,虽然很多方案并非完美,但也是在当前情况下我能找到的最优解。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀

5
3