URL fetcher
Platform: mIRC
Published Feb 19, 2008
Updated Feb 23, 2008
Website title fetcher by Lindrian
Simply paste into remotes and when someone says a URL it will trigger.
(You can't trigger it yourself, since there's no INPUT event.)
Enjoy! :)
Update: made it only trigger once on each website, so if you post the same website 10 times it'll only show info about it once.
on *:TEXT:*:#: rtc $chan $1-
on *:ACTION:*:#: rtc $chan $1-
on *:sockopen:website.*: {
if (!$sockerr) {
tokenize 32 $($+(%,$sockname),2)
sockwrite -n $sockname GET $2 HTTP/1.1
sockwrite -n $sockname Host: $1
sockwrite -n $sockname User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8)
sockwrite -n $sockname Accept: */*
sockwrite -n $sockname Connection: Close
sockwrite -n $sockname $crlf
}
else unset $+(%,$sockname)
}
on *:sockread:website.*: {
var %x, %z = $sockname, %e = $($+(%,%z),2)
sockread -f %x
if ($regex(%x,/<title[\w\s="]*>(.*?)<\/title>/i)) {
tokenize 32 %e
var %s = $btc(Url:) $+(http://,$+($1,$iif($2 != /,$2))) - $btc(Title:) $ptc($regml(1)) $iif($4,$4)
msg $3 $iif(c isincs $chan($3).mode,$strip(%s),%s)
unset $+(%,$(%z,2))
.sockclose %z
}
if (*HTTP*302* iswm %x) set -e %web.tmp 1
if (Location: isin %x) {
if ($mtc(%x)) {
tokenize 32 %e
sockclose %z
soc $regml(web,1) $iif($regml(web,2),$v1,/) $iif($3,$3,1) %z $iif(%web.tmp,Redirected)
unset %web.tmp
}
}
}
on *:sockclose:website.*: unset $+(%,$sockname)
alias -l soc {
var %x = $iif($4,$4,$+(website.,$r(a,z),$r(a,z),$r(a,z),$r(0,9),$r(0,9),$r(0,9)))
set -e $+(%,%x) $1-2 $iif($3 ischan && $me ison $3,$3) $iif($5,$ntc($5))
sockopen %x $1 80
}
alias -l mtc return $regex(web,$1,/(?:https?:\/\/)?((?:www\.)?[\w-.]+\.(?>[a-z]{2,4})(?![a-z]))([\w-_#?=%.\/&?]+)?/ig)
alias -l ptc return $replacecs($1,—,-,",",&,&,<,<,>,>,é,$chr(233),ç,$chr(231),ç,$chr(231),ñ,$chr(241),Ñ,$chr(209),Ü,$chr(220),ô,$chr(244))
alias -l btc return $+($chr(2),$1,$chr(2))
alias -l ntc return $+($chr(40),$1,$chr(41))
alias rtc {
if ($mtc($2-)) && (!%website.flood [ $+ [ $regml(web,1) ] ]) {
var %x = 1, %v
while ($regml(web,%x)) {
var %z = $iif(/ isin $regml(web,$calc(%x +1)),$v2,/), %i = $regml(web,%x)
if (/ !isin %i) && (!$istok(%v,%i,32)) {
soc %i %z $1
%v = %v %i
}
inc %x 1
}
set -eu5 %website.flood $+ $regml(web,1) 1
}
}