rendered paste body;=================================================================
; by Meij <meijie@gmail.com> EFnet / #parse
;=================================================================
on *:TEXT:*:#parse: { _input $chan $1- }
on *:INPUT:#: { _input $chan $1- }
on *:SOCKOPEN:_title.*: {
var %sn = $sockname, %_mark = $sock(%sn).mark
sockwrite -nt %sn GET $iif($gettok(%_mark, 10, 32), $ifmatch, /) HTTP/1.0
sockwrite -nt %sn Accept-Language: en-us
sockwrite -nt %sn User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12
sockwrite -nt %sn Host: $gettok(%_mark, 6, 32)
sockwrite -nt %sn Connection: close
sockwrite -t %sn $str($crlf, 2)
}
on *:SOCKREAD:_title.*: {
var %_data, %sn = $sockname, %_mark = $sock(%sn).mark
if ($sockerr > 0) return
:nextread
sockread -n %_data
if ($sockbr == 0) return
if ($regex(%_data, ^Location: (.*)$)) {
sockclose %sn
_input $gettok(%_mark, 1, 32) $regml(1)
return
}
if ([ % $+ [ %sn ] ]) {
set -u10 [ % $+ [ %sn ] ] $+([ % $+ [ %sn ] ],%_data)
}
if ($regex([ % $+ [ %sn ] ], /<title>(.*?)<\/title>/i)) {
msg $gettok(%_mark, 1, 32) $+(,$regml(1),)
sockclose %sn
unset [ % $+ [ %sn ] ]
return
}
if ($regex(%_data, /<title>/i)) {
set -u10 [ % $+ [ %sn ] ] $+([ % $+ [ %sn ] ],%_data)
}
goto nextread
}
alias -l _input {
if ($regex($2-, ((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@|)([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5}|)(.*))) {
var %i = 1, %_mark = $1
while (%i <= $regml(0)) {
var %_mark = $+(%_mark,$chr(32),$iif($regml(%i), $ifmatch, $false))
inc %i
}
:name
var %sn = $+(_title.,$md5($ticks))
if ($sock(%sn)) goto name
sockopen %sn $regml(5) $iif($regml(8), $right($ifmatch, -1), 80)
sockmark %sn %_mark
}
}