This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

Help with shoutcast

Support & discussion of released scripts, and announcements of new releases.
Post Reply
User avatar
Madalin
Master
Posts: 310
Joined: Fri Jun 24, 2005 11:36 am
Location: Constanta, Romania
Contact:

Help with shoutcast

Post by Madalin »

Code: Select all

# config ########################## 

set radiochans "#Euxilius" 
set adminchans "#Euxilius" 
set streamip "211.22.30.206" 
set streamport "66667" 
set streampass "csa" 
set scstatstrigger ".stats" 
set scstreamtrigger ".stream" 
set scplayingtrigger ".playing" 
set sclistenertrigger ".listener" 
set scdjtrigger ".dj" 
set scsetdjtrigger ".setdj" 
set scunsetdjtrigger ".unsetdj" 
set scwishtrigger ".wish" 
set scgreettrigger ".greet" 
set sclastsongstrigger ".lastsongs" 
set schelptrigger ".help" 

set alertadmin "" 
set doalertadmin "1" 

set announce "1" 

set urltopic "1" 
set ctodjc "1" 
set tellsongs "1" 
set tellusers "1" 
set tellbitrate "1" 

set advertise "1" 
set advertiseonlyifonline "1" 

set offlinetext "going offline now" 
set offlinetopic "visit our website @ www.domsen.org" 

set onlinetext "/stitle/ now online @ /surl/ with /bitrate/kbits" 
set onlinetopic "/dj/@/stitle/ @ /surl/ streaming at /bitrate/kbits" 

set streamtext "tune in /dj/ @ http://$streamip:$streamport/listen.pls" 

set advertisetext "stream @ http://$streamip:$streamport/listen.pls - powered by www.domsen.org" 

# 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 D $scsetdjtrigger  pub_setdj 
bind msg D $scsetdjtrigger  msg_setdj 

bind pub D $scunsetdjtrigger  pub_unsetdj 
bind msg D $scunsetdjtrigger  msg_unsetdj 

bind pub - $scwishtrigger  pub_wish 
bind msg - $scwishtrigger  msg_wish 

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 dj "" 
set surl "" 
set bitrate "" 
set stitle "" 

if {[file exists dj]} { 
set temp [open "dj" 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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 { $streamstatus == "1" } { return 1 } 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" 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 scwishtrigger scgreettrigger sclistenertrigger 
putserv "notice $target :the following commands are available:" 
putserv "notice $target :$scstatstrigger - $scstreamtrigger - $scplayingtrigger - $scdjtrigger - $sclastsongstrigger - $scwishtrigger - $scgreettrigger - $sclistenertrigger" 
putserv "notice $target :shoutcast.tcl by domsen <domsen@domsen.org>" 
} 

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" w+] 
puts $temp $djnickname 
close $temp 
set temp [open "djnick" w+] 
puts $temp $nickname 
close $temp 
if { [status] == "1" } { poststuff privmsg "$djnickname is now rocking the turntables, enjoy." 
if { $ctodjc == "1" } { 
set temp [open "isonline" 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 :this has not been announced because the radio is currentlfy offline." } 
} 


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 
set dj "" 
file delete dj 
putserv "notice $nick :dj deleted" 
} 



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 }} 


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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 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]] 
}} 
close $sock 
putserv "notice $target :there are currently $repl unique people listening, the listener maximum is $maxl, our user peak was at $curhigh listeners, the listening time average is $avgtime" 
}} 

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 wish { nick arg } { 
if {$arg == ""} { putserv "notice $nick :you forgot to add your wish"; return 0} 
if { [status] == "1" } { 
set temp [open "djnick" r] 
set djnick [gets $temp] 
close $temp 
putserv "privmsg $djnick :(WISH) - $nick - $arg" 
} else { 
putserv "notice $nick :sorry radio is currently offline" } 
} 


proc msg_wish { nick uhost hand arg } { wish $nick $arg } 
proc pub_wish { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { wish $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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 "&#x96;" $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 greetmessage"; return 0} 
if { [status] == "1" } { 
set temp [open "djnick" r] 
set djnick [gets $temp] 
close $temp 
putserv "privmsg $djnick :(GREET) - $nick - $arg" 
} 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" r] 
set djnick [gets $temp] 
close $temp 
if {$oldnick == $djnick} { 
putlog "shoutcast: dj nickchange $oldnick -> $newnick" 
set temp [open "djnick" 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]} { 
set temp [open "dj" r] 
set dj [gets $temp] 
close $temp 
putserv "notice $target :$dj is at the turntables!" 
} else { putserv "notice $target :sorry, no dj name available" } 
} else { putserv "notice $target :sorry radio is currently 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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 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 webhits [string range $bl [shrink + 9 "<WEBHITS>" 0 $bl] [shrink - 1 "</WEBHITS>" 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]} { 
set temp [open "dj" r] 
set dj [gets $temp] 
close $temp 
} else { set dj "none" } 
putserv "notice $target :$stitle$sgenre is online, running shoutcast $version and streaming at $bitrate kbps,  your dj is $dj. please visit $surl" 
} else { 
putserv "notice $target :$stitle$sgenre is currenty offline, running shoutcast $version and streaming at $bitrate kbps, check out $surl" } 
putserv "notice $target :there are currently $repl unique people listening, the listener maximum is $maxl, our user peak was at $curhigh listeners." 
putserv "notice $target :the average user is listening $avgtime seconds, our stream had $webhits webhits and $streamhits streamhits." 
putserv "notice $target :you can contact the team by irc on $irc, via aim at $aim and with icq by the uin $icq." 
}} 
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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 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 "&#x96;" $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 {$streamstatus == 1} { 
putserv "notice $target :now playing $songtitle$songurl" 
} 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 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 

if {$announce == 1 || $tellsongs == 1 || $tellusers == 1 || $tellbitrate == 1} { 
set isonlinefile "isonline" 
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" 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?pass=$streampass&mode=viewxml&page=0 HTTP/1.0" 
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 + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 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]]" 
}} 
close $sock 
} 

set temp [open "isonline" w+] 
puts $temp "$streamstatus\n$repl\n$curhigh\n$cursong\n$bitrate\n$stitle\n$sgenre\n$surl" 
close $temp 
if {$announce == 1 } { 
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 "new listener peak: [lindex $curhigh 1]" 
} 
if {$oldcurlist != $repl} { 
poststuff privmsg "there are currently [lindex $repl 1] ($currentl) people listening" 
}} 
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 "&#x96;" $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 "now playing: [lrange $cursong 1 [llength $cursong]]$songurl" 
} 

if {($tellbitrate == 1) && ($oldbitrate != $bitrate) && ($streamstatus == "isonline: 1") && ($oldbitrate != "bitrate: 0")} { 
poststuff privmsg "bitrate switched to [lindex $bitrate 1]kbps" 
}}}

i get this in DCC CHAT
error: couldn't open socket: port number too high
or
error: couldn't open socket: permission denied
User avatar
DragnLord
Owner
Posts: 711
Joined: Sat Jan 24, 2004 4:58 pm
Location: C'ville, Virginia, USA

Post by DragnLord »

set streamport "66667"
Valid ports: 0 - 65535
User avatar
Madalin
Master
Posts: 310
Joined: Fri Jun 24, 2005 11:36 am
Location: Constanta, Romania
Contact:

Post by Madalin »

<(BesTTeam> [17:16] error: couldn't open socket: permission denied
ive tried manny ports.. same thing .. permission denied
why ?!
what can i do.. !?
User avatar
DragnLord
Owner
Posts: 711
Joined: Sat Jan 24, 2004 4:58 pm
Location: C'ville, Virginia, USA

Post by DragnLord »

Try setting the shoutcast to use port 10000.
There are a lot of reasons for getting "error: couldn't open socket: permission denied", if it is on a remote machine contact the administrators.
d
dumbro
Voice
Posts: 8
Joined: Sun May 21, 2006 12:24 am

Post by dumbro »

[21:49] Tcl error in file 'eggdrop.conf':
[21:49] extra characters after close-brace
while executing
"proc isonline { nick uhost hand chan arg } {
global radiochans announce tellusers tellsongs tellbitrate urltopic dj
global offlinetext offlinetopic on..."
(file "scripts/radio.tcl" line 488)
invoked from within
"source scripts/radio.tcl"
(file "eggdrop.conf" line 1331)
[21:49] * CONFIG FILE NOT LOADED (NOT FOUND, OR ERROR)
anyone help plz?
N
NTHosts
Op
Posts: 100
Joined: Mon Oct 10, 2005 9:57 pm
Location: UK
Contact:

humm

Post by NTHosts »

Old topic i know, but why are you using so high ports with shoutcast ?
The best port to use for it is 9000, or anything between 8000 and 9500, you have a lot of choice there so you really shouldnt' have no need for a 5 didget port number.. :P
www.NT-Hosts.Net - More than just a host
Post Reply