配置¶
在我们运行 autoremove-torrents
之前,我们需要创建一个 config.yml
文件,它可以用来保存配置。
警告
为了防止误删种子,我们非常建议您在修改了配置文件之后,运行一次 autoremove-torrents --view
以预览运行结果。
本脚本使用YAML语言作为配置文件的语言。YAML语言结构清晰,我认为它比JSON更友好,也更易于学习。
请看下面的例子,这个任务块可以被分成 3 部分。
# A task block
my_task: # Part 1: Task Name
# Part 2: Login Information
client: qbittorrent
host: http://127.0.0.1:9091
username: admin
password: adminadmin
# Part 3: Strategies Block (Remove Conditions)
strategies:
strategy1: # Part I: Strategy Name
# Part II: Filters
categories:
- IPT
# Part III: Remove Condition
ratio: 1
seeding_time: 1209600
strategy2:
all_categories: true
excluded_categories:
- IPT
seeding_time: 259200
# Add more strategies here...
# Part 4: Decide whether to remove and delete data (optional)
delete_data: true
# Add more tasks here...
当然,一个配置文件可以包含多个任务块,并且每个任务块还可以包含多个策略块。每个任务块代表一个BT客户端,每个策略块代表一种种子。
第二部分:登录信息¶
这部分是您的登录信息。
对于 qBittorrent、Transmission、μTorrent¶
对于 qBittorrent、Transmission 或 μTorrent,本程序借助客户端的 WebUI 工作。
对于 Deluge¶
本程序通过 RPC 协议访问 Deluge。
client
:客户端类型,这里填 Deluge 即可。host
:Deluge Daemon 的地址(或域名)以及端口,例如127.0.0.1:58846
。username
:Deluge Daemon 的用户名。password
:Deluge Daemon 的密码。
例:
my_task:
client: deluge
host: 127.0.0.1:58846
username: localclient
password: 357a0d23f09b9f303f58846e41986b36fef2ac88
注解
- 不要在
host
字段中填写任何协议,本程序既不使用 HTTP 协议访问 Deluge,也不用 HTTPS 协议。 - 端口号是 Deluge Daemon 的端口号,不是 WebUI 的端口号。可以在 WebUI 中的 Connection Manager 里看到端口号。
- 如果你的 autoremove-torrents 和 Deluge 运行在不同的计算机上,请确保您的 Deluge 允许接受远程计算机的连接。您可以在 Preferences -> Daemon -> Allow Remote Connections 中修改这个设置。
注解
一般来说,您可以在 ~/.config/deluge/auth
中找到用户名和密码。您也可以在文件末尾加一行以添加一个用户。
有关身份验证方面的更多信息,请访问 https://dev.deluge-torrent.org/wiki/UserGuide/Authentication 。
第三部分:策略块¶
这个部分是策略块。每个策略块也可以分为3个部分。
第1部分:策略名称¶
就像给任务取名一样,给你的策略也取个名字。
第2部分:过滤器¶
当前策略只会对你所选择的种子有效。有9个过滤器可以用。
all_trackers
/all_categories
/all_status
:选择所有的Tracker/分类/种子状态。categories
:选择这些分类的种子。excluded_categories
:排除这些分类的种子。trackers
:选择这些Tracker的种子。excluded_trackers
:排除这些Tracker的种子。status
:选择这些状态的种子,可以选择的状态如下表:
状态 | 备注 |
---|---|
Downloading | / |
Uploading | / |
Checking | / |
Queued | / |
Paused | Transmission 无此状态。 |
Stopped | qBittorrent 无此状态。 |
Error | / |
StalledUpload | μTorrent 无此状态。 |
StalledDownload | μTorrent 无此状态。 |
excluded_status
:排除这些状态的种子,可选的状态如上表。
每个过滤器的结果都是一个种子的集合。
注解
如果 categories
、trackers
、status
三个过滤器的其中两个或者三个同时存在,则程序会取这些集合的交集,并减去 excluded_categories
集合、excluded_trackers
集合和 excluded_status
集合。
注解
- 不要在
trackers
中写套接字,trackers
字段只需要填主机名。例如 https://tracker.site1.com 只填写 tracker.site1.com。 - 在1.4.4以及以后的版本中,如果
categories
、trackers
或status
中的内容只有一项,可以不使用列表,写一个单行文本就行,例如:
categories: cata1
status: uploading
StalledUp
与StalledDown
为 1.4.5 版本新增的状态。在本程序中,Uploading
包含StalledUpload
状态的种子,Downloading
包含StallDownload
状态的种子。
让我们先看一些例子。例如,选择分类是 Movies 或 Games 的种子:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
categories:
- Movies
- Games
# Removing conditions are here
# ...
选择 Tracker 主机名是 tracker.aaa.com 或 x.bbb.com 的种子:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
trackers:
- tracker.aaa.com
- x.bbb.com
# Removing conditons are here
# ...
选择分类是 Movies 或 Games,但 Tracker 不是 tracker.yyy.com 的种子:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
categories:
- Movies
- Games
excluded_trackers:
- tracker.yyy.com
# Removing conditions are here
# ...
选择分类是 Movies 而且状态是正在上传的种子:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
categories:
- Movies
status:
- Uploading
# Removing conditions are here
# ...
第三部分:删除条件¶
有两种设置删除条件的方法。
1. 直接使用删除条件关键词(推荐)¶
直接使用删除条件关键词,有 18 个删除条件。
注解
只要选择的种子满足这些条件之一,它就会被删除。
前 18 个条件如下。为了防止误删种子,某些条件只对特定的状态有效。
条件 | 单位 | 可用状态 | 说明 |
---|---|---|---|
ratio |
全部 | 分享率上限 | |
create_time |
秒 | 全部 | 种子从添加到客户端到现在所经过的时间,以秒为单位。在这里设置一个添加时间的上限,当种子在客户端中存活时间超过此上限后,种子会被直接删除(不管种子现在正处于哪种状态)。 |
downloading_time |
秒 | 全部 | 最长下载时间。 |
seeding_time |
秒 | 全部 | 最长做种时间。 |
max_download |
GiB | 全部 | 种子最大下载量,超过此限制的种子会被删除。 |
max_downloadspeed |
KiB/s | Downloading | 种子的最大下载速度,超过此限制的种子会被删除。 |
min_uploadspeed |
KiB/s | Downloading 或 Uploading | 种子的最小上传速度,低于此速度的种子会被删除。 |
max_average_downloadspeed |
KiB/s | 全部 | 最大平均下载速度,如同 max_downloadspeed 。 |
min_average_uploadspeed |
KiB/s | 全部 | 最小平均上传速度,如同 min_uploadspeed 。 |
max_size |
GiB | 全部 | 种子大小限制,超过此限制的种子会被删除。 |
max_seeder |
全部 | 最大做种者数,超过此限制的种子会被删除。 | |
max_upload |
GiB | 全部 | 种子的最大上传体积,超过此限制的种子会被删除。 |
min_leecher |
全部 | 最小下载者数,低于此设置的种子会被删除。 | |
max_connected_seeder |
Downloading 或 Uploading | 已连接做种者的最大值,如同 max_seeder 。 |
|
min_connected_leecher |
Downloading 或 Uploading | 已连接下载者数的最小值,如同 min_leecher 。 |
|
last_activity |
秒 | 全部 | 种子从停止活动到现在所允许经过的最长时间,即允许的没有上传或下载活动的最长时间。当种子到达此限制时,它就会被删除。 |
max_progress |
百分比 (%) | 全部 | 允许的最大下载进度,最大值是100。 |
upload_ratio |
全部 | 最大上传比率。注意,此处的上传比率与分享率不同,对于每个种子来说,上传比率是指上传量除以种子大小的比值。 |
注解
对于 1.5.4 或以上版本,last_activity
的默认行为已经改变。在默认情况下,last_activity
只考虑曾经活动过的种子;而对于从未活动过的种子,last_activity
不会删除它们。
此外,若需要删除从未活动过的种子,请使用 last_activity: Never
或者 last_activity: None
。
除了上面的删种条件,这里还有 3 个删种条件。当剩下的种子触发这些删种条件时,它们就会被删除。
seed_size
:计算上述选择的种子的总大小。如果总大小超过限制,一部分种子会被删除。需要设置以下两个属性:limit
:总大小限制,以GiB为单位。action
:确定哪部分种子将被删除。可以是以下值:
值 说明 remove-old-seeds 尽量删除旧的种子。 remove-new-seeds 尽量删除新的种子。 remove-big-seeds 尽量删除体积大的种子。 remove-small-seeds 尽量删除体积小的种子。 remove-active-seeds 尽量删除活跃的种子。 remove-inactive-seeds 尽量删除不活跃的种子。 remove-fast-upload-seeds 尽量删除上传速度快的种子。 remove-slow-upload-seeds 尽量删除上传速度慢的种子。 注解
与
last_activity
类似,remove-active-seeds
与remove-inactive-seeds
动作将优先考虑曾经活动过的种子。只有在这些种子都被删除但限制条件仍然没有被满足的情况下,从未活动过的种子才会被删除(但不保证删除顺序)。maximum_number
:判断上述选择的选择的种子的总个数。如果个数超出设置的最大值,一部分种子会被删除,就像 seed_size 条件一样。需要设置以下两个属性:limit
:总个数限制action
:确定哪些种子会被删除,取值与含义同上表。
free_space
:检查磁盘的剩余空间是否符合设定。如果空间不足,一部分种子会被删除,就像 seed_size 条件一样。需要设置以下三个属性:min
:剩余空间最小值,以`GiB`为单位;当目录的剩余空间小于这个值时,删除策略会被触发。path
:需要监控剩余空间的目录action
:删除策略,用于确定哪些种子会被删除。取值与含义同上表
remote_free_space
:同样也是根据磁盘剩余空间来决定哪些种子会被删除,但这里使用BT客户端汇报的磁盘剩余空间大小。它的行为与free_space
一致。min
:允许的剩余空间最小值,以 GiB 为单位。path
:BT客户端需要检查剩余空间大小的目录路径action
:删除策略
注解
如果你的 autoremove-torrents 和你的 BT 客户端运行在不同的机器上,你就需要使用 remote_free_space
去查询剩余空间了。除此之外,free_space
和 remote_free_space
是一样的。
请注意,并不是所有的客户端都支持检测特定目录的剩余空间。截至目前,只有 Deluge 和 Transmission 支持查询特定目录;若在 qBittorrent 中使用 remote_free_space
的 path
参数,它将会被忽略。
这是一个例子。对于分类是 xxx 或 yyy 的种子,分享率大于1或者做种时间大于1209600秒的种子会被删除:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
categories:
- xxx
- yyy
ratio: 1
seeding_time: 1209600
这也是一个例子。对于全体种子,做种时间大于259200秒的种子会被删除:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
seeding_time: 259200
这还有一个例子。对于全体种子,当 /home/myserver/downloads 的剩余空间小于10GiB时,程序会尝试删除体积大的种子:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
free_space:
min: 10
path: /home/myserver/downloads
action: remove-big-seeds
这是最后一个例子。对于全体种子,首先删掉那些分享率大于 3 的种子,然后如果剩下的种子的总大小还大于 500GiB 就尽量删除一些活跃的种子,直到总大小小于 500GiB 为止:
my_task:
client: xxx
host: xxx
username: xxx
password: xxx
strategies:
my_strategy:
ratio: 3
seed_size:
limit: 500
action: remove-active-seeds
2. 使用 remove
关键词 (高级)¶
使用 remove
关键词。remove
关键词是在1.4.0版本中新增的关键词,用于支持复杂的删除条件的设置。remove
关键词后接一个表达式,表达式由以下语法构成:
<参数> <比较运算符> <数值>
参数
:可选列表如下,不区分大小写。注解
某些属性只能在特定的状态中使用,不在可用状态的种子不会被删除。
参数 单位 可用状态 说明 average_downloadspeed
KiB/s 全部 平均下载速度。 average_uploadspeed
KiB/s 全部 平均上传速度。 connected_leecher
/ Downloading 或 Uploading 已连接的下载者数。 connected_seeder
/ Downloading 或 Uploading 已连接的做种者数。 create_time
秒 全部 种子从添加到客户端到现在所经过的时间。 download
GiB 全部 下载量 download_speed
KiB/s Downloading 下载速度 downloading_time
秒 全部 下载时间。 last_activity
秒 全部 种子从停止活动(无上传或下载)到现在所经过的时间。 leecher
/ 全部 下载者数。 progress
% 全部 下载进度。 ratio
/ 全部 分享率 seeder
/ 全部 做种者数。 seeding_time
秒 全部 做种时间 size
GiB 全部 种子大小。 upload
GiB 全部 上传量 upload_ratio
/ 全部 上传量 / 种子大小 upload_speed
KiB/s Downloading 或 Uploading 上传速度 比较运算符
:可用的运算符如下。比较运算符 说明 <
小于 >
大于 =
等于 数值
:指定一个数值,支持整数和小数。该语法直接选出符合条件的种子,并直接删除它们或者与后面的复合表达式配合使用。这是一个例子,它直接删除做种时间大于259200秒的种子:
my_task: client: xxx host: xxx username: xxx password: xxx strategies: my_strategy: remove: seeding_time > 259200
<表达式1> and <表达式2>
以及<表达式1> or <表达式2>
该语法是复合表达式。
and
:选择同时满足表达式1
和表达式2
的种子(交集)。or
:选择满足表达式1
或者表达式2
或者同时满足两个表达式的种子(并集)。
这是一个例子。对于全体种子,分享率超过 2 而且 做种时间超过 60000 秒的种子会被删除:
my_task: client: xxx host: xxx username: xxx password: xxx strategies: my_strategy: remove: ratio > 2 and seeding_time > 60000
这是另外一个例子。对于全体种子,分享率小于 1 或者 做种时间超过 60000 秒的种子会被删除:
my_task: client: xxx host: xxx username: xxx password: xxx strategies: my_strategy: remove: ratio < 1 or seeding_time > 60000
(<表达式>)
一个表达式加上括号以后,它仍然是表达式。使用括号可以改变优先级。可以使用多重括号嵌套。
这是一个例子。对于全体种子,做种时间超过 60000 秒的种子, 或者 分享率大于 3 而且 添加时间超过 1400000 秒的种子会被删除:
my_task: client: xxx host: xxx username: xxx password: xxx strategies: my_strategy: remove: seeding_time > 60000 or (ratio > 3 and create_time > 1400000)
第四部分:删除数据¶
决定是否在删除种子的同时也删除数据。如果此字段未指定,则默认值为 false
。
最后一步……¶
记得检查你的配置文件,确保它按照你的想法工作(不然可能就会误删种子了)。使用以下命令行以查看将要删除的种子,但不会真正地删除它们:
autoremove-torrents --view