; torrent rss reader v2 ; LtGuide (ltguide xscripters.com) ; 11 January 2006 ; msg channel alias -l rss.chan return #torrent ; site to connect to alias -l rss.site return www.somesite.com ; file you want to retrieve alias -l rss.page return torrents/rss.php ; notifies of update to rss ; (1 for on, 0 for off) alias -l rss.achk return 0 ; displays X chars of description ; (integer >0 for on, 0 for off) alias -l rss.desc return 50 ; 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-5])?$/:#:{ 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 ( isin %r) || ( isin %r) { tokenize 32 $1-2 $calc($3 +1) $4 sockmark rss $1- } if (!$3) halt if ($calc($3 % 2)) { if ($4) { if ( 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,/(.*)</) if ($regml(1)) { var %i $v1 if (!%rss_latest) %rss_latest = %i if ($3 == 1) && (%rss_latest != %i) { rss.msg $1 LATEST UPDATE %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($v1,&,&) } 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 } }