豆瓣自动追影追剧NAS系统搭建,阅读收藏这一篇文章足矣
今天继续跟大家分享一下NAS折腾的历程,去年年底入了瑞芯RK3588的Rock 5b开发板,因为是16GB的顶配版,所以可玩性非常不错,可以在上面加装传感器,安装各种各样的Docker容器,实现各式复杂的功能。
感兴趣的朋友可以看我的这些文章,记录了配置的详细流程。
安装了OpenMediaVault(简称OMV)之后,主要使用的是装驳在开发板上的西数SN350固态硬盘作为存储。我会将下载的电影放在smb存储中,然后通过海美迪电视盒子局域网播放。
不久前有幸在张大妈众测中了一个麦沃的K35262C的双盘位阵列盒,加装了两个1TB的机械硬盘组成了RAID0,因为RAID0传输效率最高,适合对于数据安全完整性要求不高的场景。评测文写完了,多出来的2TB存储空间没法充分利用,有点浪费,于是想着趁此机会尝试搭建豆瓣自动追影系统。
这里记述一下整个过程作为备份,供大家参考,我把期间遇到的问题和解决方法也特意标出了。内容较多全文近7000字,我懒得分成系列文章了,搞来搞去就是赚个几块钱的金币,大家看起来也麻烦。
自动追剧观影的几个方案
我在站内浏览了大量相关方案的文章,国内玩家使用较多比较主流的就是这三种,NASTools、Video-Tools、Movie Robot。我自己尝试了前两个,因为Movie Robot需付费才能使用,价格还不便宜,所以直接放弃了。
NASTools自动化程度很高,UI界面很清晰,但是3.0.0版本之后需要绑定某些PT站点登录才能实现所有功能,对于不玩PT的玩家很不友好。我安装了2.9.1的版本Docker不断重启,无法正常使用。
Video-Tools没有图形界面,作者更新不频繁,遇到问题自行解决需要一定技术能力。我安装直接失败,盲猜大概Video-Tools不支持ARM64架构?
所以干脆还是尝试了下外国的几个开源方案的组合,也就是flaresolverr+jackett+qbittorrent+chinesesubfinder+radarr+sonarr+jellyfin。看起来比较多,其实装起来还挺方便的。
NAS中预建相关文件夹
首先在OMV中查看我的存储共享文件夹的绝对地址是:/srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share。我这里把所有视频文件、系统文件都放到了同一个共享目录中,方便管理。PUTTY里登录到开发板Debian系统,在共享文件夹中创建所需文件夹:
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/jackett
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/qbittorrent
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/radarr
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/tv
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/animation
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/movie
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/other
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/vr
mkdir -p /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/game
大家可以根据自己情况修改相关命令。
这里还遇到一个问题,Docker镜像在默认网络设置下载不了,修改为软路由又出现路由错误。
这是因为软路由Openwrt安装在同一台宿主机下,配置为macvlan模式,默认容器和宿主机无法直接通讯,网上找到的方法,添加一个子网口和相关路由,使得二者可以直接通讯:
sudo ip link add foobar link enP4p65s0 type macvlan mode bridge
sudo ip addr add 192.168.1.252/32 dev foobar
sudo ip link set foobar up
sudo ip route add 192.168.1.111/32 dev foobar
这里enp7s0是物理网卡的名字,192.168.1.252/32是新创建的子网口IP地址,192.168.1.111/32是使用macvlan的IP地址,这里就是软路由的IP地址。
改完之后再Pull Image就没问题了,但是注意宿主机重启后这一设置不会保存,需要添加为开机脚本。
安装Flaresolverr
flaresolverr 主要作用:用于一些indexer无法通过jackett访问cloudflare的问题,允许用户访问网站而无需输入验证码。
docker run -d
--name=flaresolverr
-p 8191:8191
-e LOG_LEVEL=info
-e TEST_URL=https://www.baidu.com
--restart unless-stopped
ghcr.io/flaresolverr/flaresolverr:latest
执行完命令等待容器启动完成,浏览器访问8191端口,出现以下字样说明配置成功。
安装Jackett
Jackett是一款开源的搜索发现软件。它提供了一个灵活的引擎,以搜索跨多个网络流媒体源及位于网络之外的大型私人托管源。
docker run -d
--name=jackett
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-e AUTO_UPDATE=true
-p 9117:9117
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/jackett:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
--restart unless-stopped
lscr.io/linuxserver/jackett:latest
在配置中设置管理员密码。
将之前FlareSolverr的地址填入并保存。
下面比较繁琐的一步就是添加Indexer,国内Public的站点比较少,国外站点挺多,实测也能下载。
国内Private站点大家可以点进去看看是否开放注册。
安装qbittorrent
qbittorrent是方案中用来BT下载的工具。
docker run -d
--name=qbittorrent
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-e WEBUI_PORT=8081
-p 8081:8081
-p 6881:6881
-p 6881:6881/udp
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/qbittorrent:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
--restart unless-stopped
docker.io/linuxserver/qbittorrent:latest
浏览器访问8081端口,用户名admin,密码adminadmin登录。
这里建议修改几个设置,启用UPnP,修改6881端口为随机端口,因为我发现某些网站会封禁6881端口。
网上搜索找到Trackers列表拷到框内。其他设置可以酌情修改,比如同时下载的作业数量,实测不少作业下载速度为0也算是active downloads,这个参数可以提高一点。
同时勾选选项-高级中的总是向同级的所有Tracker汇报。
安装radarr
Radarr配合Jackett,可以方便地对电影查询下载,同时Radarr的电影海报墙也能省去我们管理电影的麻烦。
docker run -d
--name=radarr
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-p 7878:7878
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/radarr:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/tv:/tv
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/animation:/animation
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/movie:/movie
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/other:/other
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/vr:/vr
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/game:/game
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
--restart unless-stopped
docker.io/linuxserver/radarr:latest
浏览器访问7878端口,可将界面UI语言改成中文,在媒体管理里添加根目录,除了Download文件夹以外,其他目录都要添加。
添加qBittorrent下载客户端。
添加索引器,URL为Jackett中的Copy Torznab Feed的内容,在Jackett同一页面里还可以查到API Key,一并填入。
然后可以尝试手工搜索电影,看看有没有问题:
安装sonarr
sonarr用于下载美剧,因为最近都用网飞看剧了,暂时没有安装,方法和radarr基本相同。注意sonarr不支持中文。
docker run -d
--name=sonarr
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-p 8989:8989
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/sonarr:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/tv:/tv
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/animation:/animation
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/movie:/movie
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/other:/other
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/vr:/vr
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/game:/game
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
--restart unless-stopped
docker.io/linuxserver/sonarr:latest
安装jellyfin
Jellyfin是一个自由软件媒体系统,它让您能够控制管理和流媒体。它是专有Emby和Plex的替代方案,可以通过多个应用程序从专用服务器向最终用户设备提供媒体。Jellyfin是Emby 3.5.2版本的派生版本,并移植到.NET Core框架,以实现完全的跨平台支持。
docker run -d
--name=jellyfin
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-e JELLYFIN_PublishedServerUrl=修改为自己的IP地址
-p 8096:8096
-p 8920:8920
-p 7359:7359/udp
-p 1900:1900/udp
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/jellyfin:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/tv:/tv
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/animation:/animation
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/movie:/movie
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/other:/other
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/vr:/vr
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/game:/game
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
--device /dev/dri:/dev/dri
--restart unless-stopped
nyanmisaka/jellyfin:latest
安装完成后访问8096端口,完成账号等简单配置即可实现电影墙效果。
其他可以酌情设置,比如利用MetaShark来更新电影元数据。
发现linux系统对中文的字体支持的不好,ass字幕的Jellyfin支持也不是很好,显示为方格,解决方法如下:
找到设置-字幕选择下面的选项
强制字体为微软雅黑:下载msyh.woff2字体文件拷贝到共享文件夹中。
设置->控制台->播放
如果尝试以上方法字幕依然显示不正常,可以在Jellyfin的docker中直接安装字幕文件:
#列出容器ID
docker ps
#进入容器
docker exec -it 容器ID /bin/bash
#安装字体
apt update
apt install fonts-noto-cjk-extra
我是做了这步后终于字幕显示正常了。
Jellyfin在手机和电视盒子上都有相应的APP,简单配置后即可使用。
安装chinesesubfinder
Jellyfin里自带下载字幕的插件:
安装完成后需要重启jellyfin服务器,然后就可以通过点击电影旁边的三个点,调出字幕下载界面。
上述截图选自站内分享文章,我实测Open Subtitles都搜不出字幕,仅供大家参考,建议还是安装chinesesubfinder。
docker run -d
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/appdata/chinesesubfinder:/config
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources:/media
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/tv:/tv
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/animation:/animation
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/movie:/movie
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/other:/other
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/vr:/vr
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/game:/game
-v /srv/dev-disk-by-uuid-1a88bf67-49bf-4d91-87b6-84017962a7b5/share/resources/downloads:/downloads
-e PUID=1000
-e PGID=1000
-e PERMS=true `# 是否重设/media权限`
-e TZ=Asia/Shanghai `# 时区`
-e UMASK=022 `# 权限掩码`
-p 19035:19035
-p 19037:19037 `# webui 的视频列表读取图片用,务必设置不要暴露到外网`
--name chinesesubfinder
--hostname chinesesubfinder
--log-driver "json-file"
--log-opt "max-size=100m" `# 限制docker控制台日志大小,可自行调整`
allanpk716/chinesesubfinder:v0.53.3
浏览器访问19035端口,在里面选择Jellyfin。
默认是6小时自动扫描媒体库,也可以自己手动更新缓存手工点击下载字幕。
实测不少电影还是找不到字幕,建议在字幕源设置里添加其他网站的API。
自动下载字幕的效果是这样的,然后在Jellyfin里电影播放界面点击cc按钮即可加载中文字幕。
安装RSSHUB
如果按照我的教程操作到这步,已经基本完成自动追剧系统搭建了,但是我的目的是要自动下载豆瓣我想看里的片单,因为这几十年来所有观影记录都保存在豆瓣里,还有1199部想看但是还没有看的影视作品,任重而道远。
这里就要请出RSSHUB了,RSSHub是一个开源、简单易用、易于扩展的RSS生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容,可以配合浏览器扩展RSSHub Radar (opens new window)和移动端辅助App RSSBud (opens new window)(iOS) 与 RSSAid (opens new window)(Android) 使用。
可以通过vercel在线搭建RSSHub,但是实测更容易被豆瓣的反爬机制发现被封,还是通过Docker本地搭建靠谱。
运行下面的命令下载 RSSHub 镜像
$ docker pull diygod/rsshub
然后运行 RSSHub 即可
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub
此时浏览器打开1200端口,似乎看不出什么。研究一下RSSHUB里关于豆瓣的订阅文档。
按照页面中的语法,调取豆瓣自己想看的电影列表应该是这个URL。pagesCount参数是显示的页数。
http://192.168.1.66:1200/douban/people/32XXXXX/wish/pagesCount=200
后面的操作就简单了,到Radarr中的列表里添加自定义列表,指定为从这个URL抓取信息。
随后回到Rararr的电影主页里,就可以看到已经在自动监控列表里的电影了。不过这个用电影名字匹配的方式准确性一般,如果有名字相同或类似的电影往往容易找错电影,我这里就莫名出现了不少情色片。
没过多久,就可以注意到qbittorrent页面添加了大量电影开始下载了。因为我想看的电影大多都是旧片,种子较少,下载速度一般,而我的设定又是2160p高清片源优先......不过NAS可以24小时挂机下载。
Radarr电影下载完成/更新提醒
本来我是想通过微信提醒Radarr电影下载完成的,也找到了相关的项目脚本。
Oscar1011/XarrNotifyScripts
这个项目需要依托企业微信应用,但是现在企业微信应用要求在受信任IP地址中使用,自己搭建服务器非常繁琐,得不偿失。碰巧发现IOS里有个APP “LunaSea”也可以实现通知的功能,需要在美国App Store中下载。
在Radarr的设置-安全-API秘钥中获取API的值。
手机上进到LunaSea里Radarr的设置Connection Details里。
分别填入Host地址和API值,测试通过。
这样即可在手机APP里查看管理Radarr中的电影作业了。
而要想实现实时通知功能,需要用到Radarr通知连接里的Webhook。
在LunaSea里打开Settings-Notifications,点击Radarr里的Device按钮,会自动将URL拷贝至剪贴板。
回到Radarr的设置-通知连接-添加连接Webhook,将之前的URL填入,方式为POST,即可完成配置。
如此一旦抓取或者下载完新电影,都会手机通知我,非常方便。
总结
至此豆瓣自动追影追剧系统搭建完成,因为其间安装配置的Docker比较多,最好提前安装好Portainer方便管理这些容器。虽然操作略显繁琐,但是用到的都是开源方案,自由度比较高,方便自行DIY,建议大家点赞收藏此文,以防日后需要。谢谢大家支持!




































校验提示文案
做人要厚道。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
去看看
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案