PT 之 AutoRemove-Torrents

一、ART 简介

ART (autoremove-torrents) 是一个自动删除种子的工具,官方文档链接。配合之前所述的Flexget,可以实现全自动下种和删种,避免磁盘空间溢出。

ART目前支持三种客户端,分别为 qBittorrent, Transmission, uTorrent。

二、安装

笔者所用平台为 Windows,因此目前只介绍 Windows 平台上的安装和使用。官方手册链接

ART 的运行环境和 Flexget 很相似,可以放在同一个 python 环境下,关于 python 环境搭建,请见PT 之 Flexget,此处不再赘述。

autoremove-torrents 可以直接使用 pip 安装,在命令行中输入:

pip install autoremove-torrents

三、配置示例

ART 的语法和 Flexget 非常类似,都是 yaml 格式语言,并同样用任务块的方式描述每个任务。因此,在 yaml 语法方面,请同样参照PT 之 Flexget中的描述。

和 Flexget 非常相似,ART 配置文件以任务为单位描述自动删除种子的过程。以下述代码为例,这段配置代码描述了一个名为 QB_Remove 的任务。如这个任务名字所描述的一样,该任务和 qbittorrent 客户端进行通信,从 qbittorrent 客户端了解各个种子的信息,然后由 ART 筛选出需要删除的种子,再提交给 qbittorrent 客户端删除。

# 任务名称,可随意更改
QB_Remove:
  # 客户端名称,这里是 qb 客户端的全称
  client: qbittorrent
  # 和客户端通信的 WEB UI 的地址
  host: http://yourhost:yourport
  # WEB UI 的用户名和密码
  username: yourusername
  password: yourpassword
  # 策略块
  strategies:
    # 策略块名称,可随意更改
    m-team-1:
      # 选出 qb 中 tracker 为下述 URL 的种子
      trackers: 
        - tracker.url.for.m-team
      # 过滤器,过滤出满足下述状态的种子
      status:
        - Checking
        - StalledUpload
        - StalledDownload
        - Error
        - Uploading
      # 删除下载速度小于 128 kb/s 或者最后活跃时间大于 72 秒的种子
      remove: download_speed < 128 or last_activity > 72

在上述代码中,可以注意到在 QB_Remove 任务下,除了和 qb 客户端通信的一些配置以外,主要由 strategies 策略块构成。在 ART 的配置文件中,一个任务可以有多个策略块,它们都被定义在关键字 strategies 下面,描述删除种子的各个策略。

在上述策略块里,可以看到定义了一个名为 m-team-1 的删种策略。每个策略的定义逻辑和 Flexget 类似,均遵循 输入-过滤-输出 这样的逻辑。在这个 m-team-1 策略里,首先使用 trackers 关键字来生成输入,即 qb 客户端中 tracker 是馒头站的所有种子。

(tracker 的 URL 可以通过在 qb 客户端中选中种子,然后点击下方的 Tracker 图标来获得,列表中的 URL 项即为 tracker 的 URL)

紧接着该策略是一个过滤器,过滤器负责上一个输入中筛选出的目标种子,上述代码中使用了 status 关键字,该关键字可以过滤出状态满足正在校验(Checking),上传已暂停(StalledUpload),下载已暂停(StalledDownload),错误(Error),和正在上传(Uploading)的种子。可以根据自己需要选择适当的关键字,过滤出想要被删除的种子。

最后 remove 关键字顾名思义,是一个输出要删除的种子信息的过程,他根据后续条件(下载速度小于 128 kb/s 或者最后活跃时间大于 72 秒)从上一次过滤(Status)的结果中,选出满足条件、需要删除的种子。并将这些种子提交给 qb 客户端删除。至此,一个删种策略完成。

回顾一下上述过程,该策略首先使用 trackers 关键字得到 qb 中一系列种子的集合(输入),然后通过 status 关键字进行过滤(过滤),然后满足 status 条件的种子交给下一个操作处理,即 remove 操作,remove 操作从这些过滤后的种子中选出需要被删除的种子(过滤),提交给 qb 删除(输出)。每个策略块下的删种配置,几乎都是遵循这样的逻辑。

值得注意的是,每个策略快下可以定义多个策略,名字任意,如下面就是定义了两个删种策略的策略块,ART 可以按照任意顺序执行策略块下的各个策略。此外,需要在配置文件中添加 delete_data: true 关键字来使客户端真正删除下载的文件。

QB_Remove:
  # 客户端配置,省略
  # 策略块
  strategies:
    # 策略一
    m-team-1:
      # 策略一的删种策略
    # 策略二
    e_opt:
      # 策略二的删种策略
  delete_data:true

四、各个删种条件

上一节主要说明 ART 配置文件的基本框架和写法。了解配置文件(特别是策略块)的写法和逻辑之后,就可以组合不同的过滤关键字来实现不同的删种策略了,这里对几个常用的过滤关键字进行简要说明。完整的说明请参照官方文档

1. free_space

该关键字监控 path 下的剩余空间,小于 min 大小时执行 action 里的操作:

free_space:
  min: 32 # 单位 GB
  path: /downloads
  action: remove-inactive-seeds

这段配置描述当 downloads 目录下空间小于 32 GB 时,删除过滤出的种子集合中最不活跃的那些种子。

2.maximum_number

该关键字监控当前任务下客户端的种子数量,如果超过一定阈值(limit),则执行 action 里的操作:

maximum_number:
  limit: 8192
  action: remove-inactive-seeds

3.remove

remove 是一个高级复合条件语句,用于支持复杂的删除条件的设置。

remove: seeding_time > 72000 and (ratio > 3 or last_activity > 1800) and upload_speed < 100

该语句删除种子中最终时间大于 72000 秒,且(分享率大于 3 或最后活跃时间大于 1800 秒),且上传速度小于 100kb/s 的种子。

五、运行

使用 ART 的方式与 Flexget 类似,都是在所建立的 python 环境下直接执行程序名,并可以通过参数 -c [path] 来指定配置文件的位置。

(python-3-8) autoremove-torrents -c your-config.yml -l your-log-dir

执行一次后,可以在 your-log-dir 的位置找到执行的日志文件,其中记录了 ART 执行的细节,包括从客户端获取多少种子,删除了哪些种子等等。

如果需要 ART 定期运行,Windows 下可以通过任务计划程序定期执行 ART,Linux 下可以通过添加 CRON 任务来实现。本文在此不再赘述。

六、总结

总的来说,ART 的配置相较于 Flexget 还是简单很多的,基本上笔者配置一个根据剩余磁盘空间删除最不活跃的种子就足够使用。ART 程序运行时,可以加上 -l 参数来指定日志文件位置,如果出现了非预期结果,可以通过检查日志来确定问题所在。

七、参考资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注