mine.pt irc自动订阅指南

本文原始发表于mine.pt的一篇irc自动下载教学贴。

本站提供在国外站点十分流行的irc自动订阅功能。irc订阅相对于rss订阅有超低延迟的优势,甚至网页还没刷新,你就能下到最新的种子。这一功能在国外站点几乎是必备,只是国内由于irc用户少,没有站点愿意开发这个功能。很幸运,本站的开发者同时是一位irc大神,他在网站设计之初就加入了这一功能,下面我将详细介绍使用irc实现自动订阅的办法。

本教程以Linux系统上的实现为主,实现需要一定基础。有空我再单独写一篇Windows的教程。

工具介绍

irssi

irssi是一款非常流行的ncurses界面irc客户端,支持perl脚本。大多数Linux发行版本可以直接安装irssi

1
2
3
4
5
# Ubuntu
sudo apt install irssi

# Archlinux
sudo pacman -S irssi

autodl-irssi

项目地址,专门用来实现irc自动订阅的irssi脚本。其功能强大、完善,我的办法也是借助这一脚本实现。

脚本的安装参考其官方文档,首先安装脚本依赖的perl模块,可以用cpan安装

1
cpan Archive::Zip Net::SSLeay HTML::Entities XML::LibXML Digest::SHA JSON JSON::XS

也可以用系统的软件包管理器安装(个人推荐)

1
2
# Archlinux
sudo pacman -S perl-archive-zip perl-digest-sha1 perl-html-parser perl-json perl-json-xs perl-net-ssleay perl-xml-libxml perl-xml-libxslt

然后安装autodl-irssi脚本

1
2
3
4
5
6
7
8
mkdir -p ~/.irssi/scripts/autorun
cd ~/.irssi/scripts
curl -sL http://git.io/vlcND | grep -Po '(?<="browser_download_url": ")(.*-v[\d.]+.zip)' | xargs wget --quiet -O autodl-irssi.zip
unzip -o autodl-irssi.zip
rm autodl-irssi.zip
cp autodl-irssi.pl autorun/
mkdir -p ~/.autodl
touch ~/.autodl/autodl.cfg

这个脚本会自动加载,autodl.cfg是配置文件,后面会说怎么写。

注册本站irc服务器昵称

首先我们需要注册一个本站irc服务器的昵称。

本站irc服务器的基本信息

1
2
3
4
ircAnnounce.server = irc.mean.im
ircAnnounce.port = 16667
ircAnnounce.channel = #mineAnnounce
ircAnnounce.anncounceNick = mineAnnouncer

注册昵称

本教程以irssi为例,详细描述注册昵称步骤,当然你完全可以用你自己习惯的irc客户端完成这一任务。

首先连接irc服务器

1
/connect irc.mean.im/16667

注册昵称,推荐与网站昵称保持一致,方便以后别人认出你

1
2
/nick <nick>
/msg NickServ REGISTER <passwd> <email>

系统会给你发一个邮件,里面有确认信息

1
/msg NickServ CONFIRM <code>

确认成功后,以后登录就可以用自己的密码来验证身份了,第二次进入irc服务器只需要输入

1
2
/nick <nick>
/msg NickServ IDENTIFY <passwd>

记住你的昵称、邮箱、密码等信息,在使用autodl-irssi的时候要用到。

autodl-irssi的tracker模板文件

autodl-irssi本身提供了很多站点的模板文件,详见autodl-trackers ,这个是官方维护的一个列表。由于我们是新站点,还没有被收录,现在只能自己手动写一个凑合着用。待功能开发完善了我会尝试提pr,把我们的站点也加入到官方列表中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0"?>
<trackerinfo
type="mine"
shortName="MINE"
longName="MINEPT"
siteName="mine.pt">

<settings>
<description text="Find your passkey first."/>
<passkey/>
</settings>

<servers>
<server
network="Mean"
serverNames="irc.mean.im"
channelNames="#mineAnnounce"
announcerNames="mineAnnouncer"
/>
</servers>

<parseinfo>
<linepatterns>
<extract>
<regex value="uploaded - torrent: (.*), type: (.*), size: (.*), (.*)sale: (.*), url: (https?://mine.pt/api/torrents/download/.*), at (.*)"/>
<vars>
<var name="torrentName"/>
<var name="category"/>
<var name="$torrentSize"/>
<var name="$tvserialInfo"/>
<var name="$freeleechInfo"/>
<var name="$baseUrl"/>
<var name="$date"/>
</vars>
</extract>
</linepatterns>
<linematched>
<var name="torrentUrl">
<var name="$baseUrl"/>
<string value="/"/>
<var name="passkey"/>
</var>
</linematched>
<ignore>
</ignore>
</parseinfo>
</trackerinfo>

把上面这个文件命名为MINE.tracker,放在目录~/.irssi/scripts/AutodlIrssi/trackers/下,autodl-irssi会自动加载其中的信息。

autodl-irssi的配置文件

前面提到过这个文件,位置在~/.autodl/autodl.cfg,填写如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[options]
max-saved-releases = 100
save-download-history = true
download-duplicates = true
upload-type = watchdir
upload-watch-dir = /home/<user>/rtorrent/watch/start

[irc]
auto-connect =
user-name =
real-name =
output-server =
output-channel =
close-nickserv = true

[server irc.mean.im]
port = 16667
nick = <nick>
ident-password = <passwd>
ident-email = <email>

[channel irc.mean.im]
name = #mineAnnounce

[tracker mine]
passkey = <passkey>

[filter mine]
match-sites = mine

这份配置文件的效果是监视本站的irc订阅频道,自动下载所有的种子文件到目录/home/<user>/rtorrent/watch/start下。注意所有<>的内容要替换成你实际的情况(不用尖括号括起来)。passkey到你网站个人信息中查询,切记保密,不要向他人或者公开场合发自己的passkey。关于autodl-irssi的配置文件更多的信息请阅读官方文档

当前由于irc报告的内容中并没有种子标签相关的信息,还无法实现过滤器的编写,相关功能以后会补充。

使用

用screen或者tmux开个窗口,运行irssi即可,所有的脚本会自动加载。