前言

因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。IRC的工作原理非常简单,您只要在自己的PC
上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。

国外站点多使用该工具作为群组聊天、站务处理与种子发布,其中种子发布相比RSS更具有时效性。大部分用户多使用irssi作为订阅工具或干脆使用自带IRC功能的rutorrent作为客户端,鲜有使用FlexGet的irc插件。

本文讲解如何使用FlexGet订阅IRC

安装FlexGet的IRC插件

某些Docker已经预装该插件,可以跳过该步骤

未安装的请使用ssh连接到机器,输入

pip install irc_bot

请注意机器上是否同时安装了Python2与Python3,FlexGet是基于Python3的,那么命令也需要变更为

pip3 install irc_bot

这样就完成了FlexGet的IRC插件安装

站点模板

感谢autodl-community/autodl-trackers项目,其提供了众多站点的IRC模板,方便直接调用而不需要自己编写。

首先将整个项目下载,点击 Code - Download ZIP

1_template

打开下载到的压缩包,进入trackers文件夹,按需将对应站点文件解压出来

以FiList为例,找到FlexGet配置文件所在目录,在该目录下新建trackers文件夹,将FiList.tracker解压至该文件夹下

IRC登录

各个站点登录IRC的方式各有不同,而且大部分站点仅允许机器人进入announce频道,请注意不要让机器人进错频道,否则后果自负!不过配置文件内一般都指定了announce频道名,以上只是提醒

同时有的站点的announce频道为公开频道;有的站点的为私密频道,需要借助key或提前注册好nickname以便机器人进入频道

以FiList为例,该站的IRC配置请访问 https://filist.io/irc.php 获取,提供了诸如地址、端口、登录命令等信息

配置模板

由于各站Announce的格式不同,配置模板所需要的参数以及能获取到的参数也有所不同

以Fi**List.tracker为例

  • <settings></settings>

      <settings>
            <description text="Go to http://fi**list.io/getrss.php to get the RSS feed link. Paste it (Ctrl+V) into the text box below to automatically extract passkey."/>
            <passkey/>
        </settings>

    需要 passkey 作为下载种子凭证

    该站的 passkey 可以在种子链接、RSS生成页或者Profile中获取

  • <var name=""/>

    2_var

    torrentName:Announce中截取的种子名,通过关键词可以从中过滤出你想要的例如分辨率/编码格式等信息

    category:Announce中截取的分类名,站点的搜索箱分类即为此处分类

    想要调用这些参数,必须以 irc_ 作为开头,例如irc_torrentname 以及 irc_category

    根据自身需求在配置中调用并过滤这些参数,实现订阅目标

FlexGet配置

在配置文件任意位置新起一行,添加如下内容,该段内容与 task 同级

如果你还不知道YAML规范,建议先找个教程阅读学习

irc:
  fl_irc:
    passkey: '你的passkey'
    nickname: '你的站点用户名_bot'
    # 引用先前下载的模板、使用ssl端口链接以及加入announce频道
    tracker_file: 'fi**list.tracker'
    port: 6697
    use_ssl: yes
    channels: ["#announce"]
    # 设置任务但不建议条件过多,可能导致什么都无法获取到
    task_re:
      # TV且Seriale HD分类
      - task: fl_tv
        patterns:
          - regexp: (Seriale HD)
            field: irc_category
      # freeleech!
      - task: fl_freeleech
        patterns:
          - regexp: true
            field: irc_freeleech
      # Movie且Bluray或4K Bluray+REMUX
      - task: fl_movie
        patterns:
          - regexp: (Filme (|4K) Blu-Ray)
            field: irc_category
          - regexp: Remux
            field: irc_torrentname

保存配置,以Daemon模式启动FlexGet

flexget daemon start -d --autoreload-config

Docker默认以daemon模式运行,如果是用的是webUI编辑,直接save即可

如果成功你会在日志中看到如下

3_log

这代表了成功加入IRC频道

之后还需要在 task 中引用IRC中定义的任务名并发布到下载器

tasks:
  fl_tv:
    max_reruns: 0
    qbittorrent:
      host: localhost
      port: 8080
      username: qbWEBUI用户名
      password: qbWEBUI密码
      label: 剧集
      path: /PT/TV
  fl_movie:
    max_reruns: 0
    transmission:
      host: localhost
      port: 9091
      username: trWEBUI用户名
      password: trWEBUI密码
      label: 电影
      path: /PT/MOVIE

这样任务就会下载到指定客户端及路径中去了

IRC本身就为一个服务,所以不需要另外使用触发器(crontab或schedule)触发

至此,就能使用FlexGet通过IRC自动订阅种子了

最小配置

如果你是第一次使用FlexGet,这里将上面提到的配置整合形成一个最小化能够运行的配置

template:
  trDianying:
    transmission:
      host: localhost
      port: 9091
      username: trWEBUI用户名
      password: trWEBUI密码
      path: /PT/MOVIE
  qbDianshiju:
     qbittorrent:
      host: localhost
      port: 8080
      username: qbWEBUI用户名
      password: qbWEBUI密码
      path: /PT/TV

irc:
# fi**list站点irc配置
  fl_irc:
    passkey: '你的passkey'
    nickname: '你的站点用户名_bot'
    # 引用先前下载的模板、使用ssl端口链接
    tracker_file: 'fi**list.tracker'
    port: 6697
    use_ssl: yes
    # 指定加入announce频道
    channels: ["#announce"]
    # 设置任务但不建议同时条件过多,可能导致什么都无法获取到
    task_re:
      # TV且Seriale HD分类
      - task: fl_tv
        patterns:
          - regexp: (Seriale HD)
            field: irc_category
      # freeleech!
      - task: fl_freeleech
        patterns:
          - regexp: true
            field: irc_freeleech
      # Movie且Bluray或4K Bluray分类+REMUX
      - task: fl_movie
        patterns:
          - regexp: (Filme (|4K) Blu-Ray)
            field: irc_category
          - regexp: Remux
            field: irc_torrentName

#任务模块
tasks:
  fl_tv:
    max_reruns: 0
    template: qbDianshiju
  fl_movie:
    max_reruns: 0
    template: trDianying

特别感谢

FlexGet/irc

autodl-community/autodl-trackers

mkgeeky/autodl-trackers

Cookbook/Users/qvazzler