不管你是什么理由,只要喜欢,就可以开始折腾了。
你要做的准备
- 家里有一台可以持续运行的设备(群晖、威联通或其他任意自组设备)
- 这台设备上需要安装Docker(https://www.docker.com/)并启动
- 找到一款适合自己的私人影音服务,推荐EMby
- 了解PT站,有账号并拥有一款下载工具,qBittorrent或transmission
- 玩豆瓣,喜欢从豆瓣选电影、电视剧
如果你已经做好了准备,就可以开始阅读下面的内容,让未来不必折腾,一步到位实现最佳私人观影体验,同时让你的家人也参与进来。本篇文章会以群晖的操作流程讲解如何一步一步使用机器人,如果你使用其他系统,原理是一样的。
功能介绍
movie-robot不是影音库,但它可以帮你管理影音库;它不是下载工具,但它可以对接下载工具;它不提供影音资源,但它可以整合搜索所有PT站点(陆续支持中);一次配置好,你可以当他不存在,就是你的一个影音助理,当然也可以是你家和你朋友的影音助理,它会悄悄的,满足好你所有的私人影音需求。
movie-robot不是热爱折腾人的玩具,因为配置一次,就不需要折腾了,一切从简,轻松的用起来,简单的背后,是AI。
Emby影音库
苹果生态Infuse
接下来将会围绕日常生活中的使用场景,聊聊movie-robot能给你带来什么。。。先睡了,敬请期待。
Docker应用安装与启动
- 在群晖的套件中心,安装Docker应用并启动;
- 打开Docker套件,点击注册表,搜索 movie-robot后双击开始下载。
- 下载完成后,会在映像页面有提示。双击下好的镜像,就可以开始安装了
- 映像可以理解为软件安装包,容器可以简化理解为应用进程,现在需要启动一个应用(容器)
容器的名称,是为了区分这个应用,并不重要,你认得出来就好。“使用高级权限执行容器”和启用资源限制可以都不用理会,机器人对内存和cpu的消耗非常低,每小时运行一次,平时基本不消耗内存和cpu。设置完名称不要着急走开,需要点击高级设置,对存储路径和环境变量做些改动。
- 勾选应用自动启动
如果应用执行过程中出现错误,或者nas关机重启,只要勾选了启用自动重新启动,就会帮你第一时间把机器人再起来,可以理解成开机自启动。
- 为容器设置存储空间
这一步非常重要。容器是有独立的存储目录系统的,但dockier的容器删除存储系统也会被删除。所以一些应用的配置信息,和使用过程中产生的文件,还是适合独立保存在宿主机(nas)上,所以需要添加存储空间映射,把你宿主机的一个文件目录映射到容器上。
- 通过添加文件夹按钮,选择本地文件夹
本地的文件目录没有任何要求,可以是你选择的任何位置。但这里我建议你把所有docker外挂的存储目录都统一放在一起,像我自己做了一个单盘ssd的docker目录,还有一个raid系统高可用的目录。
- 选好文件后,填写装载路径
这个没什么好说的,就是容器的路径,必须填写为/data。智能影音机器人,只需要映射这样一个目录,容器就可以正常工作了,目前不提供web页面,所以不需要映射端口。如果你使用群晖的系统,网络也不需要做过多调整,其他全默认即可,只需要提供一个激活码。
- 在环境选项,设置激活码变量
滚动条拖到最下,在LICENSE_KEY的值输入你获得的激活码,然后就可以点击应用启动了。
- 初次启动,因为还没有进行豆瓣、bt下载工具、pt站等设置,所以是起不来的,容器状态为停止状态是正常的。
看到这个状态不要着急再次启动,可以先看看日志。
初次启动,因为现在还没做web页面,所以需要把你想让机器人做的事,在配置文件中配置好,容器第一次启动会拷贝一份默认的配置文件,到你刚才映射的文件目录中,就是第8步装载/data的真实路径。
进入你刚才选择的目录,就可以看到app_config.yml配置文件了。这里不建议直接在群晖页面用群晖的在线记事本编辑,可能会有bug导致保存失败。建议你下载到本地,找个文本编辑工具进行修改后在上传到这个目录把文件覆盖掉。
应用的配置文件基本篇
机器人的主要配置文件是yaml格式的,选用这种格式是因为写注释方便,但不好的地方是这种配置文件格式语法比较严格,如果改的过程中对缩进、空格弄错,可能程序启动会失败,所以修改前,建议把模版备份一下。爱学习的同学,也可以先找点YAML文件语法教程,简单学习一下,推荐一篇文章:https://zhuanlan.zhihu.com/p/145173920
默认配置 default
示例:
default:
download_client: 'qbittorrent'
rule_dir: '/app/rules'
defualt配置目前提供了两个配置项,分别控制BT下载工具类型和智能选中规则文件目录。
download_client
该值目前只支持两个 qbittorrent 或者 transmission 推荐安装使用qbittorrent下载工具,网上可以找到很详细的安装教程。这个值只是告诉机器人你要用什么下载工具,但下载工具具体的地址,登陆信息,还需要其他配置项详细配置,后面会介绍到。
rule_dir
这是个非常高级的配置选项,它指定的目录不是你nas上的目录,而是容器内的文件系统,/app 是容器内的应用工作目录,我在打包镜像的时候,会把我默认做好的一份收藏级别配置文件copy到/app/rules文件夹,同时也会拷贝到你装载的/data一份;如果你正确理解了这个概念,应该就能明白,你可以通过映射存储目录的方式,调整这个目录。也可以简单的换成/data/rules 这就可以让你轻松的通过访问第6步设置的文件目录,来编辑规则文件了。至于规则怎么玩,后面高阶玩法,会详细介绍,这个功能有一定的使用门槛,适合非常热爱折腾,又非常有想法的同学,编辑出自己喜欢的选种下载策略。
影音服务器配置 emby
emby:
api_key: '去emby申请apikey复制到这里'
host: '192.168.1.111'
https: false
port: 8096
影音机器人工作的基础,就是你需要有一个影音配置,目前机器人已经和Emby影音系统很好的集成,推荐使用。
api_key
Emby提供了官方API系统,你需要到管理页面去生成一个api key配置
Emby管理页面,点击API密钥
这页面是我已经配置好的,你可能没有,需要点击新API密钥
名字不重要,输入完点确定就可以看到上面图生成好的密钥,复制到配置文件中
api_key: '04db545efce346b6a847db397aa80558'
host
访问你Emby服务的Host地址,是个IP,也可以是个域名,但一定不要带http://这些信息
host: '192.168.1.111'
https
你的emby是否https协议访问,true 或 false
port
服务端口
下载工具配置 qbittorrent 或 transmission
qbittorrent:
need_login: false
url: '<http://192.168.1.11:8080/>'
username: admin
password: admin
transmission:
host: '192.168.1.10'
port: 49166
username: 'user'
password: 'pass'
qbittorrent
need_login
这是一个比较重要的参数,很多同学会因为这个设置启动出错。有些同学的qbit在内网访问是不需要账号密码登陆的,有些默认情况是需要强制登陆的。值为 true 表示需要登陆,值为false表示不用自动登陆。
url
qbit下载工具的地址设置比较特殊,需要提供一个完整的带端口的访问地址,这里一定要注意别写错
url: '<http://192.168.1.11:8080/>'
username和password
登陆qbit的账号和密码
transmission
host
干净的host地址,ip或者域名都可以,不要带http://这些信息
host: '192.168.1.10'
port
访问端口
username和password
登陆TR的账号和密码
PT站点配置 pt
当前支持MTeam、HDSky、北洋园 三个PT站点,这里只是PT站的基础登陆信息配置,建议你有几个配几个,用不用得到,后面会有其他参数决定。
pt:
mteam:
type: 'cookie'
cookie: '可以用chrome浏览器获得访问网站的cookie'
hdsky:
type: 'cookie'
cookie: '可以用chrome浏览器获得访问网站的cookie'
tjupt:
type: 'cookie'
cookie: '可以用chrome浏览器获得访问网站的cookie'
mteam、hdsky、tjupt这三个值是绝对不能变的,记住他们,后面配置还会用到。如果你只有其中一个pt站,那你可以把其他几个配置项都删了,精简配置文件。
type
这个是登陆PT站点的方式,目前建议大家全部使用cookie方式,可以保护自己的账号密码不泄漏
cookie
这个就是访问PT站点时的cookie字符串,我以chrome为例,教大家如何获得cookie
找到菜单里的开发者工具
打开开发者工具后,刷新换一下页面,就可以看到所有的访问细节,找到第一个页面的访问。就可以看到cookie信息,把它复制到配置文件中,大概是这样,值复制值,不要复制错
cookie: 'cf_clearance=aidhf8r23rbkasdjbfhlaisdjo3iourihby9832A_Uvs-1641017926-0-150; tp=akdjfbhhshif4e9782ojasfjj18a12ZTc0MmNkNg%3D%3D'
电影来源信息配置 sources
如果你有学习了YAML基本语法,你应该可以看得出,这是一个数组配置。但目前仅仅支持一种type,后面会扩展。所以目前,如果不理解语法,就按给出的示范改值。
sources:
- type: 'douban_wish'
args:
turn_page: true
types: 'wish;do'
user_domain: 'user1;'
within_days: 365
type
当前只有一种值 douban_wish 也就是豆瓣电影想看列表
args
任务源配置参数,不同任务源可能会不一样,但目前是一样的。
turn_page
是否自动翻页,true 或 false,豆瓣的用户电影列表页(https://movie.douban.com/people/dirain/wish)是需要翻页的,如果你添加了很多信息,一定需要翻页,所以这里设置true吧,好像没什么设置false的理由,但留着这个配置,是怕有DIY大神,什么都想自己调。
types
豆瓣的电影列表有三种分类,想看(wish)、在看(do)、看过(collect),这个配置,就是决定机器人,都监听你的哪些分类。如果有多个,用;号隔开
user_domain
这个就是豆瓣的用户id了,你可以只配置自己的,也可以用;号隔开,配置多个,把你家人的,都加进来。
获取豆瓣id的方法,不熟悉的同学可以在app上找
配置示范
user_domain: '48382384'
within_days
豆瓣老用户,可能在想看里加了很多电影,都已经年久失修了,所以提供了这个参数,只获取近x天加入想看的电影,避免首次使用过度下载。值为数字,默认近365天
任务设置 tasks
任务设置是机器人的核心,是组织自动化工作流的重要配置,当前提供了两种任务类型,sync_movies 和 download_free_torrent。这是一个数组配置,不需要的任务可以删掉。
tasks:
- type: 'download_free_torrent'
args:
#获取免费种子的pt站
search_pt: 'mteam;hdsky'
#免费种子提交到pt后的保存路径
save_path: '/downloads'
result_page_limit: 1
min_free_hours: 2
max_free_hours: 24
智能同步电影设置 sync_movies
这个任务目前主要负责监听豆瓣来源的电影,有新增就自动开始下载。
- type: 'sync_movies'
args:
source: 'douban_wish'
#设置搜索的pt站,支持多pt同时搜索
search_pt: 'mteam;hdsky'
#选择最佳种子的规则配置,系统默认提供了collection规则,是清晰度优先
score_rule: 'collection'
#某资源首个种子过去多久,才进行检索下载;有些资源刚出来质量并不好,等几个小时,发种人变多,才有的选;
debut_passed_hours: 6
#是否自动删除下载的种子,如果不删除,将保留在你映射的/data目录内
delete_torrent: false
#注意,只有极少数情况下,豆瓣的电影需要登陆后才可以访问获取,比如https://movie.douban.com/subject/23748525/ 电脑不登陆访问不了;可以留空,等遇到报错再配置;
cookie: ''
save_mode:
- type: 电影
cate: 纪录片
my_cate: 纪录片
- type: 剧集
cate: 纪录片
my_cate: 纪录片
- type: 剧集
cate: 动画
my_cate: 儿童动画片
- cate: 真人秀
my_cate: 综艺
- cate: 脱口秀
my_cate: 综艺
- type: 电影
my_cate: 电影
path: '/downloads/电影'
- type: 剧集
my_cate: 电视节目
source
电影信息来源,目前支持 douban_wish,也就是在上面sources配置的
search_pt
当有新的电影加入想看时,去检索的PT站,多个用;号隔开,值就是在pt配置项设置的;当提供多个pt站配置时,会将每个PT站的搜索结果拿到,对其进行打分,按选种规则,选出最适合你的资源,最佳的种子只会挑第一个,整个选择过程你不需要干预,什么都不用管。
score_rule
暂时系统只提供了 collection 对应的就是rules文件夹下的规则文件,这个详细玩法,后面专门的板块介绍。
debut_passed_hours
如果一个电影刚上映还没有资源,新种首发的时候,往往质量不一定是最好的,没有选择余地,这个值是一个数字,代表小时数,意为首发种子时间超过N小时,才会执行选中下载工作,等上几个小时,才有更好的选择空间。
delete_torrent
/data映射的目录里会创建一个torrent文件夹,所有选择的种子,下载好都会保存到此目录,如果该值为true,种子提交到下载工具后会自动删除,如果为false则保留不删除。
cookie
豆瓣部分电影,有个奇怪的设置,不登陆无法获取电影的详细信息。比如这部电影https://movie.douban.com/subject/23748525/ 电脑和手机上,不登陆都无法访问。所以遇到这种情况的时候,需要电脑登陆豆瓣,把cookie设置进去,流程和设置PT站一样。
save_mode
保存模式,这是大家最想个性化定制的部分,也是让你后面省心不用管理电影的关键。首先save_mode的值,是一个数组,可以多条,也可以只有一条,如下:
多条
save_mode:
- type: 电影
cate: 纪录片
my_cate: 纪录片
- type: 剧集
cate: 纪录片
my_cate: 纪录片
一条
save_mode:
- type: 电影
cate: 纪录片
my_cate: 纪录片
不了解yaml语法的你,应该也明白了以 - 开始的记录,就代表一条规则配置。
每一条规则,有四个参数,分别是type、cate、my_cate、path。type是资源类型(电影、剧集),cate是资源的分类,这个分类可能有很多种,以豆瓣的为准。下面两张图,可以看懂机器人如何识别type和cate的值
这个示范可以得出,type为电影 cate为剧情、喜剧、爱情,这部电影有3个分类
type为剧集 cate为剧情,这部剧集只有1个分类
上面两张图,说明了程序如何识别type,只有电影、剧集 两种,但cate,豆瓣会有很多,我也没仔细分析过有多少,我自己的分类,不会分这么细节。
总结来说,type和cate,是以豆瓣为准,不会使用pt站的,因为pt站的分类太乱。知道了type和cate的来源,my_cate和path就比较容易理解了。
type
值就是电影或剧集,也可以不配置type,但要指定cate,二选一
cate
值就是豆瓣的类型,只能为1个,暂不支持多个;也可以不配置cate,但要指定type,二选一
my_cate
这是个qbit下载工具中的分类概念,不使用qbit下载工具的同学可以跳过my_cate这个配置项,也可以从你配置文件里删掉,网络上可以检索到很多qbit分类管理的功能。但简单来说,qbit中分类一定程度上就代表了下载路径,下载种子的时候,只需要选择分类,就会保存到分类对应的路径中。
web页面分类区域,点击右键,就可以管理分类信息
分类的名称,你可以随便设置,动漫、电影、电视剧、综艺,什么都可以。保存路径,必须是你qbit映射到你宿主机的路径,如果你用的是docker镜像,这部分不多介绍了,大家自己学习。
那么相应的,my_cate的值,就是你在新建时设置的分类名。使用my_cate就可以不设置path(可以删),如下
- cate: 真人秀
my_cate: 综艺
- cate: 脱口秀
my_cate: 综艺
path
保存路径,这个就是当选到合适的种子开始提交到下载工具下载时,提交给下载工具的保存路径。qbit和tr都支持此设置
理解了配置项是干什么的,接下来通过几个实战配置,说说分类逻辑。一句话:当要下载的资源type和cate等于配置规则的值时,使用my_cate和path的配置提交下载。
示范1:当资源为电影时,保存到qbit为电影的分类
- type: 电影
my_cate: 电影
示范2:当资源为剧集时,保存到qbit为电视剧的分类
- type: 剧集
my_cate: 电视剧
示范3:当资源为电影并且类型为喜剧时,保存到tr的/video/电影/喜剧 目录
- type: 电影
cate: 喜剧
path: '/video/电影/喜剧'
示范4:当类型为脱口秀,不管是剧集还是电影时,保存到qbit的综艺目录
- cate: 脱口秀
my_cate: '/video/综艺'