配置

在我们运行 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 工作。

  • client:客户端类型,不区分大小写。
  • host:WebUI的访问地址。该地址必须指明一个协议(http://https:// )。
  • username:WebUI的用户名。
  • password: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

注解

  1. 不要在 host 字段中填写任何协议,本程序既不使用 HTTP 协议访问 Deluge,也不用 HTTPS 协议。
  2. 端口号是 Deluge Daemon 的端口号,不是 WebUI 的端口号。可以在 WebUI 中的 Connection Manager 里看到端口号。
  3. 如果你的 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:排除这些状态的种子,可选的状态如上表。

每个过滤器的结果都是一个种子的集合。

注解

如果 categoriestrackersstatus 三个过滤器的其中两个或者三个同时存在,则程序会取这些集合的交集,并减去 excluded_categories 集合、excluded_trackers 集合和 excluded_status 集合。

注解

  1. 不要在 trackers 中写套接字,trackers 字段只需要填主机名。例如 https://tracker.site1.com 只填写 tracker.site1.com。
  2. 在1.4.4以及以后的版本中,如果 categoriestrackersstatus 中的内容只有一项,可以不使用列表,写一个单行文本就行,例如:
categories: cata1
status: uploading
  1. StalledUpStalledDown 为 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
      # ...

第三部分:删除条件

有两种设置删除条件的方法。

2. 使用 remove 关键词 (高级)

使用 remove 关键词。remove 关键词是在1.4.0版本中新增的关键词,用于支持复杂的删除条件的设置。remove 关键词后接一个表达式,表达式由以下语法构成:

  1. <参数> <比较运算符> <数值>

    参数:可选列表如下,不区分大小写。

    注解

    某些属性只能在特定的状态中使用,不在可用状态的种子不会被删除。

    参数 单位 可用状态 说明
    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 下载速度
    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
    
  2. <表达式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
    
  3. (<表达式>)

    一个表达式加上括号以后,它仍然是表达式。使用括号可以改变优先级。可以使用多重括号嵌套。

    这是一个例子。对于全体种子,做种时间超过 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