想象一下打开一个网页,点开搜索框输入想看的电影或者电视剧,只需要点一个按钮,过几分钟对应的高清资源就已经呈现在你的影视库中,刮削完毕,字幕配好,你可以随时在家里的大屏幕或手机的小屏幕上欣赏。上周花了两天时间研究了下这套自动化流程,之前一直是手动去 PT 站下载资源然后用 TinyMediaManager 整理文件并刮削元数据,这显然不够优雅。

我发现了三种实现这个流程的方案,并对这些方案进行了测试,并总结了它们各自的优缺点。最终,我选择了第一种方案,因为它是最成熟和完善的。对于资源的主要来源,如果大部分来自 BT 站点,我建议使用 Prowlarr 作为资源索引器。而对于 PT 站点,Jackett 将是更好的选择,因为有些 PT 站点在 Prowlarr 上无法添加。当然,如果需要,你也可以同时安装这两个资源索引器,它们之间不存在冲突。

方案一

qBittorrent + Jackett + Radarr & Sonarr + ChineseSubFinder + Jellyfin + Jellyseerr

说明

  1. qBittorent

    没什么好说的,一个常用的 BT 下载器,同类的还有 Transmission

  2. Jackett

    老牌资源索引器,用于对接 PT、BT 站搜索资源,对于 PT 站支持较好;同类的还可选 Prowlarr,但是对 PT 站支持一般,比如 M-Team 站在 Jackett 上可以成功添加但在 Prowlarr 添加失败(2022-07-24),优点是支持中文,可以对接 Radarr 和 Sonarr 一键设置 Indexer,如果你同时使用大量的 Indexer,使用上会方便很多。

  3. Radarr/Sonarr

    Radarr/Sonarr,一个负责电影,一个负责剧集(电视剧和番剧),是整套系统能够全自动的关键。可以自动整合资源索引器和下载器,当找到了资源时,自动推送到下载器中下载资源;当下载完成时,自动刮削供影视库使用并调用 API 来更新影视库内容,支持配置信息通知。

  4. ChineseSubFinder

    字幕下载器,网上的资源很多并不自带中文字幕,当资源下载完毕后,中文字幕会根据资源的名称自动匹配并下载下来,同类还有 Bazarr

  5. Jellyfin

    完全免费的影视库,提供了解析资源文件/文件夹,利用 IMDB/TMDB/TVDB 等影视索引网站索引你的本地资源(即刮削),并播放的功能。同类的还有 EmbyPlexKodi,除了 Kodi 另外两个影视库部分功能需要付费才可使用。本地播放推荐 Kodi,苹果全家桶用户强烈推荐 Infuse(需要付费订阅但不贵,建议土区年付)。

  6. Jellyseerr/Overserr

    整合了 Radarr/Sonarr 的搜索,提供了一个统一的搜索框,让你不用关心到底是 Sonarr 还是 Radarr 负责这类资源,你只需要提供个名字就好。同时还整合了影视库,让你知道什么样的资源已经在库中,而且界面美观易上手。Jellyseerr/Overserr 本质是一样的,只是 Jellyseerr 对接的是 Jellyfin,Overserr 对接的是 Plex,同类的还可选 Ombi(适合 Emby/Plex)。

分析

优点:

  1. 免费开源,方案成熟度高,拥有较多插件的对接支持
  2. 搜索界面美观易用,支持手机 APP 管理(Radarr & Sonarr Companion / LunaSea / nzb360),可以同步影音库账号
  3. 刮削体验优秀,电影刮削对中文支持友好,支持自动中文重命名和资源整理
  4. 可以实现对资源的监控,自动追番追剧,自动下载和高画质升级
  5. 支持中文字幕的自动下载

缺点:

  1. 剧集刮削对于国产剧和番剧支持不好,剧集 INFO 信息和资源整理不支持中文(可以在 Sonarr 自动整理完资源后,让影音库覆盖一遍刮削信息)
  2. 对于 PT 站的支持一般,主要是命名不符合 Sonarr 的规范,如果资源标题中没有季信息,就无法识别匹配资源,所以下载剧集时基本什么都搜不到,添加多个 BT 站可以缓解
  3. 对于老剧老番支持一般,因为资源主要是来源于 BT 站,比较老的剧集由于没人保种,质量参差不齐,可以手动下载后再导入 Sonarr 自动整理
  4. 剧集分季不符合国人习惯,Sonarr 的剧集元数据是从 TVDB 拉取的,例如国内【全职猎人 2011】只分为一季,在 Sonarr 上分成了三季

部署

  1. 部署教程

    网上部署教程很多,我这里不做赘述,仅提供 docker-compose 配置文件

    https://leishi.io/blog/posts/2021-12/home-nas-media-center/

  2. 问题参考

    硬链接配置

    Sonarr 高级整理

    Radarr 重命名文件夹和文件为中文

    添加代理

  3. 配置文件

    version: "3.8"
    
    services:
     # 资源下载器
     # qBittorrent: https://hub.docker.com/r/linuxserver/qbittorrent
     qbittorrent:
       image: linuxserver/qbittorrent:latest
       container_name: qbittorrent
       hostname: qbittorrent
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - WEBUI_PORT=8181
       ports:
         - 8181:8181
         - 56881:56881
         - 56881:56881/udp
       volumes:
         - ./qbittorrent/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 资源索引器(PT)
     # Jackett: https://hub.docker.com/r/linuxserver/jackett
     jackett:
       image: linuxserver/jackett:latest
       container_name: jackett
       hostname: jackett
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - AUTO_UPDATE=true
       ports:
         - 9117:9117
       volumes:
         - ./jackett/config:/config
    
     # 资源索引器(BT)
     # Prowlarr: https://hub.docker.com/r/linuxserver/prowlarr
     prowlarr:
       image: linuxserver/prowlarr:latest
       container_name: prowlarr
       hostname: prowlarr
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
       ports:
         - 9696:9696
       volumes:
         - ./prowlarr/config:/config
    
     # 资源索引器插件(解决 CloudFlare 5秒盾)
     # FlareSolverr: https://hub.docker.com/r/flaresolverr/flaresolverr
     flaresolverr:
       image: flaresolverr/flaresolverr:latest
       container_name: flaresolverr
       hostname: flaresolverr
       restart: always
       environment:
         - TZ=Asia/Shanghai
         - LOG_LEVEL=info
    
     # 资源刮削器(电影)
     # Radarr: https://hub.docker.com/r/linuxserver/radarr
     radarr:
       image: linuxserver/radarr:latest
       container_name: radarr
       hostname: radarr
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
       ports:
         - 7878:7878
       volumes:
         - ./radarr/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 资源刮削器(电视剧&动漫)
     # Sonarr: https://hub.docker.com/r/linuxserver/sonarr
     sonarr:
       image: linuxserver/sonarr:latest
       container_name: sonarr
       hostname: sonarr
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
       ports:
         - 8989:8989
       volumes:
         - ./sonarr/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 字幕刮削器
     # ChineseSubFinder: https://hub.docker.com/r/allanpk716/chinesesubfinder
     chinesesubfinder:
       image: allanpk716/chinesesubfinder:latest
       container_name: chinesesubfinder
       hostname: chinesesubfinder
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - PERMS=true
         - UMASK=022
       ports:
         - 19035:19035
         - 19037:19037
       volumes:
         - ./chinesesubfinder/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     # 影音库
     # Jellyfin: https://hub.docker.com/r/nyanmisaka/jellyfin
     jellyfin:
       image: nyanmisaka/jellyfin:latest
       container_name: jellyfin
       hostname: jellyfin
       restart: always
       devices:
         - /dev/dri:/dev/dri # 核显硬解
       environment:
         - TZ=Asia/Shanghai
       ports:
         - 8096:8096
       volumes:
         - ./jellyfin/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     # 资源聚合搜索
     # Jellyseerr: https://hub.docker.com/r/fallenbagel/jellyseerr
     jellyseerr:
       image: fallenbagel/jellyseerr:latest
       container_name: jellyseerr
       hostname: jellyseerr
       restart: always
       environment:
         - TZ=Asia/Shanghai
         - LOG_LEVEL=debug
       ports:
         - 5055:5055
       volumes:
         - ./jellyseerr/config:/app/config
    
    networks:
     default:
       driver: bridge
       name: net_media
    

方案二

qBittorrent + Jackett + NASTool + ChineseSubFinder + Jellyfin

说明

  1. NASTool

    已停更,媒体库资源归集整理工具,替代了方案一的 Radarr & Sonarr,由国人开发对中文支持很好

  2. MoviePilot

    NASTool 原作者新开的项目,博主并未尝试,有兴趣可以自行了解

分析

优点:

  1. 开源免费,版本迭代很快,有现成的群晖套件,部署相对简单
  2. 对 PT 站非常友好,支持自动登录保号签到,聚合资源搜索匹配,支持限制做种时间
  3. 专为中文环境优化,支持国产剧集和动漫,重命名和刮削准确率高,剧集分季符合国人习惯,支持细化分类,高质量文件自动覆盖
  4. 支持与豆瓣联动,在豆瓣中标记想看后台自动检索下载,未出全的自动加入订阅,资源自动实时追新
  5. 支持 ServerChan、微信、Telegram、Bark 等图文消息通知,符合国内网络环境,支持通过微信、Telegram 远程控制订阅和下载
  6. 支持对接 Emby/Jellyfin/Plex,通知播放状态

缺点:

  1. 不支持对接 Jellyseerr/Overserr,期待后续更新(2022-07-24)
  2. 国人作者,会涉及版权问题,项目已经停更,原作者转向了 MoviePilot 的开发

部署

  1. 部署教程

    作者提供了部署文档和视频教程

    https://github.com/jxxghp/nas-tools/wiki

  2. 配置文件

    version: "3.8"
    
    services:
     # 资源下载器
     # qBittorrent: https://hub.docker.com/r/linuxserver/qbittorrent
     qbittorrent:
       image: linuxserver/qbittorrent:latest
       container_name: qbittorrent
       hostname: qbittorrent
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - WEBUI_PORT=8181
       ports:
         - 8181:8181
         - 56881:56881
         - 56881:56881/udp
       volumes:
         - ./qbittorrent/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 资源索引器(PT)
     # Jackett: https://hub.docker.com/r/linuxserver/jackett
     jackett:
       image: linuxserver/jackett:latest
       container_name: jackett
       hostname: jackett
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - AUTO_UPDATE=true
       ports:
         - 9117:9117
       volumes:
         - ./jackett/config:/config
    
     # 资源索引器插件(解决 CloudFlare 5秒盾)
     # FlareSolverr: https://hub.docker.com/r/flaresolverr/flaresolverr
     flaresolverr:
       image: flaresolverr/flaresolverr:latest
       container_name: flaresolverr
       hostname: flaresolverr
       restart: always
       environment:
         - TZ=Asia/Shanghai
         - LOG_LEVEL=info
    
     # 资源刮削归集整理
     # NASTool: https://github.com/NAStool/nas-tools
     nastools:
       image: jxxghp/nas-tools:latest
       container_name: nastools
       hostname: nastools
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - UMASK=022
       ports:
         - 3010:3000
       volumes:
         - ./nastools/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 字幕刮削器
     # ChineseSubFinder: https://hub.docker.com/r/allanpk716/chinesesubfinder
     chinesesubfinder:
       image: allanpk716/chinesesubfinder:latest
       container_name: chinesesubfinder
       hostname: chinesesubfinder
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - PERMS=true
         - UMASK=022
       ports:
         - 19035:19035
         - 19037:19037
       volumes:
         - ./chinesesubfinder/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     # 影音库
     # Jellyfin: https://hub.docker.com/r/nyanmisaka/jellyfin
     jellyfin:
       image: nyanmisaka/jellyfin:latest
       container_name: jellyfin
       hostname: jellyfin
       restart: always
       devices:
         - /dev/dri:/dev/dri # 核显硬解
       environment:
         - TZ=Asia/Shanghai
       ports:
         - 8096:8096
       volumes:
         - ./jellyfin/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     watchtower:
       image: containrrr/watchtower:latest
       container_name: watchtower
       hostname: watchtower
       restart: always
       command: -c -s "0 3 * * *"
       environment:
         - TZ=Asia/Shanghai
       volumes:
         - /var/run/docker.sock:/var/run/docker.sock
    
    networks:
     default:
       driver: bridge
       name: net_media
    
    

方案三

qBittorrent + Movie Robot + ChineseSubFinder + Jellyfin

说明

  1. Movie Robot

分析

优点:

  1. 几乎拥有方案二的所有优点,支持智能订阅下载,个人感觉 WebUI 比 NASTool 好看点
  2. 支持 Emby\Jellyfin 影音库的深度删除,支持中文演员刮削
  3. 多用户多种渠道均支持订阅,支持对接 Jellyseerr/Overserr
  4. 设置简单,对 PT 用户友好,无需 Jackett,支持绝大多数站点的对接和养护

缺点:

  1. 闭源收费(提供试用),开始是开源的,后来闭源开启捐赠(128 元),目前涨价成 168 元(2022-07-24)

部署

  1. 部署教程

    参考官方提供的 Wiki 文档即可,Movie Bot 文档中心

  2. 配置文件

    version: "3.8"
    
    services:
     # 资源下载器
     # qBittorrent: https://hub.docker.com/r/linuxserver/qbittorrent
     qbittorrent:
       image: linuxserver/qbittorrent:latest
       container_name: qbittorrent
       hostname: qbittorrent
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - WEBUI_PORT=8181
       ports:
         - 8181:8181
         - 56881:56881
         - 56881:56881/udp
       volumes:
         - ./qbittorrent/config:/config
         - /volume1/video:/video # 影音&下载根目录
    
     # 资源索引器(PT)
     # Jackett: https://hub.docker.com/r/linuxserver/jackett
     jackett:
       image: linuxserver/jackett:latest
       container_name: jackett
       hostname: jackett
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - AUTO_UPDATE=true
       ports:
         - 9117:9117
       volumes:
         - ./jackett/config:/config
    
     # 资源索引器插件(解决 CloudFlare 5秒盾)
     # FlareSolverr: https://hub.docker.com/r/flaresolverr/flaresolverr
     flaresolverr:
       image: flaresolverr/flaresolverr:latest
       container_name: flaresolverr
       hostname: flaresolverr
       restart: always
       environment:
         - TZ=Asia/Shanghai
         - LOG_LEVEL=info
    
     # 资源刮削归集整理
     # Movie Robot: https://moviebot.fun
     movie_robot:
       image: yipengfei/movie-robot:latest
       container_name: movie_robot
       hostname: movie_robot
       restart: always
       environment:
         - TZ=Asia/Shanghai
         - LICENSE_KEY=KoRxhz1z6QhzXvowb8Kp4q6wRa0klzVjUaT9qcQZbjHt8GzSOeZbd8DRMW4HX4psMwnDYiWgh8bigjc56OaiqzKR9gnHmSGJYbcdmoE7hlDPfjs4HVZdxdOVHFdCAL1v # 试用Key
       ports:
         - 1329:1329
       volumes:
         - ./movie-robot/data:/data
         - /volume1/video:/video # 影音&下载根目录
    
     # 字幕刮削器
     # ChineseSubFinder: https://hub.docker.com/r/allanpk716/chinesesubfinder
     chinesesubfinder:
       image: allanpk716/chinesesubfinder:latest
       container_name: chinesesubfinder
       hostname: chinesesubfinder
       restart: always
       environment:
         - PUID=1026 # UserID
         - PGID=101 # GroupID
         - TZ=Asia/Shanghai
         - PERMS=true
         - UMASK=022
       ports:
         - 19035:19035
         - 19037:19037
       volumes:
         - ./chinesesubfinder/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     # 影音库
     # Jellyfin: https://hub.docker.com/r/nyanmisaka/jellyfin
     jellyfin:
       image: nyanmisaka/jellyfin:latest
       container_name: jellyfin
       hostname: jellyfin
       restart: always
       devices:
         - /dev/dri:/dev/dri # 核显硬解
       environment:
         - TZ=Asia/Shanghai
       ports:
         - 8096:8096
       volumes:
         - ./jellyfin/config:/config
         - /volume1/video:/media # 影音&下载根目录
    
     watchtower:
       image: containrrr/watchtower:latest
       container_name: watchtower
       hostname: watchtower
       restart: always
       command: -c -s "0 3 * * *"
       environment:
         - TZ=Asia/Shanghai
       volumes:
         - /var/run/docker.sock:/var/run/docker.sock
    
    networks:
     default:
       driver: bridge
       name: net_media
    

补充说明

网络

网络访问不通畅的可以用小猫咪,懂的用,不懂的请勿操作

version: "3.8"

services:
  clash:
    image: dreamacro/clash-premium
    container_name: clash
    hostname: clash
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 7890:7890 # http
      - 7891:7891 # sock5
      - 9090:9090 # rest api
    volumes:
      - ./clash/config:/root/.config/clash

  clash_web:
    image: haishanh/yacd
    container_name: clash_web
    hostname: clash_web
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 80:80
    depends_on:
      - clash

BT 站

要想资源质量高下载快,建议去寻找高质量的 PT 站

BitTorrent Tracker 列表:XIU2/TrackersListCollection

网站地址类型
萌番组https://bangumi.moe/动漫
蜜柑计划https://mikanani.me/动漫
动漫花园https://dmhy.org/动漫
漫猫动漫http://www.comicat.org/动漫
ACG.RIPhttps://acg.rip/动漫
Nyaa.sihttps://nyaa.si/动漫
EZTVhttps://eztv.re/综合
RARBGhttps://rargb.to/综合
海盗湾https://thepiratebay.org/综合


Never give up your dreams.