本文原始发表于mine.pt的一篇irc自动下载教学贴。
本站提供在国外站点十分流行的irc自动订阅功能。irc订阅相对于rss订阅有超低延迟的优势,甚至网页还没刷新,你就能下到最新的种子。这一功能在国外站点几乎是必备,只是国内由于irc用户少,没有站点愿意开发这个功能。很幸运,本站的开发者同时是一位irc大神,他在网站设计之初就加入了这一功能,下面我将详细介绍使用irc实现自动订阅的办法。
本教程以Linux系统上的实现为主,实现需要一定基础。有空我再单独写一篇Windows的教程。
工具介绍
irssi是一款非常流行的ncurses界面irc客户端,支持perl脚本。大多数Linux发行版本可以直接安装irssi
1 2 3 4 5
| sudo apt install irssi
sudo pacman -S irssi
|
项目地址,专门用来实现irc自动订阅的irssi脚本。其功能强大、完善,我的办法也是借助这一脚本实现。
脚本的安装参考其官方文档,首先安装脚本依赖的perl模块,可以用cpan
安装
1
| cpan Archive::Zip Net::SSLeay HTML::Entities XML::LibXML Digest::SHA JSON JSON::XS
|
也可以用系统的软件包管理器安装(个人推荐)
1 2
| 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本身提供了很多站点的模板文件,详见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/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 =
[tracker mine] passkey = <passkey>
[filter mine] match-sites = mine
|
这份配置文件的效果是监视本站的irc订阅频道,自动下载所有的种子文件到目录/home/<user>/rtorrent/watch/start
下。注意所有<>的内容要替换成你实际的情况(不用尖括号括起来)。passkey到你网站个人信息中查询,切记保密,不要向他人或者公开场合发自己的passkey。关于autodl-irssi的配置文件更多的信息请阅读官方文档
当前由于irc报告的内容中并没有种子标签相关的信息,还无法实现过滤器的编写,相关功能以后会补充。
使用
用screen或者tmux开个窗口,运行irssi
即可,所有的脚本会自动加载。