利用NAS实现全自动观影追剧的几种方案对比

注:ChineseSubFinder 已停止服务,且目前尚未发现功能完全匹配的替代工具。同时,随着影视资源生态的发展,当下大部分剧集在发布时已内置中文字幕,基于上述情况,该工具已不再具备安装必要性,无需再进行安装。

想象一下打开一个网页,点开搜索框输入想看的电影或者电视剧,只需要点一个按钮,过几分钟对应的高清资源就已经呈现在你的影视库中,刮削完毕,字幕配好,你可以随时在家里的大屏幕或手机的小屏幕上欣赏。上周花了两天时间研究了下这套自动化流程,之前一直是手动去 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: 21hsmw/flaresolverr:nodriver
      container_name: flaresolverr
      hostname: flaresolverr
      restart: always
      environment:
        - TZ=Asia/Shanghai
        - LOG_LEVEL=info
        - LOG_HTML=false
        - CAPTCHA_SOLVER=none
    
    # 资源刮削器(电影)
    # 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. 部署教程

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

  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: 21hsmw/flaresolverr:nodriver
      container_name: flaresolverr
      hostname: flaresolverr
      restart: always
      environment:
        - TZ=Asia/Shanghai
        - LOG_LEVEL=info
        - LOG_HTML=false
        - CAPTCHA_SOLVER=none
    
    # 资源刮削归集整理
    # 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: 21hsmw/flaresolverr:nodriver
      container_name: flaresolverr
      hostname: flaresolverr
      restart: always
      environment:
        - TZ=Asia/Shanghai
        - LOG_LEVEL=info
        - LOG_HTML=false
        - CAPTCHA_SOLVER=none
    
    # 资源刮削归集整理
    # 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/综合
评论区
头像
    头像
    zen1th
      

    太牛逼了佬,新大陆了

    头像
    405676567
      

    jellyseerr 电影和剧集页面一直是抱500错误进不去,是不是需要外网呀,难搞呢

    头像
    2432422311
      

    刚接触pt的,没站点怎么办啊

    头像
    曾经的美好
      

    原来还有这么成熟的方案,回头试试

    头像
    蒙蒙细雨
      

    mark 一下,很棒!

    头像
    236305741
      

    点赞!收藏!求更新!

    头像
    无言
      

    放弃nastools了,不支持刮削英文

    头像
    LF
      

    提醒,Movie Robot的License Key没拿掉 :guandeng:

      头像
      蘑菇
        
      @LF

      那个试用的 License Key 无所谓的

    头像
    T1d3
      

    FYI, Nastools已经支持Jellyseerr和Overseerr {{dalao}}
    https://github.com/jxxghp/nas-tools/commit/fac2bba99dedaf00735bbefb5f53d1470917b226

    头像
    Koileo
      

    我选的方案2

      头像
      yizhitangtongxue
        
      @Koileo

      同湖州,先mark