一、教程目标

本文教程帮您实现如下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相关文件目录

种子存放路径

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第1张

mteam站点资源存放路径,自动选择剩余空间大的路径。

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第2张

三、RSS工具flexget安装

3.1 flexget安装环境准备

1)、ssh连接群晖,切换root用户

打开SecureCRT,设置字符集为UTF-8,以保证可以正常显示配置文件中的中文。

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第3张

用管理员账户登录到群晖,然后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)、配置文件示例

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第4张

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第5张

配置文件、提取码: 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

Transmission+RSS定时批量下载pt资源与Autoremove-torrents批量删除资源 经验教程 第6张

配置文件、提取码: 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/

参与评论