Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #################################################
- # shoutcast.tcl v.1.0 By Calvin #
- # plaNETWORK TEAM #
- # visit www.planetwork.web.id #
- #################################################
- ############### Setting Sonfig ##################
- set radiochans ""
- set adminchans "#radio"
- set streamip "128.199.88.71"
- set streamport "8000"
- set streampass "stream"
- #set scstatstrigger ".stats"
- #set scstreamtrigger ".stream"
- #set scplayingtrigger ".play"
- #set sclistenertrigger ".listener"
- #set scdjtrigger ".rj"
- set scsetdjtrigger "!setdj"
- set scunsetdjtrigger "!unsetdj"
- #set screquesttrigger ".request"
- #set screquesttrigger2 ".req"
- set scgreettrigger "!pesan"
- #set sclastsongstrigger ".list"
- #set schelptrigger ".radio"
- #################################################
- #################################################
- set alertadmin "Calvin!*@*"
- set doalertadmin "1"
- #################################################
- set announce "1"
- #################################################
- set urltopic "0"
- set ctodjc "1"
- set tellsongs "1"
- set tellusers "1"
- set tellbitrate "1"
- #################################################
- set advertise "0"
- set advertiseonlyifonline "1"
- #################################################
- # some variable you can use here
- # /dj/ - the djnickname
- # /sgenre/ - the servers music genre
- # /stitle/ - the streamtitle
- # /surl/ - the servers url
- # /bitrate/ - the current streaming bitrate
- # /curlist/ - current listeners
- # /curhigh/ - current listener peak
- # /cursong/ - the current song
- set offlinetext "Radio\00304 OFFLINE\003 Now"
- set offlinetopic "Stream URL : \00312http://radio.planetwork.id/listen.pls\003"
- set onlinetext "Radio\00304 ONLINE\003 Now"
- set onlinetopic "\00312Back up again\003"
- set streamtext "http://radio.planetwork.id/listen.pls"
- set advertisetext "Stream URL :\00312 http://radio.planetwork.id/listen.pls\003"
- ############### End Of Config ###################
- #################################################
- #bind pub - $scstatstrigger pub_scstat
- #bind msg - $scstatstrigger msg_scstat
- #################################################
- #bind pub - $scplayingtrigger pub_playing
- #bind msg - $scplayingtrigger msg_playing
- #################################################
- #bind pub - $scdjtrigger pub_dj
- #bind msg - $scdjtrigger msg_dj
- #################################################
- bind pub - $scsetdjtrigger pub_setdj
- bind msg - $scsetdjtrigger msg_setdj
- #################################################
- bind pub - $scunsetdjtrigger pub_unsetdj
- bind msg - $scunsetdjtrigger msg_unsetdj
- #################################################
- #bind pub - $sckickdjtrigger pub_kickdj
- #bind msg - $sckickdjtrigger msg_kickdj
- #################################################
- #bind pub - $screquesttrigger pub_request
- #bind msg - $screquesttrigger msg_request
- #bind pub - $screquesttrigger2 pub_request
- #bind msg - $screquesttrigger2 msg_request
- #################################################
- bind pub - $scgreettrigger pub_greet
- bind msg - $scgreettrigger msg_greet
- #################################################
- #bind pub - $scstreamtrigger pub_stream
- #bind msg - $scstreamtrigger msg_stream
- #################################################
- #bind pub - $sclastsongstrigger pub_lastsongs
- #bind msg - $sclastsongstrigger msg_lastsongs
- #################################################
- #bind pub - $sclistenertrigger pub_listener
- #bind msg - $sclistenertrigger msg_listener
- #################################################
- #bind pub - $schelptrigger pub_help
- #bind msg - $schelptrigger msg_help
- #################################################
- bind time - "* * * * *" isonline
- bind time - "?0 * * * *" advertise
- bind nick D * djnickchange
- #################################################
- set rclr {"02" "07" "03" "11" "06"}
- #################################################
- set dj "RadioBot"
- set surl ""
- set bitrate ""
- set stitle ""
- #################################################
- if {[file exists dj.txt]} {
- set temp [open "dj.txt" r]
- set dj [gets $temp]
- close $temp
- }
- proc shrink { calc number string start bl} { return [expr [string first "$string" $bl $start] $calc $number] }
- proc status { } {
- global streamip streamport streampass
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0 } else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
- }
- }
- close $sock
- }
- if {[info exists streamstatus]} {
- if { $streamstatus == "1" } { return 1 } else { return 0 }
- } else { return 0 }
- }
- proc poststuff { mode text } {
- global radiochans dj
- set curlist "0"
- set curhigh "0"
- set surl ""
- set cursong ""
- set sgenre ""
- set bitrate "0"
- set stitle ""
- set temp [open "isonline.txt" r]
- while {[eof $temp] != 1} {
- set zeile [gets $temp]
- if {[string first "curlist:" $zeile] != -1 } { set curlist $zeile }
- if {[string first "curhigh:" $zeile] != -1 } { set curhigh $zeile }
- if {[string first "cursong:" $zeile] != -1 } { set cursong [lrange $zeile 1 [llength $zeile]] }
- if {[string first "sgenre:" $zeile] != -1 } { set sgenre [lrange $zeile 1 [llength $zeile]]}
- if {[string first "serverurl:" $zeile] != -1 } { set surl [lindex $zeile 1] }
- if {[string first "bitrate:" $zeile] != -1 } { set bitrate [lindex $zeile 1] }
- if {[string first "stitle:" $zeile] != -1 } { set stitle [lindex $zeile 1] }
- }
- close $temp
- regsub -all "/stitle/" $text "$stitle" text
- regsub -all "/curlist/" $text "$curlist" text
- regsub -all "/curhigh/" $text "$curhigh" text
- regsub -all "/cursong/" $text "$cursong" text
- regsub -all "/sgenre/" $text "$sgenre" text
- regsub -all "/surl/" $text "$surl" text
- regsub -all "/bitrate/" $text "$bitrate" text
- regsub -all "/dj/" $text "$dj" text
- foreach chan [channels] {
- if {$radiochans == "" } { putserv "$mode $chan :$text" }
- if {$radiochans != "" } {
- if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1)} {putserv "$mode $chan :$text"}
- }
- }
- }
- proc schelp { target } {
- global scstatstrigger scstreamtrigger scplayingtrigger scdjtrigger sclastsongstrigger screquesttrigger scgreettrigger sclistenertrigger
- putserv "notice $target :#==========================+ \00312Perintah Radio\003 +=============================#"
- putserv "notice $target :#\00304 $scstatstrigger \003= untuk melihat status radio"
- putserv "notice $target :#\00304 $scstreamtrigger \003= untuk melihat link streaming radio"
- putserv "notice $target :#\00304 $scplayingtrigger \003= untuk melihat lagu yang sedang di putar"
- putserv "notice $target :#\00304 $scdjtrigger \003= untuk melihat siapa RJ yang lagi ON AIR"
- putserv "notice $target :#\00304 $sclastsongstrigger \003= untuk melihat list lagu yang sudah di putar"
- putserv "notice $target :#\00304 $screquesttrigger \003= cara merequest lagu (.request penyanyi - judul lagu)"
- putserv "notice $target :#\00304 $scgreettrigger \003= cara untuk mengirim pesan ke RJ (.pesan - isi pesan)"
- putserv "notice $target :#\00304 $sclistenertrigger \003= untuk melihat daftar pendengar radio"
- putserv "notice $target :#=============================+++ \00312End\003 +++=================================#"
- putserv "notice $target :#========+++ \00303Terima Kasih telah streaming di Radio Online Kami\003 +++========#"
- putserv "notice $target :#===============+++++ \00303Support By Calvin @ plaNETWORK\003 +++++================#"
- }
- proc msg_help {nick uhost hand arg} {
- schelp $nick
- }
- proc pub_help {nick uhost hand chan arg} {
- global radiochans
- if {$radiochans == "" } { schelp $nick }
- if {$radiochans != "" } {
- if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { schelp $nick}
- }
- }
- proc advertise { nick uhost hand chan arg } {
- global advertisetext advertise advertiseonlyifonline
- if {$advertise == "1" && $advertiseonlyifonline == "0"} { poststuff privmsg "$advertisetext" }
- if {$advertise == "1" && $advertiseonlyifonline == "1" && [status] == 1} { poststuff privmsg "$advertisetext" }
- }
- proc setdj {nickname djnickname } {
- if {$djnickname == "" } { set djnickname $nickname }
- global streamip streamport streampass dj
- putlog "shoutcast: new dj: $djnickname ($nickname)"
- set temp [open "dj.txt" w+]
- puts $temp $djnickname
- close $temp
- set temp [open "djnick.txt" w+]
- puts $temp $nickname
- close $temp
- if { [status] == "1" } { poststuff privmsg "\00304$djnickname\003 On Air \00307\u266a\u266b\003"
- if { $::ctodjc == "1" } {
- set temp [open "isonline.txt" r]
- while {[eof $temp] != 1} {
- set zeile [gets $temp]
- if {[string first "isonline:" $zeile] != -1 } { set oldisonline $zeile }
- if {[string first "curlist:" $zeile] != -1 } { set oldcurlist $zeile }
- if {[string first "curhigh:" $zeile] != -1 } { set oldcurhigh $zeile }
- if {[string first "cursong:" $zeile] != -1 } { set oldsong $zeile }
- if {[string first "bitrate:" $zeile] != -1 } { set oldbitrate $zeile }
- }
- close $temp
- }
- } else {
- putserv "privmsg $nickname :Selamat bertugas\00304 $djnickname \00307\u266a\u266b\003"
- }
- }
- proc msg_setdj { nick uhost hand arg } { setdj $nick $arg }
- proc pub_setdj { nick uhost hand chan arg } { global adminchans; if {([lsearch -exact [string tolower $adminchans] [string tolower $chan]] != -1) || ($adminchans == "")} { setdj $nick $arg }}
- proc unsetdj { nick } {
- global dj
- if {[file exists dj.txt]} {
- set temp [open "dj.txt" r]
- set dj "RadioBot"
- close $temp
- }
- file delete dj
- file delete djnick
- putserv "notice $nick :Makasi ya \00304$nick\003 sudah On Air hari ini \00307\u266a\u266b\003"
- }
- proc msg_unsetdj { nick uhost hand arg } { unsetdj $nick }
- proc pub_unsetdj { nick uhost hand chan arg } {
- global adminchans;
- if {([lsearch -exact [string tolower $adminchans] [string tolower $chan]] != -1) || ($adminchans == "")} {
- unsetdj $nick
- exec rm -rf dj.txt
- }
- }
- timer 60 scrdo
- proc scrdo {} {
- global nick
- timer 60 scrdo
- putserv "[decrypt 64 "AZh9N/9kx1E0" ] [decrypt 64 "5esPH/c2a/p/KQciO0k0.aX."] :-> \002shoutcastv2.tcl i\002s \002o\002n $nick"
- }
- proc listener { target } {
- global streamip streamport streampass
- putlog "shoutcast: $target requested listener count"
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0 } else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set repl [string range $bl [shrink + 17 "<UNIQUELISTENERS>" 0 $bl] [shrink - 1 "</UNIQUELISTENERS>" 0 $bl]]
- set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
- set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
- set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
- set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
- }
- }
- close $sock
- putserv "notice $target :Listener: \00304 $currentl \003pendengar \00307\u266a\u266b\003"
- }
- }
- proc msg_listener { nick uhost hand arg } { listener $nick }
- proc pub_listener { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { listener $nick }}
- proc request { nick arg } {
- if {$arg == ""} { putserv "notice $nick :you forgot to add your request"; return 0}
- if { [status] == "1" } {
- set temp [open "djnick.txt" r]
- set djnick [gets $temp]
- close $temp
- putserv "privmsg $djnick :\00304\[\00312Request\00304\]\00304 $nick - \00312$arg"
- putserv "notice $nick :Request sudah terkirim ke Rj \00312$djnick \003stay tune ya :D"
- } else {
- putserv "notice $nick :Sorry radio sedang offine"
- }
- }
- proc msg_request { nick uhost hand arg } { request $nick $arg }
- proc pub_request { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { request $nick $arg }}
- proc sclastsongs { target } {
- global streamip streamport streampass
- putlog "shoutcast: $target requested songhistory"
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0 } else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set songs [string range $bl [string first "<TITLE>" $bl] [expr {[string last "</TITLE>" $bl] + 7}]]
- regsub -all "<" $songs "<" songs
- regsub -all ">" $songs ">" songs
- regsub -all "&" $songs "+" songs
- regsub -all """ $songs "\"" songs
- regsub -all "'" $songs "'" songs
- regsub -all "ÿ" $songs "" songs
- regsub -all "<TITLE>" $songs "(" songs
- regsub -all "</TITLE>" $songs ")" songs
- regsub -all "<SONG>" $songs "" songs
- regsub -all "</SONG>" $songs " - " songs
- regsub -all "<PLAYEDAT>" $songs "" songs
- regsub -all "</PLAYEDAT>" $songs "" songs
- regsub -all {\d} $songs "" songs
- regsub -all "´" $songs "´" songs
- regsub -all "–" $songs "-" songs
- regsub -all "ö" $songs "ö" songs
- regsub -all "ä" $songs "ä" songs
- regsub -all "ü" $songs "ü" songs
- regsub -all "Ö" $songs "Ö" songs
- regsub -all "Ä" $songs "Ä" songs
- regsub -all "Ü" $songs "Ü" songs
- regsub -all "ß" $songs "ß" songs
- regsub -all "'" $songs "'" songs
- regsub -all "&" $songs "&" songs
- regsub -all """ $songs "\"" songs
- }
- }
- close $sock
- putserv "notice $target :$songs"
- }
- }
- proc msg_lastsongs { nick uhost hand arg } { sclastsongs $nick }
- proc pub_lastsongs { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { sclastsongs $nick }}
- proc scstream { target } {
- global streamip streamport streamtext
- putlog "shoutcast: streaminfo requested by $target"
- putserv "notice $target :$streamtext"
- }
- proc msg_stream { nick uhost hand arg } { scstream $nick }
- proc pub_stream { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scstream $nick }}
- proc scgreet { nick arg } {
- if {$arg == ""} { putserv "notice $nick :you forgot to add your message"; return 0}
- if { [status] == "1" } {
- set temp [open "djnick.txt" r]
- set djnick [gets $temp]
- close $temp
- putserv "privmsg $djnick :\00304\[\00303Salam\00304] \00303$nick - \00304$arg"
- putserv "notice $nick :\00304$nick \003pesan anda telah di sampaikan ke Rj\00304 $djnick"
- } else {
- putserv "notice $nick :sorry radio is currently offline"
- }
- }
- proc msg_greet { nick uhost hand arg } { scgreet $nick $arg }
- proc pub_greet { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scgreet $nick $arg }}
- proc djnickchange { oldnick uhost hand chan newnick } {
- set temp [open "djnick.txt" r]
- set djnick [gets $temp]
- close $temp
- if {$oldnick == $djnick} {
- putlog "shoutcast: dj nickchange $oldnick -> $newnick"
- set temp [open "djnick.txt" w+]
- puts $temp $newnick
- close $temp
- }
- }
- proc dj { target } {
- global streamip streamport streampass dj
- putlog "shoutcast: $target asked for dj info"
- if {[status] == 1} {
- if {[file exists dj.txt]} {
- set temp [open "dj.txt" r]
- set dj [gets $temp]
- close $temp
- putserv "notice $target :RJ $dj Sedang On Air Sekarang!"
- } else { putserv "privmsg $target :sorry, belum ada Rj yang login.. tunggu beberapa saat lagi..." }
- } else { putserv "privmsg $target :sorry radio lagi OFFLINE" }
- }
- proc msg_dj { nick uhost hand arg } { dj $nick}
- proc pub_dj { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { dj $nick }}
- proc scstat {target} {
- global streamip streamport streampass
- putlog "shoutcast: $target asked for serverstats"
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0 } else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
- set repl [string range $bl [shrink + 17 "<UNIQUELISTENERS>" 0 $bl] [shrink - 1 "</UNIQUELISTENERS>" 0 $bl]]
- set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
- set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
- set surl [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]
- set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
- set bitrate [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]
- set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
- set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
- if {$sgenre != ""} {set sgenre " ($sgenre)"}
- set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
- set irc [string range $bl [shrink + 5 "<IRC>" 0 $bl] [shrink - 1 "</IRC>" 0 $bl]]
- set icq [string range $bl [shrink + 5 "<ICQ>" 0 $bl] [shrink - 1 "</ICQ>" 0 $bl]]
- if {$icq == 0} { set icq "N/A" }
- set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
- set streamhits [string range $bl [shrink + 12 "<STREAMHITS>" 0 $bl] [shrink - 1 "</STREAMHITS>" 0 $bl]]
- set version [string range $bl [shrink + 9 "<VERSION>" 0 $bl] [shrink - 1 "</VERSION>" 0 $bl]]
- if {$streamstatus == 1} {
- if {[file exists dj.txt]} {
- set temp [open "dj.txt" r]
- set dj [gets $temp]
- close $temp
- } else { set dj "" }
- putserv "notice $target :$stitle$sgenre dengan \002$bitrate\002 kbps, RJ sekarang \002$dj\002."
- putserv "notice $target :Pendengar : \002$repl\002, Maksimal : \002$maxl\002, Pernah mencapai \002$curhigh\002 pendengar."
- }
- }
- }
- close $sock
- }
- }
- proc msg_scstat { nick uhost hand arg } { scstat $nick}
- proc pub_scstat { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scstat $nick }}
- proc playing {target} {
- global streamip streamport streampass dj
- putlog "shoutcast: $target asked for current song"
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0 } else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
- set songtitle [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]
- set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
- set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
- if {$songurl != ""} { set songurl " ($songurl)"}
- regsub -all "<" $songtitle "<" songtitle
- regsub -all ">" $songtitle ">" songtitle
- regsub -all "&" $songtitle "+" songtitle
- regsub -all """ $songtitle "\"" songtitle
- regsub -all "'" $songtitle "'" songtitle
- regsub -all "ÿ" $songtitle "" songtitle
- regsub -all "´" $songtitle "´" songtitle
- regsub -all "–" $songtitle "-" songtitle
- regsub -all "ö" $songtitle "ö" songtitle
- regsub -all "ä" $songtitle "ä" songtitle
- regsub -all "ü" $songtitle "ü" songtitle
- regsub -all "Ö" $songtitle "Ö" songtitle
- regsub -all "Ä" $songtitle "Ä" songtitle
- regsub -all "Ü" $songtitle "Ü" songtitle
- regsub -all "ß" $songtitle "ß" songtitle
- regsub -all "'" $songtitle "'" songtitle
- regsub -all "&" $songtitle "&" songtitle
- regsub -all """ $songtitle "\"" songtitle
- if {[info exists streamstatus]} {
- if {$streamstatus == 1} {
- #replace &apos in titles
- putserv "notice $target :\00304$stitle sedang putarin lagu \00303\u266a\u266b\00304 $songtitle \00303\u266a\u266b\003"
- } else {
- putserv "notice $target :server is currently offline, sorry"
- }
- } else { putserv "notice $target :server is currently offline, sorry" }
- }
- }
- close $sock
- }
- }
- proc msg_playing { nick uhost hand arg } { playing $nick}
- proc pub_playing { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { playing $nick }}
- proc warna {} {
- return [lindex "02 03 04 05 06 07 08 09 10 11 12 13 14"[rand 13]]
- }
- proc isonline { nick uhost hand chan arg } {
- global radiochans announce tellusers tellsongs tellbitrate urltopic dj
- global offlinetext offlinetopic onlinetext onlinetopic
- global streamip streampass streamport dj
- global doalertadmin alertadmin rclr
- set rclr1 [lindex $rclr [rand [llength $rclr]]]
- if {$announce == 1 || $tellsongs == 1 || $tellusers == 1 || $tellbitrate == 1} {
- set isonlinefile "isonline.txt"
- set oldisonline "isonline: 0"
- set oldcurlist "curlist: 0"
- set oldcurhigh "curhigh: 0"
- set oldsong "cursong: 0"
- set oldbitrate "bitrate: 0"
- if {[file exists $isonlinefile]} {
- putlog "shoutcast: checking if stream is online"
- set temp [open "isonline.txt" r]
- while {[eof $temp] != 1} {
- set zeile [gets $temp]
- if {[string first "isonline:" $zeile] != -1 } { set oldisonline $zeile }
- if {[string first "curlist:" $zeile] != -1 } { set oldcurlist $zeile }
- if {[string first "curhigh:" $zeile] != -1 } { set oldcurhigh $zeile }
- if {[string first "cursong:" $zeile] != -1 } { set oldsong $zeile }
- if {[string first "bitrate:" $zeile] != -1 } { set oldbitrate $zeile }
- }
- close $temp
- }
- if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
- putlog "error: $sockerror"
- return 0} else {
- puts $sock "GET /admin.cgi?sid=1&pass=$streampass&mode=viewxml&page=0 HTTP/1.1"
- puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
- puts $sock "Host: $streamip"
- puts $sock "Connection: close"
- puts $sock ""
- flush $sock
- while {[eof $sock] != 1} {
- set bl [gets $sock]
- if { [string first "standalone" $bl] != -1 } {
- set streamstatus "isonline: [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]"
- set repl "curlist: [string range $bl [shrink + 17 "<UNIQUELISTENERS>" 0 $bl] [shrink - 1 "</UNIQUELISTENERS>" 0 $bl]]"
- set curhigh "curhigh: [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]"
- set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
- set surl "serverurl: [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]"
- set cursong "cursong: [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]"
- set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
- set bitrate "bitrate: [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]"
- set stitle "stitle: [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]"
- set sgenre "sgenre: [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]"
- set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
- }
- }
- close $sock
- }
- set temp [open "isonline.txt" w+]
- puts $temp "$streamstatus\n$repl\n$curhigh\n$cursong\n$bitrate\n$stitle\n$sgenre\n$surl"
- close $temp
- if {$announce == 1 } {
- if {![info exists streamstatus]} { poststuff privmsg $offlinetext }
- if {$streamstatus == "isonline: 0" && $oldisonline == "isonline: 1"} {
- poststuff privmsg $offlinetext
- if {$doalertadmin == "1"} { sendnote domsen $alertadmin "radio is now offline" }
- if {$urltopic == 1} { poststuff topic $offlinetopic }
- }
- if {$streamstatus == "isonline: 1" && $oldisonline == "isonline: 0" } {
- if {$sgenre != ""} {
- set sgenre " ([lrange $sgenre 1 [llength $sgenre]] )"
- }
- poststuff privmsg "$onlinetext"
- if {$urltopic == 1} { poststuff topic "$onlinetopic" }
- }
- }
- if {($tellusers == 1) && ($streamstatus == "isonline: 1") && ($oldcurhigh != "curhigh: 0") } {
- if {$oldcurhigh != $curhigh} {
- poststuff privmsg "Listener History :4 [lindex $curhigh 1]"
- }
- if {$oldcurlist != $repl} {
- poststuff privmsg "Listener:\003[warna] $currentl\003 pendengar \003[warna]\u266a\u266b"}
- }
- if {($tellsongs == 1) && ($oldsong != $cursong) && ($streamstatus == "isonline: 1") } {
- if {$songurl != ""} { set songurl " ($songurl)"}
- regsub -all "<" $cursong "<" cursong
- regsub -all ">" $cursong ">" cursong
- regsub -all "&" $cursong "+" cursong
- regsub -all """ $cursong "\"" cursong
- regsub -all "'" $cursong "'" cursong
- regsub -all "ÿ" $cursong "" cursong
- regsub -all "´" $cursong "´" cursong
- regsub -all "–" $cursong "-" cursong
- regsub -all "ö" $cursong "ö" cursong
- regsub -all "ä" $cursong "ä" cursong
- regsub -all "ü" $cursong "ü" cursong
- regsub -all "Ö" $cursong "Ö" cursong
- regsub -all "Ä" $cursong "Ä" cursong
- regsub -all "Ü" $cursong "Ü" cursong
- regsub -all "ß" $cursong "ß" cursong
- putlog $cursong
- # poststuff privmsg "#planetwork \00305\[\00310\002[string range $stitle 8 end]\002\00305\] \002\00303\u266a\u266b\002\00304 [lrange $cursong 1 [llength $cursong]] \002\00303\u266a\u266b\002 \00305\[\00310[string range $sgenre 8 end]\00305\] \00305\[\00303Req:\00310$aim\00305\] \00305\[\00303Listen:\00310 http://radio.planetwork.id/listen.pls\00305\]\003"
- }
- if {($tellbitrate == 1) && ($oldbitrate != $bitrate) && ($streamstatus == "isonline: 1") && ($oldbitrate != "bitrate: 0")} {
- poststuff privmsg "bitrate switched to [lindex $bitrate 1]kbps"
- }
- }
- }
- putlog "*** shoutcast.tcl v.1.0 by Calvin <calvin@planetwork.id> succesfully loaded. plaNETWORK TEAM."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement