26 Şubat 2013, 09:58
#1 Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
sc_serv_control.tcl
Kod: Kodu kopyalamak için üzerine çift tıklayın!
#
# Return information about SHOUTcast DNAS Server 2 (last Build 29)
#
# It requires tDOM.
# On Debian install it by apt-get install tdom
# I dont know other OS
# You will find the Source of tDOM on
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN... ]
#
# If you have any suggestions you can find me on IRC Network bluemoon-radio.de:6667 channel #BMR (I am Breeze ;) )
# or via mail breeze@
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN... ] radio.de
#
#
# Version 0.1
# !info misc
# Return misc information like listener, peak, current track, bitrate, etc....
#
# Version 0.2
# !info history
# Return Songhistory
#
#
# Version 0.3
# !info listener
# Return Listeners with ip and connect time
package require http
package require tdom
set cmdchar "!"
proc notice {who what} {
putserv "NOTICE $who :$what"
}
proc say {who what} {
putserv "PRIVMSG $who :$what"
}
proc duration {s} {
set hours [expr {$s / 3600}]
set minutes [expr {($s / 60) % 60}]
set seconds [expr {$s % 60}]
set res ""
if {$hours != 0} {append res "$hours hours"}
if {$minutes != 0} {append res " $minutes minutes"}
if {$seconds != 0} {append res " $seconds seconds"}
return $res
}
### settings of your admin connect to SHOUTcast Server
set scserv(pass) ""
set scserv(url) ""
set scserv(port) ""
set scserv(version) "0.3"
#### Just edit from this line below if you know what you do ;) ####
bind pub n "[string trim $cmdchar]info" pub:info
proc pub:info {nick host hand chan arg} {
http::config -useragent "Mozilla 9.0"
set con [http::geturl $::scserv(url):$::scserv(port)/admin.cgi?pass=$::scserv(pass)&sid=1&mode=viewxml&page=9 -timeout 10000]
set urldata [http::data $con]
http::cleanup $con
set doc [dom parse $urldata]
set root [$doc documentElement]
set cmd [lindex $arg 0]
switch -- $cmd {
"misc" {
notice $nick "Listener: [[$root selectNodes /SHOUTCASTSERVER/CURRENTLISTENERS/text()] data]"
notice $nick "Max.: [[$root selectNodes /SHOUTCASTSERVER/MAXLISTENERS/text()] data]"
notice $nick "Peak: [[$root selectNodes /SHOUTCASTSERVER/PEAKLISTENERS/text()] data]"
notice $nick "Unique: [[$root selectNodes /SHOUTCASTSERVER/UNIQUELISTENERS/text()] data]"
notice $nick "Genre: [[$root selectNodes /SHOUTCASTSERVER/SERVERGENRE/text()] data]"
notice $nick "Url: [[$root selectNodes /SHOUTCASTSERVER/SERVERURL/text()] data]"
notice $nick "Titel: [[$root selectNodes /SHOUTCASTSERVER/SERVERTITLE/text()] data]"
notice $nick "Track: [[$root selectNodes /SHOUTCASTSERVER/SONGTITLE/text()] data]"
notice $nick "next Track: [[$root selectNodes /SHOUTCASTSERVER/NEXTTITLE/text()] data] (if playlist is connected)"
notice $nick "Status: [[$root selectNodes /SHOUTCASTSERVER/STREAMSTATUS/text()] data]"
notice $nick "MP3: $::scserv(url):$::scserv(port)[[$root selectNodes /SHOUTCASTSERVER/STREAMPATH/text()] data]"
notice $nick "Bitrate: [[$root selectNodes /SHOUTCASTSERVER/BITRATE/text()] data] kb/s"
notice $nick "Codec: [[$root selectNodes /SHOUTCASTSERVER/CONTENT/text()] data]"
notice $nick "Version: [[$root selectNodes /SHOUTCASTSERVER/VERSION/text()] data]"
}
"listener" {
notice $nick "-- \002LISTENER\002"
notice $nick "IP | CONNECTED | PLAYER"
foreach node [$root selectNodes /SHOUTCASTSERVER/LISTENERS/LISTENER] {
foreach node2 {HOSTNAME CONNECTTIME USERAGENT} {
set getnode [$node selectNodes $node2]
if {[llength $getnode] > 0} {
lappend nodeList [join [$getnode text]]
} else {
lappend nodeList N/A
}
}
}
foreach {a b c} $nodeList {
notice $nick "$a | [duration $b] | $c"
}
}
"history" {
set nodeList ""
notice $nick "-- \002SONGHISTORY\002"
notice $nick "AT | TITLE"
foreach node [$root selectNodes /SHOUTCASTSERVER/SONGHISTORY/SONG] {
foreach node2 {PLAYEDAT TITLE} {
set getnode [$node selectNodes $node2]
if {[llength $getnode] > 0} {
lappend nodeList [join [$getnode text]]
}
}
}
foreach {a b} $nodeList {
notice $nick "[clock format $a -format {%H:%M:%S}] | $b|"
}
}
"default" {
notice $nick "!info misc|listener|history"
}
}
}
putlog "loaded sc_serv_control.tcl $::scserv(version) successfully"