ShoutCast Query
Posted by HellRaz0r
Monday, November 06, 2006
Description: uses 7.html to display server info.
on *:text:@scast:#channel:{ scast ip:port all $chan }
on *:text:@listeners:#channel:{ scast ip:port Listeners $chan }
;/scast <ip:port> <Field> [MsgTarget]
;Fields: all, listeners, status, peak, maxlisteners, uniquelisteners, bitrate, song.
alias scast {
if ($0 < 2) || (#* iswm $2) echo -a Invalid syntax, use the command like this: /scast <ip:port> <Field> [MsgTarget]
else {
var %sockname = scast- $+ $ticks
sockopen %sockname $replace($1,:,$chr(32))
sockmark %sockname $1
hadd -m %sockname field $$2
hadd -m %sockname target $$3
}
}
on *:sockopen:scast-*: {
if ($sockerr) {
echo -a Failled to connect to server.
.hfree -sw $sockname
halt
}
sockwrite -n $sockname GET /7.html HTTP/1.0
sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt)
sockwrite -n $sockname Host: $sock($sockname).mark
sockwrite -n $sockname Connection: Close
sockwrite -n $sockname $crlf
}
on *:sockread:scast-*: {
sockread -fn &bin
if ($regex($bvar(&bin,1,400).text,<body>(.*)<\/body>)) {
tokenize 44 $regml(1)
hadd -m $sockname listeners $1
hadd -m $sockname status $iif($2 == 1,Online,Offline)
hadd -m $sockname peak $3
hadd -m $sockname maxlisteners $4
hadd -m $sockname uniquelisteners $5
hadd -m $sockname bitrate $+($6,KB/s)
hadd -m $sockname song $7-
}
}
on *:sockclose:scast-*:{
if ($hget($sockname,target)) {
var %targ = $v1, %field1 = $hget($sockname,field)
if (%field1 == ALL) msg %targ [^B]Status:[^B] $hget($sockname,status) [^B]Song:[^B] $hget($sockname,song) [^B]Listeners:[^B] $hget($sockname,listeners) [^B]Peak Listeners:[^B] $hget($sockname,peak)
elseif ($hget($sockname,%field1)) {
var %field2 = $v1
msg %targ $+([^B],%field1,[^B]) $+ : $hget($sockname,%field1)
}
}
else {
if ($hget($sockname,field)) {
var %field = $v1
if (%field == all) echo -a [^B]Status:[^B] $hget($sockname,status) [^B]Song:[^B] $hget($sockname,song) [^B]Listeners:[^B] $hget($sockname,listeners) [^B]Peak Listeners:[^B] $hget($sockname,peak)
elseif ($hget($sockname,%field)) echo -a %field $+ : $v1
}
else {
echo -a [^B]Status:[^B] $hget($sockname,status)
echo -a [^B]Song:[^B] $iif($hget($sockname,song),$v1,None)
echo -a [^B]Peak:[^B] $hget($sockname,peak)
echo -a [^B]Listeners:[^B] $hget($sockname,listeners)
echo -a [^B]Max Listeners:[^B] $hget($sockname,maxlisteners)
echo -a [^B]Bitrate:[^B] $hget($sockname,bitrate)
}
}
.hfree -sw $sockname
}