前言
前文讲解如何使用FlexGet订阅IRC,其中提到
有的站点的announce频道为公开频道;有的站点的为私密频道,需要借助key或提前注册好nickname以便机器人进入频道
应对以上情形,本文讲解作者遇到的两种验证形式以及一种可能出现的形式,以供参考
同时某站新开#announce频道,借此机会简单写写如何写一个.tracker
模板~
三种验证方式
站点一般要求机器人nickname与sitename有所关联
假设sitename为starboy,机器人就取名为starboy_bot
密钥验证
获取IRCkey与“接头”机器人
通常使用密钥验证的频道都会在控制面板或IRC页中有类似IRCkey信息,这是重要凭证请妥善保管!如果找不到可以查看查看站内Wiki中IRC的说明
说明中有“接头”机器人的nickname以及暗号,类似如图
配置
根据站点提供方式不同,invite_message形式不同,请按需选择
irc: irckey_irc: passkey: '你的passkey' nickname: 'starboy_bot' # 与其他不同验证不同之处在于需要invite_nickname与invite_message invite_nickname: '接头机器人nickname' # 根据站点提供方式不同,invite_message形式不同 invite_message: 'identify 你的IRCkey' invite_message: 'IRC页提供的暗号' tracker_file: 'irckey.tracker' port: 6697 use_ssl: yes channels: ["#announce"] task: just_a_task
nickname验证
nickname需要先行注册,需要一个客户端登录IRC
安装IRC客户端
这里推荐客户端thelounge连接IRC,使用Docker安装
docker run --detach \ --name thelounge \ --publish 19000:9000 \ --volume ~/.thelounge:/var/opt/thelounge \ --restart always \ thelounge/thelounge:latest
docker-compose请使用此模板,请根据自身修改 19000 以及 ~/.thelounge
启动thelounge后,需要为thelounge添加一个登录账户
docker exec --user node -it thelounge thelounge add MyUser
MyUser可以改为你想要的用户名,回车输入后会要求设置一个密码
登录IRC
访问
http://<Docker所在设备IP>:19000
,使用上一步设置的用户名以及密码登录而后会出现下面的界面,按右侧解释填入,首次登录时认证处请勾选无需认证
设置完毕后点击Connect,连接成功后会出现类似于这样的信息
接下来需要先将自己的nickname注册上,在页面下方聊天框输入
/msg NickServ REGISTER 密码 邮箱
请将 密码 与 邮箱 替换为自己的,请务必记住密码!
注册完毕后,推荐断开与服务器的连接并重新连接,验证自己的nickname是否已经注册成功
本次登录就可以使用 Authentication - Username+password,并填入username与设置的密码的方式进行认证,或者依旧保持 No authentication 并使用命令认证
/msg NickServ IDENTIFY starboy 密码
请将 starboy 与 密码 替换为自己的
为机器人注册nickname
在上一步登录后,在聊天框内依次输入
/nick starboy_bot /msg NickServ IDENTIFY starboy 密码 /msg NickServ GROUP
这样就完成了机器人nickname与你的nickname的绑定
配置
irc: nickname_irc: passkey: '你的passkey' nickname: 'starboy_bot' # 与其他不同验证不同之处在于需要nickserv_password nickserv_password: '你的IRC密码' tracker_file: 'nickname.tracker' port: 6697 use_ssl: yes channels: ["#announce"] task: just_a_task
密码验证
目前还没发现有站点使用该种方式认证,但既然irc_bot插件支持,就提及下
获取频道+频道密码
通常使用频道密码的都会在站内Wiki中IRC的说明有频道+频道密码信息
配置
irc: password_irc: passkey: '你的passkey' nickname: 'starboy_bot' tracker_file: 'password.tracker' port: 6697 use_ssl: yes # 与其他不同验证不同之处在于需要channels内输入密码 channels: ["#announce 频道密码"] task: just_a_task
.tracker
模板
由于各站Announce信息不同,模板所需要定义到的参数也不同,为了信息(装逼)最大化,将会尽可能多的使用模块获取及处理参数,在自己写的时候可以视情况删减
注意xml语法类似于html,需要有开始标签起始、结束标签终止
trackerinfo
<trackerinfo type="站点缩写" shortName="站点缩写" longName="站点全程" siteName="">
如果不想填写可以留空
<settings></settings>
<settings> <description text="Copy your passkey from the control panel and paste it in the field below."/> <passkey/> </settings>
Description内容主要是给irssl配置看的,毕竟模板是给autodl-irssi用的,但依然建议写上作为提醒
<servers></servers>
<servers> <server network="" serverNames="站点IRC地址" channelNames="#站点announce" announcerNames="announce机器人名" /> </servers>
serverNames及channleNames均由站点提供,announce机器人需要加入频道观察
<parseinfo>
以某站为例,它的announce信息是这样的
Web-DL / HEVC Dolby Vision / 1080p - Pamela a love story 2023 1080p NF WEB-DL DDP 5.1 DV HDR H.265-FLUX - 2.57 GiB - https://某站/details.php?id=549527
大致可以分为
介质 / 编码 / 分辨率 - 种子名 - 体积 - 种子链接
那么需要正则去匹配它,将其一截截获取到
<linepatterns>
<linepatterns> <extract> <regex value="^(.*) - (.*?) - (.*) - https?:\/\/(.*\/).*?id=(\d+)$"/> <vars> <var name="$releaseTags"/> <var name="torrentName"/> <var name="$torrentSize"/> <var name="$baseUrl"/> <var name="$torrentId"/> </vars> </extract> </linepatterns>
$releaseTags:Announce中截取的标签,之后会进一步处理
torrentName:Announce中截取的种子名
$torrentSize:Announce中截取的种子体积
$baseUrl:Announce中截取的站点网址
$torrentId:Announce中截取的种子id
<linematched>
<linematched> <extracttags srcvar="$releaseTags" split="/"> <setvarif varName="source" regex="^(?:UHD Blu-ray|Blu-ray|Web-DL)$"/> <setvarif varName="codec" regex="^(?:(HEVC\s(?:Dolby Vision|10bit)))$"/> <setvarif varName="resolution" regex="^(?:2160p|1080p)$"/> <!--Ignored--> <regex value=""/> </extracttags> <!--https://base.url/download.php?id=<id>&passkey=<passkey>--> <var name="torrentUrl"> <string value="https://"/> <var name="$baseUrl"/> <string value="download.php?id="/> <var name="$torrentId"/> <string value="&passkey="/> <var name="passkey"/> </var> </linematched>
<extracttags
主要用来处理先前截取到的标签信息,这里把他分为了三个部分source
/codec
/resolution
。一般都能在搜索箱的分类中找到这些定义<!--https://base.url/download.php?id=<id>&passkey=<passkey>-->
作为下载链接的范例,np架构的站点普遍为这种样式,往下的内容就是拼接下载链接的过程,拼接成范例的样子其中有一个
&
可能让人疑惑,这是xml语法中的转义,可以参考这里<ignore>
没啥需要忽略的,留空即可,但必须要有
<ignore>
完整配置
以上就是全部模板内容了,就不贴完整代码了,用截图示意,请注意结束标签和缩进!