rendered paste body; rss reader v2
; LtGuide (ltguide xscripters.com)
; 11 January 2006
; msg channel
alias -l rss.chan return #completosbr
; site to connect to
alias -l rss.site return www.completosbr.org
; file you want to retrieve
alias -l rss.page return /rss.php
; notifies of update to rss
; (1 for on, 0 for off)
alias -l rss.achk return 1
; displays X chars of description
; (integer >1 for on, 0 for off)
alias -l rss.desc return 0
; you can trigger the auto check (msgs if there is a new update) with /rss #chan 0
; or you can send the last two updates with /rss #chan 2
on $*:text:/^!rss( [1-15])?$/:#:{
if (!%rss_spam) && ($chan == $rss.chan) {
set -u10 %rss_spam 1
rss $chan $2
}
}
on me:*:join:#:{
if ($chan == $rss.chan) && ($rss.achk) rss $rss.chan 0
}
on *:unload:{ unset %rss_latest %rss_desc }
on *:sockopen:rss:{
if (!$sockerr) {
var %s sockwrite -n rss
%s GET / $+ $rss.page HTTP/1.0
%s Host: $rss.site
%s
}
else rss.msg $gettok($sock(rss).mark,1,32) unable to retrieve rss feed, $sock(rss).wsmsg
}
on *:sockread:rss:{
var %r
sockread %r
if ($sockerr) return
tokenize 32 $sock(rss).mark
if (<item> isin %r) || (</item> isin %r) {
tokenize 32 $1-2 $calc($3 +1) $4
sockmark rss $1-
}
if (!$3) halt
if ($calc($3 % 2)) {
if ($4) {
if (</description> isin %r) {
rss.msg $1 %rss_desc
unset %rss_desc
sockmark rss $1-3 0
}
elseif ($len(%rss_desc) < $calc($rss.desc + $4)) {
%rss_desc = %rss_desc $iif($calc($v1 + $len(%r)) > $v2,$left(%r,- $+ $calc($v1 - $v2)) $+ ...,%r)
}
}
.echo -q $regex(%r,/<title>(.*)</)
if ($regml(1)) {
var %i $v1
if (!%rss_latest) %rss_latest = %i
if ($3 == 1) && (%rss_latest != %i) {
rss.msg $1 14Novo Post 4.::. 14www.Completos10BR14.org
%rss_latest = %i
}
elseif (!$2) {
sockclose rss
halt
}
rss.msg $1 $+(,%i,)
}
if ($rss.desc) {
.echo -q $regex(%r,/<description>(.*)</)
if ($regml(1)) {
var %i $v1
rss.msg $1 %rss_desc $iif($len(%i) > $rss.desc,$left(%i,$v2) $+ ...,%i)
unset %rss_desc
}
elseif (<description> isin %r) sockmark rss $1-3 $calc($len(%rss_desc) +1)
}
.echo -q $regex(%r,/<peers>(.*)</)
if ($regml(1)) %rss_desc = $replacecs($v1,EE,ee,ERS,ers,D,d,CH,ch,$chr(40),$null,$chr(41),$null) /
.echo -q $regex(%r,/<link>(.*)</)
if ($regml(1)) rss.msg $1 $replace(4[15 $v1 4],&,&)
}
elseif (!$2) || ($3 == $calc($2 *2)) sockclose rss
}
on *:sockclose:rss:{
rss.msg $gettok($sock(rss).mark,1,32) unable to retrieve rss feed, $sock(rss).wsmsg (socket closed prematurely)
}
alias -l rss.msg {
if ($me ison $1) msg $1-
elseif ($1 == $rss.chan) .timerrss.achk off
}
alias rss {
if ($rss.achk) .timerrss.achk 0 300 rss $rss.chan 0
else .timerrss.achk off
if (!$sock(rss)) && ($me ison $1) {
sockopen rss $$rss.site 80
sockmark rss $1 $iif($2 isnum 0-5,$2,3) 0 0
}
}