FlexGet 官网是这样描述自己的,媒体文件的多功能自动化工具。可以支持 torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, 等等作为输入。FlexGet 是 Python 编写的,所以如果想要实现更加复杂的功能,也可以自己写脚本来处理。
简单的来说,FlexGet 解决 BT 客户端没有订阅功能的问题,通过 FlexGet 可以方便的制定一些规则来自动订阅并自动下载特定的种子,比如在追剧集时,按照特定的名字以及文件大小,或者分辨率自动进行下载。
FlexGet 一大被称道的就是可以实现 PT 或者 BT 的自动下载,并且直接传给 Deluge, transmission, uTorrent, rTorrent, SABnzb 等等客户端进行下载。FlexGet 也集成了 trakt, thetvdb.com, imdb.com 等等网站可以用来追踪剧集。
FlexGet 可以自定义任务,自定义运行时间,有一个友好的 Web 界面,然后还有很多很多有待发现的功能。
在没有了解到 FlexGet 之前,我都是手动将 torrent 文件下载到 ~/Downloads
目录中,然后在 crontab 中将下载目录中的所有 torrent 文件 rsync 到 Transmission 或者 ruTorrent 的 watch 文件夹中的。
*/1 * * * * rsync -avz -e "ssh -p xxxx" --remove-source-files /home/einverne/Downloads/*.torrent xxx@ip:/share/Transmission/watch/
但是自从有了 Flexget 我发现借助 Flexget 可以实现很多自动化工作,以前手工执行的工作完全可以解放出来。比如将 PT 中收藏的内容自动下载到硬盘中,比如自动下载 PT 中最近更新的 Free 种子。
docker install
使用 Docker 进行安装,我这里用的是 wiserain/flexget
镜像:1
这里的 PUID,PGID 可以在终端使用 id
命令来查看,替换成当前用户的 ID 即可。
docker run -d \
--name=flexget \
-e PUID=1000 \
-e PGID=1000 \
-e FG_WEBUI_PASSWD=yourhorriblesecret \
-e FG_LOG_LEVEL=info \
-e TZ=Asia/Shanghai \
-p 5050:5050 \
-v ~/flexget/config:/config \
-v ~/flexget/data:/data \
wiserain/flexget
说明:
~/flexget/config
: 目录中是 flexget 的配置文件~/flexget/data
: 目录保存 Flexget 下载的文件
Plugins
flexget 更多的插件可以在这里 查到。
配置详解
进入后台,或者直接编辑配置文件夹中的 config.yml
文件都可以直接对 flexget 进行配置,更推荐在命令行中进行修改。
一份简单的配置
先看一个最简单的配置,仅有一个 task,并且只定义了一个定时器。
web_server:¬
bind: 0.0.0.0¬
port: 5050¬
web_ui: yes¬
¬
tasks:¬
btschool:¬
rss: http://example.com/rss
# 种子的下载目录
download: /data¬
# 把 RSS 链接里的所有种子都下载下来,不做过滤
accept_all: yes¬
¬
schedules:¬
- tasks: '*'¬
interval:¬
minutes: 60¬
上面的配置一目了然,也不过多解释,下面就单独演示一下稍微复杂一些的用例,比如过滤标题,文件大小,等等。
稍微复杂一些的配置
通过正则表达式过滤标题
# tasks 定义多个任务,在下方定义
tasks:
# 自定义 task 名字
task_name:
rss: http://example.com/torrentrss.php
# 可选项 yes/no,是否下载全部内容,还是按条件过滤
accept_all: no
regexp:
accept:
- some-title
reject:
- 1080
from: title
content_size:
min: 1000
max: 10000
strict: no
# 种子下载的路径
download: /data
deluge:
password: "deluge"
path: /data
another-task:
rss: https://example.com/torrentrss.php
accept_all: no
if:
- "'1996' in title": accept
- "'720' in title": accept
content_size:
min: 1000
max: 10000
strict: no
download: /data
deluge:
host: locahost
port: 13222
user: someone
password: "deluge"
path: /data
Transmission 配置
如果要配置 Transmission 可以通过 Transmission 插件配置
tasks:
one-task:
rss: https://example.com/torrentrss.php
accept_all: no
regexp:
accept:
- some-title
reject:
- 1080
from: title
content_size:
min: 3000
max: 180000
strict: no
download: /data
transmission:
host: localhost
port: 9091
username: user
password: "pass"
更多该插件的参数和使用可以参考官网
template
如果需要配置更加复杂的,可以使用 template
templates:
# freespace 插件
freespace:
free_space:
path: /data
space: 10240
qb:
qbittorrent:
path: /data
host: localhost
port: 8080
username: admin
password: password
de:
deluge:
password: "deluge"
path: /data
tr:
transmission:
host: localhost
port: 9091
username: admin
password: "password"
tasks:
BTSchool:
rss: https://pt.btschool.net/torrentrss.php
accept_all: yes
template:
- de
HDChina:
rss: https://hdchina.org/torrentrss.php
accept_all: yes
template:
- qb
qbittorrent:
label: HDChina
CHDBits:
rss: https://chdbits.co/torrentrss.php
accept_all: no
if:
- "'CHDPAD' in title": reject
- "'CHDPad' in title": reject
- "'CHD' in title": accept
template:
- tr
U2:
rss: https://u2.dmhy.org/torrentrss.php
accept_all: no
regexp:
accept_excluding:
- DVD
- ADC
- TTG
- TSDM
from: title
download: /data/torrent/
Mteam:
rss: https://tp.m-team.cc/torrentrss.php
accept_all: no
regexp:
accept:
- sweety
from: title
download: /data/torrent/
GZtown:
rss: https://pt.gztown.net/torrentrss.php
accept_all: no
if:
- "'GZtown' in title": accept
download: /data/torrent/
HDSky:
rss: https://hdsky.me/torrentrss.php
accept_all: yes
download: /data/torrent/
Ourbits:
rss: https://ourbits.club/torrentrss.php
accept_all: yes
download: /data/torrent/
ezrss:
rss: http://eztv.ag/ezrss.xml
accept_all: yes
content_size:
min: 200
max: 4444
strict: no
download: /data
定义 Schedules
常见的定时器,比如定时每 10 分钟跑一次,或者在特定时间执行一次。
设置固定间隔时间执行:
# 针对所有的任务,每隔 10 分钟执行一次
schedules:
- tasks: '*'
interval:
minutes: 10
或者你可以设置更加复杂的定时规则:[^schedule]
[^schedule]
schedules:
- tasks: 'Update-Queue'
interval:
hours: 3
- tasks: 'Series-*'
interval:
minutes: 30
- tasks: 'Movies-*'
interval:
hours: 1
- tasks: 'Update-trakt-*'
interval:
days: 1
at_time: 4:43 am
常用命令
使用 Docker 安装的话,可以手动进入容器执行 sudo docker exec -it flexget /bin/bash
,然后执行:
flexget check
: 用于检查 config.yml 配置文件是否有格式错误。flexget --test execute
: 手动模拟一次 RSS 操作,仅供测试,不会下载种子文件到本地。flexget execute
: 手动执行所有任务flexget execute --tasks Series-*
: 手动执行指定的任务flexget status
: 查看 flexget 的 RSS 记录。flexget execute --learn
: 这样子不会下载种子,但是会把这次 RSS 到的种子标记为已下载,这样之后就不会下到老种了