一、教程目标
本文教程帮您实现如下4个功能:
1、定时完成pt站点资源的RSS订阅,集中存放pt种子(torrent),并调用transmission客户端自动完成资源下载。每个pt站点资源文件独立存放,便于管理。
2、多磁盘时,根据磁盘剩余空间百分比,选择空间大的磁盘存放下载的pt资源。
3、对RSS订阅的pt种子,进行过滤,满足指定条件的资源,才下载。
4、当下载的资源文件,满足各pt站点的分享率/做种时间要求,批量删除老旧资源文件,以达到释放空间。
二、环境描述
2.1 软硬件环境
本教程架设您以满足如下软硬件条件:
(1)群晖6.1.7,已启用ssh登录(启用ssh方法自行百度)
(2)套件均安装到/volume1,pt文件下载到/volume2。
(3)transmission 2.94(已安装,并停用)
(4)ssh连接工具(putty或SecureCRT,本教程以SecureCRT为例)
(5)python3(因flexget是用python编写,因此需要安装python,安装方法自行百度)
(6)(非必须)如果对vi工具不熟悉,可使用editplus或notepad32等文本编辑工具。
(7)tr相关文件目录
种子存放路径
mteam站点资源存放路径,自动选择剩余空间大的路径。
三、RSS工具flexget安装
3.1 flexget安装环境准备
1)、ssh连接群晖,切换root用户
打开SecureCRT,设置字符集为UTF-8,以保证可以正常显示配置文件中的中文。
用管理员账户登录到群晖,然后sudo -i回车,输入管理员密码,切换到root用户。
admin@KOOLNAS:~$ sudo -i
Password: 此处输入admin用户密码
root@KOOLNAS:~#
2)、安装python包管理工具pip
root@KOOLNAS:~# cd /volume1/@appstore/py3k/usr/local/bin
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# ./python3 -m ensurepip
Ignoring indexes: https://pypi.python.org/simple
Requirement already satisfied (use --upgrade to upgrade): setuptools in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages
successfully字样说明安装成功。这里allready satisfied说明我这已经安装过此工具,无需安装。
升级包管理工具pip至最新版
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# ./python3 -m pip install --upgrade pip
Requirement already up-to-date: pip in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages (19.0.3)这里allready up-to-date说明我这已经是最新版,无需更新。
3)、安装python虚拟环境virtualenv
这里安装virtualenv虚拟环境,主要是为了是flexget运行环境与其他需要用到python的环境相隔离。
关于python的virtualenv虚拟环境的详细说明,请自行百度。
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# ./python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: virtualenv in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages (16.4.0)
successfully字样说明安装成功。这里allready satisfied说明我这已经安装过此工具,无需安装。
4)、创建flexget运行虚拟环境,名为flexget
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# ./virtualenv ./flexget/
Using base prefix '/volume1/@appstore/py3k/usr/local'
New python executable in /volume1/@appstore/py3k/usr/local/bin/flexget/bin/python3
Also creating executable in /volume1/@appstore/py3k/usr/local/bin/flexget/bin/python
Installing setuptools, pip, wheel...
done.
done说明创建成功
启用新创建的flexget虚拟环境
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# cd flexget/
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# source ./bin/activate
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget#
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget#
命令提示符左侧出现(flexget),说明启用成功。如果要退出虚拟环境,则在当前目录执行deactivate
至此,安装flexget所需要的前提条件已准备完毕。
3.2 flexget安装
1)、安装flexget
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# ./bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flexget
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: flexget in ./lib/python3.5/site-packages (2.20.5)
......
Requirement already satisfied: setuptools in ./lib/python3.5/site-packages (from pynzb==0.1.0->flexget) (40.8.0)
successfully字样说明安装成功。这里allready satisfied说明我这已经安装过flexget,无需安装。
-i参数指定使用国内镜像(可加快安装,若省略,则采用默认镜像安装)
2)、安装flexget需要用到的TransmissionRPC
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# ./bin/pip install flexget -i https://pypi.tuna.tsinghua.edu.cn/simple transmissionrpc
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: flexget in ./lib/python3.5/site-packages (2.20.5)
......
Requirement already satisfied: setuptools>=18.5 in ./lib/python3.5/site-packages (from html5lib==0.999999999->flexget) (40.8.0)
successfully字样说明安装成功。这里allready satisfied说明我这已经安装过flexget,无需安装。
-i参数指定使用国内镜像(可加快安装,若省略,则采用默认镜像安装)
3)、安装完毕后,退出虚拟环境
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# deactivate
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget#
注意提示符左侧的变化
至此,flexget已安装完毕,可输入完整路径执行flexget
/volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget execute
但是还未创建flexget配置文件,此处会报错。
3.3 flexget升级
如果后期,flexget执行时,报版本过旧,可通过pip完成升级操作。
root@KOOLNAS:~/.config/flexget# cd /volume1/@appstore/py3k/usr/local/bin
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# cd flexget/
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# source ./bin/activate
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# pip install --upgrade flexget -i https://pypi.tuna.tsinghua.edu.cn/simple flexget
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already up-to-date: flexget in ./lib/python3.5/site-packages (2.20.5)
......
Requirement already satisfied, skipping upgrade: setuptools in ./lib/python3.5/site-packages (from pynzb==0.1.0->flexget) (40.8.0)
升级flexget至最新版,-i参数指定使用国内镜像(可加快安装,若省略,则采用默认镜像安装)
四、flexget配置文件
flexget配置文件遵循yaml语法,缩进(为2个空格,而非tab键缩进)要求较为严格,并保存为UTF-8编码。
编辑工具推荐群晖的vi工具或者editplus或notepad32这里的代码编辑工具。
配置文件的完整路径为/root/.config/flexget/config.yml
4.1、配置文件详解
1)、配置文件示例
配置文件、提取码: g9xp
配置文件分3大模块:
schedules(调度):当将flexget作为守护进程,设置为开机启动时,此部分参数生效,用于设置flexget的定时。
templates(模板):可将部分设置(筛选条件、空间检测、tr客户端配置等),设置成模板,以供在任务模块中调用。此部分内容非必须,但是启用模板,可以简化配置文件的设置。
tasks(任务):设置具体pt站点下载任务的参数配置,可直接调用前边的模板。
注意:
(1)注意各层级参数的缩进,必须为空格键。
(2)同层级的参数,缩进需要一致。
(3)保存格式需要为UTF-8
更详细的参数说明,请见网站
4.2、配置文件校验
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget check
2019-02-25 10:30 VERBOSE check Pre-checked 81 configuration lines
2019-02-25 10:30 VERBOSE check Checking config file `/root/.config/flexget/config.yml`
2019-02-25 10:30 VERBOSE check Config passed check.
passed check说明通过语法验证
4.3、配置文件测试
root@KOOLNAS:~/.config/flexget# flexget --test -c /root/.config/flexget/config.yml execute
2019-02-26 16:45 INFO manager Test mode, creating a copy from database ...
2019-02-26 16:45 INFO manager Test database created
2019-02-26 16:46 INFO content_size M-Team Plugin is partially disabled with --test and --learn because size information may not be available
2019-02-26 16:46 INFO manager Removed test database
可查看哪些文件可能被下载,确认无误后,可直接执行。
root@KOOLNAS:~/.config/flexget# flexget -c /root/.config/flexget/config.yml execute
备注:可通过-c选项指定参数文件,若未指定,则默认使用/root/.config/flexget/config.yml配置文件
4.4、常用的flexget命令
1)、查看flexget版本
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget -V
2)、校验配置文件语法及内容
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget check
3)、执行RSS测试,不会下载任何内容(此处不会对content_size内容做处理)
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget --test execute
4)、清空数据库中无用数据
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget database cleanup
5)、查看flexget执行状态
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget status
6)、列出所有被拒绝的条目
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget rejected list
7)、清除所有被拒绝的条目
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget rejected clear
8)、列出所有失败的条目
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget failed list
9)、清除所有失败的条目
root@KOOLNAS:~/.config/flexget# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget failed clear
10)、查看flexget命令的选项/帮助
root@KOOLNAS:~# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget -h
五、添加定时任务,自动执行
编辑crond配置文件,增加如下内容(每20分钟执行一次)
*/20 * * * * root /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget execute
root@KOOLNAS:~/.config/flexget# vi /etc/crontab
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#minute hour mday month wday who command
0 0 1 * * root /usr/syno/bin/syno_disk_health_record
0 22 1 * * root /tmp/synoschedtask --run id=1
0 22 4 */6 * root /tmp/synoschedtask --run id=2
0 20 * * * root /tmp/synoschedtask --run id=4
33 4 * * 5 root /tmp/synoschedtask --run id=5
*/20 * * * * root /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget execute
六、常见配置文件报错解决
1、Did not pass schema validation
通常为缩进错误,请根据错误提示的位置,检查配置文件
2、Indentation error
通常为缩进错误,请根据错误提示的位置,检查配置文件
3、 Reason: found character 't' that cannot start any token
Check configuration near line 8, column 0
通常为使用了tab键缩进替代了空格缩进,请根据错误提示的位置,检查配置文件,删除缩进前的空白,然后用空格完成缩进。
七、定时删除pt资源工具autoremove-torrents
7.1 autoremove-torrents安装
root@KOOLNAS:~/.config/flexget# cd /volume1/@appstore/py3k/usr/local/bin
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin# cd flexget/
root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# source ./bin/activate
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget# ./bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple autoremove-torrents
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting autoremove-torrents
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c8/56/f5dd6cfe395386113394a3d16e41ca5bd6a6842224c8cdfd0e95b8544d52/autoremove-torrents-1.2.5.tar.gz
......
Successfully installed autoremove-torrents-1.2.5 enum34-1.1.6
(flexget) root@KOOLNAS:/volume1/@appstore/py3k/usr/local/bin/flexget#
Successfully说明安装成功
7.2 autoremove-torrents配置文件
1)、创建配置文件
root@KOOLNAS:~# cd
root@KOOLNAS:~# cd .config/
root@KOOLNAS:~/.config# mkdir amt
root@KOOLNAS:~/.config# cd amt
root@KOOLNAS:~/.config/amt# vi config.yml
配置文件、提取码: g9xp
2)、测试配置文件
root@KOOLNAS:~/.config/amt# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/autoremove-torrents --conf=/root/.config/amt/config.yml --view
3)、执行批量删除
root@KOOLNAS:~/.config/amt# /volume1/@appstore/py3k/usr/local/bin/flexget/bin/autoremove-torrents --conf=/root/.config/amt/config.yml
4)、设置autoremove-torrents定时删除种子
编辑crond配置文件/etc/crontab,将如下命令追加到末尾(每日的23点执行)
0 0 23 * * root /volume1/@appstore/py3k/usr/local/bin/flexget/bin/autoremove-torrents --conf=/root/.config/amt/config.yml
root@KOOLNAS:~/.config/flexget# vi /etc/crontab
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#minute hour mday month wday who command
0 0 1 * * root /usr/syno/bin/syno_disk_health_record
0 22 1 * * root /tmp/synoschedtask --run id=1
0 22 4 */6 * root /tmp/synoschedtask --run id=2
0 20 * * * root /tmp/synoschedtask --run id=4
33 4 * * 5 root /tmp/synoschedtask --run id=5
*/20 * * * * root /volume1/@appstore/py3k/usr/local/bin/flexget/bin/flexget execute
0 0 23 * * root /volume1/@appstore/py3k/usr/local/bin/flexget/bin/autoremove-torrents --conf=/root/.config/amt/config.yml
注意:为防止种子误删除,这里不建议将autoremove-torrents设置为定时自动执行;建议定期手动加--view参数,确认无误后,再批量删除。另外,autoremove-torrents工具暂时不支持种子最后活动时间的扫描,因此,可能会删除已符合pt站点分享约束,但是正在上传的种子文件。这样反而,不利于提高pt站点的上传量。是否使用amt的自动删除,请读者自行决定。
至此,全自动化的pt资源RSS订阅下载(每20分钟扫描一次),并定时删除(每日23点删除)符合pt站点分享规则资源文件的目标已全部实现。
编者注:
因能力有限,此教程仅供参考,只作抛砖引玉只用,风险自担。
VIA:https://post.smzdm.com/p/a3gzo8x7/