<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forum.eggheads.org/app.php/feed/topic/20191" />

	<title>egghelp/eggheads community</title>
	<subtitle>Discussion of eggdrop bots, shell accounts and tcl scripts.</subtitle>
	<link href="https://forum.eggheads.org/index.php" />
	<updated>2022-01-06T12:32:41-04:00</updated>

	<author><name><![CDATA[egghelp/eggheads community]]></name></author>
	<id>https://forum.eggheads.org/app.php/feed/topic/20191</id>

		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2022-01-06T12:32:41-04:00</updated>

		<published>2022-01-06T12:32:41-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110744#p110744</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110744#p110744"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110744#p110744"><![CDATA[
<blockquote class="uncited"><div>The thing we need is what your shoutcast server (not the script, the <strong class="text-strong">shoutcat server</strong>) send or can send when you go to <a href="https://your.shoutcast.server/admin.cgi?sid=1&amp;pass=yourpass&amp;page=0&amp;mode=viewxml" class="postlink">https://your.shoutcast.server/admin.cgi ... de=viewxml</a><br><br>And to know if you can have another output than xml, probably by changing the mode value in the url.</div></blockquote>Happy New Year<br>CrazyCat returning to the subject of the errors of ñ, commas, and rare symbols, etc.<br>I paste the tcl that I use for shoutcast that I can't find the solution<br><br><div class="codebox"><p>Code: </p><pre><code>set radiochans "##sala1 #sala2"set otrachan "#sala2"set otrachans "##sala1"set adminchans "#sala3"set adminchans1 "#sala3"set streamip "123.456.789.11"set streamport "1234"set streampass "pass"set scstatstrigger "!estado"set scstreamtrigger "!radio"set scplayingtrigger "!tema"set sclistenertrigger "!oyentes"set scdjtrigger "!dj"set scsetdjtrigger "!emito"set scunsetdjtrigger "!auto"set scwishtrigger "!peticion"set scgreettrigger "!saludos"set sclastsongstrigger "!ultimas"set schelptrigger "!comandos"set alertadmin ""set doalertadmin "1"set announce "1"set urltopic "0"set ctodjc "1"set tellsongs "1"set tellusers "1"set tellbitrate "1"set advertise "1"#si el bot solo debe anunciar la radio si la transmisión  está en funcionamiento, 0 para publicidad permanente 1set advertiseonlyifonline "0"##el texto que el bot publicará solo una vez cuando no emitas en directo server on.set offlinetext "10A2ctualmente 10e2stá 2S10onando 10E2n 12Automatico: 12Pon en tu navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "#set offlinetopic ""#set onlinetext "11A1ctualmente está 10S1onando on 12L1ine: 12Pon en tu navegador 4: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "#set onlinetext ""#set onlinetext ""#set onlinetopic ""#set streamtext ""#set streamtext ""#el texto que el bot publicará cuando no emitas en directo server on.#set advertisetext ""#set advertisetext1 "10E2scuchanos 10e2n: 12----&gt; 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 12 11 13 10L2a 10R2adio 10Q2ue 10T2e 10A2compaña 13 11 12 ,10G2racias 10P2or 10Escuch2arnos "#set advertisetext "10E2stamos 10A2ctualmente 10e2n: 12----&gt; 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 12 11 13 10L2a 10R2adio 10Q2ue 10T2e 10A2compaña 13 11 12 ,10G2racias 10P2or 10Escuch2arnos "# end of config ######################!estadobind pub n $scstatstrigger  pub_scstatbind msg n $scstatstrigger  msg_scstat#!enlacebind pub - $scplayingtrigger  pub_playingbind msg - $scplayingtrigger  msg_playing#!djbind pub - $scdjtrigger  pub_djbind msg - $scdjtrigger  msg_dj#!emitobind pub D $scsetdjtrigger  pub_setdjbind msg D $scsetdjtrigger  msg_setdj#!autobind pub D $scunsetdjtrigger  pub_unsetdjbind msg D $scunsetdjtrigger  msg_unsetdj#!peticionbind pub - $scwishtrigger  pub_wishbind msg - $scwishtrigger  msg_wish#!saludosbind pub - $scgreettrigger  pub_greetbind msg - $scgreettrigger  msg_greet#!radiobind pub - $scstreamtrigger pub_streambind msg - $scstreamtrigger msg_stream#!ultimasbind pub n $sclastsongstrigger pub_lastsongsbind msg n $sclastsongstrigger msg_lastsongs#!oyentesbind pub n $sclistenertrigger pub_listenerbind msg n $sclistenertrigger msg_listener#!comandosbind pub - $schelptrigger pub_helpbind msg - $schelptrigger msg_help#bind time - "* * * * *" isonlinebind time - "*15 * * * *" isonline#bind time - "*12 * * * *" isonlinebind time - "95 * * * *" advertisebind nick - * djnickchange#bind pub n !facebook pub_facebookbind pub n !xiialive pub_xiialive#bind pub - !tunein pub_tunein#bind pub - !winamp pub_winamp#bind pub n !reproductor pub_reproductorbind pub D !abre pub_abrepeticionesbind pub D !cierra pub_cierrapeticionesbind pub D !status.peticiones pub_statuspeticionesbind pub n !adminchan proc_adminchanbind pub n !adminchandj proc_adminchandjbind pub - !canales proc_canalesset dj ""set surl ""set bitrate ""set stitle ""set djciudad ""if {[file exists dj]} {set temp [open "dj" r]set dj [gets $temp]close $temp}####pruebaproc cl_chanlist { } {global botnickset chanlist ""       foreach chan [channels] {               append chanlist "$chan "       }return $chanlist}proc proc_canales { nick uhost hand chan arg } {global radiochansputserv "privmsg $chan : Los canales son $radiochans "}proc proc_adminchan { nick uhost hand chan arg } {global adminchansputserv "privmsg $chan : El canal es $adminchans "}proc proc_adminchandj { nick uhost hand chan arg } {global adminchans1putserv "privmsg $chan : El canal es $adminchans1 "}proc pub_xiialive { nick uhost hand chan arg } {putserv "privmsg $chan : 1Fuera de Servicio."}#proc pub_facebook { nick uhost hand chan arg } {#putserv "privmsg $chan :"#}#proc pub_tunein { nick uhost hand chan arg } {#putserv "privmsg $chan : "#}#proc pub_winamp { nick uhost hand chan arg } {#putserv "privmsg $chan : "#}#proc pub_reproductor { nick uhost hand chan arg } {#putserv "privmsg $chan : "#}proc pub_abrepeticiones { nick uhost hand chan arg } {global adminchans1 radiochans otrachan       if {([lsearch -exact [string tolower $adminchans1] [string tolower $chan]] != -1) || ($adminchans1 == "")} {       set temp [open "djnick" r]               set djnick [gets $temp]       close $tempputserv "privmsg $adminchans1 :PETICIONES: Las Peticiones han sido abierta"putserv "privmsg $radiochans 12 $djnick 10A2ßre 10L2as 10P2eticiones, 10P2ide 10u2n 10T2ema 10C2on 10e2l 10C10omando 12!peticion 10Tema - 2Cantante "putserv "privmsg $otrachan 2 $djnick 10A2ßre 10L2as 10P2eticiones, 10P2ide 10u2n 10T2ema 10C2on 10e2l 10C10omando 12!peticion 10Tema - 2Cantante "       set temp [open "peticiones" w+]       puts $temp "Abiertas"       close $temp}}proc pub_cierrapeticiones { nick uhost hand chan arg } {global adminchans1 radiochans otrachans       if {([lsearch -exact [string tolower $adminchans1] [string tolower $chan]] != -1) || ($adminchans1 == "")} {       set temp [open "djnick" r]               set djnick [gets $temp]       close $tempputserv "privmsg $adminchans1 :PETICIONES: Las Peticiones han sido cerradas"putserv "privmsg $radiochans 12 $djnick 10C2ierra 10L2as 10P2eticiones, 10S2igue 10E2scuchandonos "putserv "privmsg $otrachans 12 $djnick 10C2ierra 10L2as 10P2eticiones, 10S2igue 10E2scuchandonos "       set temp [open "peticiones" w+]       puts $temp "Cerradas"       close $temp}}proc pub_statuspeticiones { nick uhost hand chan arg } {       set temp [open "peticiones" r]       set peticiones [gets $temp]       close $tempputserv "privmsg $chan :PETICIONES: 10E2STADO De Las Peticiones 12$peticiones "}###Modulo para agregar ciudadbind pub D !ciudad pub_setciudadproc pub_setciudad { nick uhost hand chan arg } { global adminchans1; if {([lsearch -exact [string tolower $adminchans1] [string tolower $chan]] != -1) || ($adminchans1 == "")} { setciudad $arg }}proc setciudad { djciudad } {#putlog "shoutcast: $djciudad "if {$djciudad == "" } { set djciudad $djciudad }global streamip streamport streampass dj#putlog "shoutcast: Nuevo Ciudad agregada para $dj ( $djciudad )"       set temp [open "ciudad" w+]       puts $temp $djciudad       close $temprehash}### Fin Modulobind pub - !siguiente pub_siguienteproc pub_siguiente { nick uhost hand chan arg } {exec killall sc_trans_linux -WINCH#putlog "shoutcast: Cambio de canción pedido por $nick"}bind pub - !playlist pub_playlistproc pub_playlist { nick uhost hand chan arg } {exec killall sc_trans_linux -USR1#putlog "shoutcast: $nick pidio recargar el playlist"}proc shrink { calc number string start bl} { return [expr [string first "$string" $bl $start] $calc $number] }proc status { } {global streamip streamport streampassif {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set streamstatus [string range $bl [shrink + 14 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]}}close $sock}if { $streamstatus == "1" } { return 1 } else { return 0 }}proc poststuff { mode text } {global radiochans djset 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 $tempregsub -all "/stitle/" $text "$stitle" textregsub -all "/curlist/" $text "$curlist" textregsub -all "/curhigh/" $text "$curhigh" textregsub -all "/cursong/" $text "$cursong" textregsub -all "/sgenre/" $text "$sgenre" textregsub -all "/surl/" $text "$surl" textregsub -all "/bitrate/" $text "$bitrate" textregsub -all "/dj/" $text "$dj" textforeach 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 chan } {global scstatstrigger scstreamtrigger scplayingtrigger scdjtrigger sclastsongstrigger scwishtrigger scgreettrigger sclistenertrigger radiochansputserv "privmsg $chan : 12 $target 10L2os 10C2omandos 10d2e 10l2a 10R2adio: 10!comandos - 2!Enlace - 12!Radio - 10!Dj - 2!Peticion 10Tema 2Cantante - 12!ultimas - 10!saludos   10G2racias 10P2or 10S2intonizar 12Radio"}proc pub_help {nick uhost hand chan arg} {global radiochansif {$radiochans == "" } { schelp $nick $chan }if {$radiochans != "" } {if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { schelp $nick $chan }}}bind pub - !pruebamensaje advertiseproc advertise { nick uhost hand chan arg } {global otrachans otrachan advertisetext  advertise advertiseonlyifonline dj djciudad ciud peticiones radiochan otrachanset temp [open "ciudad" r]set ciud [gets $temp]close $tempif {$advertise == "1" &amp;&amp; $advertiseonlyifonline == "0"} { putserv "privmsg $otrachans 10E2stamos 10A2ctualmente 10e2n: 12----&gt; 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 12 11 13 10L2a 10R2adio 10Q2ue 10T2e 10A2compaña 13 11 12 ,10G2racias 10P2or 10Escuch2arnos "   putserv "privmsg $otrachan 10E2scuchanos 10e2n: 12----&gt; 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 12 11 13 10L2a 10R2adio 10Q2ue 10T2e 10A2compaña 13 11 12 ,10G2racias 10P2or 10Escuch2arnos "  }if {$advertise == "1" &amp;&amp; $advertiseonlyifonline == "1" &amp;&amp; [status] == 1} {       #poststuff privmsg "$advertisetext"       putserv "privmsg $radiochans 10E02mitiendo: 12 $djnick 2P10ara 12Radio  10S2intonizanos: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "       putserv "privmsg $otrachan 12 $djnick 10E02mitiendo 2P10ara 12Radio 10S2intonizanos: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "        }}proc setdj {nickname djnickname } {set acmd [lindex $djnickname 0]set ciud [lrange $djnickname 1 end]putlog "prueba $ciud"if {$djnickname == ""} { set djnickname $ciud }global radiochans otrachan streamip streamport streampass dj ctodjc putserv "privmsg $otrachan 4Aviso!!!: 10E2mite 10a2hora:12 $nickname 10D2esde: 12 $ciud 10e2scuchanos 10e2n: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "putserv "privmsg $radiochans 4Atencion!!!: 10E2mite 10a2hora:12 $nickname 10D2esde: 12 $ciud 10e2scuchanos 10e2n: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "putquick "MODE ##sala1 +o $nickname"putlog "shoutcast: Nuevo Dj: $djnickname ($nickname)"set temp [open "dj" w+]puts $temp $nicknameclose $tempset temp [open "djnick" w+]puts $temp $nicknameclose $tempset temp [open "ciudad" w+]puts $temp $nicknameclose $temprehashif { [status] == "1" } { poststuff privmsg ""       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 : Comando Invalido Por Motivo de tener Nuestra radio fuera de Línea (APAGADA)" }}proc msg_setdj { nick uhost hand arg } { setdj $nick $arg }proc pub_setdj { nick uhost hand chan arg } { global adminchans1; if {([lsearch -exact [string tolower $adminchans1] [string tolower $chan]] != -1) || ($adminchans1 == "")} { setdj $nick $arg }}proc unsetdj { nick } {global radiochans otrachan dj djnick djciudad adminchans1 ciudad peticionesputquick "MODE ##sala1 -o $dj"putquick "MODE ##sala1 +v $dj"putserv "privmsg $radiochans 4Aviso!!!: 10E2mite 10a2hora:12 RadioAuto 10D2esde: 12 Canarias 10c2on 10P2eticiones:12 Cerradas 10e2scuchanos 10e2n: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "putserv "privmsg $otrachan 4Atencion!!!: 10E2mite 10a2hora:12 RadioAuto 10D2esde: 12 Canarias 10c2on 10P2eticiones:12 Cerradas 10e2scuchanos 10e2n: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "set temp [open "dj" w+]puts $temp "RadioAuto"close $tempset temp [open "djnick" w+]puts $temp "RadioAuto"close $tempset temp [open "ciudad" w+]puts $temp "Canarias"close $tempset temp [open "peticiones" w+]puts $temp "Cerradas"close $tempputserv "privmsg $adminchans1 :4Dj Puesto en Automatico .."rehash}proc msg_unsetdj { nick uhost hand arg } { unsetdj $nick }proc pub_unsetdj { nick uhost hand chan arg } { global adminchans1; if {([lsearch -exact [string tolower $adminchans1] [string tolower $chan]] != -1) || ($adminchans1 == "")} { unsetdj $nick }}proc listener { target } {global streamip streamport streampass adminchansputlog "shoutcast: $target cuenta solicitada del oyente"if {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set repl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]set curhigh [string range $bl [shrink + 15 "&lt;PEAKLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/PEAKLISTENERS&gt;" 0 $bl]]set maxl [string range $bl [shrink + 14 "&lt;MAXLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/MAXLISTENERS&gt;" 0 $bl]]set avgtime [string range $bl [shrink + 13 "&lt;AVERAGETIME&gt;" 0 $bl] [shrink - 1 "&lt;/AVERAGETIME&gt;" 0 $bl]]}}close $sock#putserv "notice $target :Actualmente hay $repl Oyente(s), La Radio Tiene Capacidad para $maxl Oyentes, el número máximo de Oyentes Hasta Ahora es de $curhigh Oyentes, el promedio de escucha es a $avgtime"#putserv "notice $target :  6$target 14Actualmente hay 6 $repl 14Oyente(s), La Radio Tiene Capacidad para 6 $maxl 14Oyentes, el número máximo de Oyentes Hasta Ahora es de 6 $curhigh 14Oyentes, el promedio de escucha es:6 $avgtime"}}proc msg_listener { nick uhost hand arg } { listener $nick }proc pub_listener { nick uhost hand chan arg } { global adminchans; if {([lsearch -exact [string tolower $adminchans] [string tolower $chan]] != -1) || ($adminchans == "")} { listener $nick  }}proc wish { nick chan arg } {global radiochans adminchans1if {$arg == ""} { putserv "privmsg $chan : 12$nick 10P2or 10F2avor 10E2specifica 10E2l 10T2ema 10Q2ue 10D2eseas 10P2edir 10!peticion 10Tema 2Cantante 10G2racias 10P2or 10S2intonizarnos"; return 0}if { [status] == "1" } {set temp [open "djnick" r]set djnick [gets $temp]close $temp#putserv "privmsg $radiochans1 :1PEDIDO MUSICAL: 14$arg 1de Parte de 14$nick"putserv "privmsg $adminchans1 : 10PETICION 12 $djnick 10E2L 10N2ick 12 $nick 10A 2S10olicitado 12 $arg 10En 2El 10Canal 12 $chan"putserv "privmsg $djnick : 10PETICION 12 $djnick 10E2L 10N2ick 12 $nick 10A 2S10olicitado 12 $arg 10En 2El 10Canal 12 $chan"putserv "privmsg $chan :  12$nick 10T2u 10P2eticion 2a 10S2ido 10R2egistrada, 10E2n 10U2n 10M2omento 10D2j 6 $djnick 10T2e 10C2omplacera."} else {putserv "privmsg $chan :10L2o 10S2iento 12$nick 10l2a 10R2adio 10E2sta 10E2n 10M2odo: 12Automatico :2(" }}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 pub_wish { nick uhost hand chan arg } {global radiochans       set temp [open "peticiones" r]               set peticiones [gets $temp]       close $temp       if {$peticiones == "Abiertas"} {        if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "") } {         #wish $nick $arg         wish $nick $chan $arg        }       } else {putserv "privmsg $chan : 12 $nick 10L2as 10P2eticiones 10E2stan 10C2erradas. 10S2igue 10E2scuchandonos " }}proc sclastsongs { target } {global streamip streamport streampass otrachanputlog "shoutcast: $target Historia solicitada de la canción"if {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set songs [string range $bl [string first "&lt;TITLE&gt;" $bl] [expr [string last "&lt;/TITLE&gt;" $bl] + 7]]regsub -all "," $songs "," songsregsub -all "&lt;" $songs "&lt;" songsregsub -all "&gt;" $songs "&gt;" songsregsub -all "&amp;" $songs "\&amp;" songsregsub -all """ $songs """ songsregsub -all "'" $songs "'" songsregsub -all "ÿ" $songs "ÿ" songsregsub -all "&lt;TITLE&gt;" $songs "(" songsregsub -all "&lt;/TITLE&gt;" $songs ")" songsregsub -all "&lt;SONG&gt;" $songs "" songsregsub -all "&lt;/SONG&gt;" $songs " - " songsregsub -all "&lt;PLAYEDAT&gt;" $songs "" songsregsub -all "&lt;/PLAYEDAT&gt;" $songs "" songsregsub -all {\d} $songs "" songsregsub -all "´" $songs "´" songsregsub -all "&amp;#x96;" $songs "-" songsregsub -all "i" $songs "i" songsregsub -all "ö" $songs "ö" songsregsub -all "ä" $songs "ä" songsregsub -all "ü" $songs "ü" songsregsub -all "Ö" $songs "Ö" songsregsub -all "Ä" $songs "Ä" songsregsub -all "Ü" $songs "Ü" songsregsub -all "ß" $songs "ß" songsregsub -all "é" $songs "é" songsregsub -all "á" $songs "á" songsregsub -all "ë" $songs "ë" songsregsub -all "ñ" $songs "ñ" songsregsub -all "{" $songs "" songsregsub -all "}" $songs "" songs}}close $sockputserv "privmsg $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 streamtextputlog "shoutcast: streaminfo requested by $target"poststuff "privmsg $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 == "")} {#putlog "shoutcast: Enlace de Informacion solicitada por $nick"putserv "privmsg $chan :  10 $nick 10S2intoniza 10E2n: 12Pon en tu Navegador9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "}}proc scgreet { nick arg } {if {$arg == ""} { putserv "notice $nick : Olvidó de agregar su Saludos Ej:(!saludos &lt;Tus Saludos&gt;)"; return 0}if { [status] == "1" } {set temp [open "djnick" r]set djnick [gets $temp]close $tempputserv "privmsg $djnick : Enviar unos Saludos: $arg de Parte de $nick"} else {putserv "notice $nick : 10L2o 10S2iento 12 $nick 10l2a 10R2adio 10E2sta 10E2n 10M2odo: 12Automatico :2("}}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 $tempif {$oldnick == $djnick} {putlog "shoutcast: Cambio de Nick del Dj de $oldnick a $newnick"set temp [open "djnick" w+]puts $temp $newnickclose $temp}}proc dj {target chan} {global streamip streamport streampass djputlog "shoutcast: $target pedido La informacion del DJ"if {[status] == 1} {if {[file exists dj]} {set temp [open "dj" r]set dj [gets $temp]close $tempputserv "privmsg $chan :12$target 10E2mitiendo: 12 $dj 2S10intoniza 2E10n: 12Pon en tu Navegador9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "} else { putserv "privmsg $chan :12$target Lo Siento, El Dj Actual No Tiene Un Apodo o Nickname habilitado" }} else { putserv "privmsg $chan : 10L2o 10S2iento 12$target 10l2a 10R2adio 10E2sta 10E2n 10M2odo: 12Automatico :2(" }}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 $chan }}proc scstat {chan} {global streamip streamport streampassputlog "shoutcast: $chan pedido del Estado del servidor"if {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set streamstatus [string range $bl [shrink + 14 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]set repl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]set curhigh [string range $bl [shrink + 15 "&lt;PEAKLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/PEAKLISTENERS&gt;" 0 $bl]]set currentl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]set surl [string range $bl [shrink + 11 "&lt;SERVERURL&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERURL&gt;" 0 $bl]]set maxl [string range $bl [shrink + 14 "&lt;MAXLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/MAXLISTENERS&gt;" 0 $bl]]set bitrate [string range $bl [shrink + 9 "&lt;BITRATE&gt;" 0 $bl] [shrink - 1 "&lt;/BITRATE&gt;" 0 $bl]]set stitle [string range $bl [shrink + 13 "&lt;SERVERTITLE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERTITLE&gt;" 0 $bl]]set sgenre [string range $bl [shrink + 13 "&lt;SERVERGENRE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERGENRE&gt;" 0 $bl]]if {$sgenre != ""} {set sgenre " ($sgenre)"}set avgtime [string range $bl [shrink + 13 "&lt;AVERAGETIME&gt;" 0 $bl] [shrink - 1 "&lt;/AVERAGETIME&gt;" 0 $bl]]set irc [string range $bl [shrink + 5 "&lt;IRC&gt;" 0 $bl] [shrink - 1 "&lt;/IRC&gt;" 0 $bl]]set icq [string range $bl [shrink + 5 "&lt;ICQ&gt;" 0 $bl] [shrink - 1 "&lt;/ICQ&gt;" 0 $bl]]if {$icq == 0} { set icq "N/A" }set aim [string range $bl [shrink + 5 "&lt;AIM&gt;" 0 $bl] [shrink - 1 "&lt;/AIM&gt;" 0 $bl]]set webhits [string range $bl [shrink + 9 "&lt;WEBHITS&gt;" 0 $bl] [shrink - 1 "&lt;/WEBHITS&gt;" 0 $bl]]set streamhits [string range $bl [shrink + 12 "&lt;STREAMHITS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMHITS&gt;" 0 $bl]]set version [string range $bl [shrink + 9 "&lt;VERSION&gt;" 0 $bl] [shrink - 1 "&lt;/VERSION&gt;" 0 $bl]]if {$streamstatus == 1} {if {[file exists dj]} {set temp [open "dj" r]set dj [gets $temp]close $temp} else { set dj "Automático" }putserv ""} else {putserv "privmsg $chan : 12 $stitle$sgenre Actualmente 2ESTA APAGADA." }#putserv "notice $target :Actualmente hay $repl Oyentes, La Capacidad maxima es $maxl, Total de Oyentes En la Radio fue de $curhigh oyentes."#putserv "notice $target :El tiempo promedio de escucha es de $avgtime segundos, La Radio tiene $webhits webhits y $streamhits streamhits."putserv "privmsg $chan : Si Nuestra Radio 2ESTA EN LINEA, Use 12!dj Para ver quien es actualmente el DJ."}}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 chan} {global streamip streamport streampass djputlog "shoutcast: $target pedido la canción actual"if {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set streamstatus [string range $bl [shrink + 14 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]set songtitle [string range $bl [shrink + 11 "&lt;SONGTITLE" 0 $bl] [shrink - 1 "&lt;/SONGTITLE&gt;" 0 $bl]]set songurl [string range $bl [shrink + 9 "&lt;SONGURL&gt;" 0 $bl] [shrink - 1 "&lt;/SONGURL&gt;" 0 $bl]]if {$songurl != ""} { set songurl " ($songurl)"}regsub -all "," $songtitle "," songtitleregsub -all "&lt;" $songtitle "&lt;" songtitleregsub -all "&gt;" $songtitle "&gt;" songtitleregsub -all "&amp;" $songtitle "\&amp;" songtitle  regsub -all """ $songtitle """ songtitleregsub -all "'" $songtitle "'" songtitleregsub -all "ÿ" $songtitle "ÿ" songtitleregsub -all "i" $songtitle "i" songtitleregsub -all "´" $songtitle "´" songtitleregsub -all "&amp;#x96;" $songtitle "-" songtitleregsub -all "ö" $songtitle "ö" songtitleregsub -all "ä" $songtitle "ä" songtitleregsub -all "ü" $songtitle "ü" songtitleregsub -all "Ö" $songtitle "Ö" songtitleregsub -all "Ä" $songtitle "Ä" songtitleregsub -all "Ü" $songtitle "Ü" songtitleregsub -all "ß" $songtitle "ß" songtitleregsub -all "é" $songtitle "é" songtitleregsub -all "á" $songtitle "á" songtitleregsub -all "ë" $songtitle "ë" songtitleregsub -all "ñ" $songtitle "ñ" songtitleregsub -all "{" $songtitle "" songtitleregsub -all "}" $songtitle "" songtitleif {$streamstatus == 1} {putserv "privmsg $chan : 10E2mitiendo: 12 $dj 2C10ancion: 12 $songtitle 10S2intonizanos: 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "#putserv "notice $target :Canción que suena es: 5$songtitle"} elseif {$streamstatus == 0} {putserv "privmsg $chan : 10A2ctualmente 10e2stá 2S10onando 10E2n 12Automatico: 12Pon en tu navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 "} else {putserv "privmsg $chan : El servidor es Actualmente Fuera de Línea *4APAGADO*, Lo Siento"}}}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 $chan }}proc isonline { nick uhost hand chan arg } {global radiochans otrachans otrachan announce tellusers tellsongs tellbitrate urltopic djglobal offlinetext offlinetopic onlinetext onlinetopicglobal streamip streampass streamport djglobal doalertadmin alertadminif {$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: Comprobando si El Enlace está en LINEA"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&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set streamstatus "isonline: [string range $bl [shrink + 14 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]"set repl "curlist: [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]"set curhigh "curhigh: [string range $bl [shrink + 15 "&lt;PEAKLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/PEAKLISTENERS&gt;" 0 $bl]]"set currentl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]set surl "serverurl: [string range $bl [shrink + 11 "&lt;SERVERURL&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERURL&gt;" 0 $bl]]"set cursong "cursong: [string range $bl [shrink + 11 "&lt;SONGTITLE" 0 $bl] [shrink - 1 "&lt;/SONGTITLE&gt;" 0 $bl]]"set songurl [string range $bl [shrink + 9 "&lt;SONGURL&gt;" 0 $bl] [shrink - 1 "&lt;/SONGURL&gt;" 0 $bl]]set bitrate "bitrate: [string range $bl [shrink + 9 "&lt;BITRATE&gt;" 0 $bl] [shrink - 1 "&lt;/BITRATE&gt;" 0 $bl]]"set stitle "stitle: [string range $bl [shrink + 13 "&lt;SERVERTITLE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERTITLE&gt;" 0 $bl]]"set sgenre "sgenre: [string range $bl [shrink + 13 "&lt;SERVERGENRE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERGENRE&gt;" 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 $tempif {$announce == 1 } {if {$streamstatus == "isonline: 0" &amp;&amp; $oldisonline == "isonline: 1"} {       poststuff privmsg $offlinetext       if {$doalertadmin == "1"} { sendnote domsen $alertadmin "La radio Esta Ahora APAGADA" }#if {$urltopic == 1} { poststuff topic $offlinetopic }}if {$streamstatus == "isonline: 1" &amp;&amp; $oldisonline == "isonline: 0" } {if {$sgenre != ""} {set sgenre " ([lrange $sgenre 1 [llength $sgenre]] )"}poststuff privmsg "$onlinetext"#if {$urltopic == 1} { poststuff topic "$onlinetopic" }}}if {($tellusers == 1) &amp;&amp; ($streamstatus == "isonline: 1") &amp;&amp; ($oldcurhigh != "curhigh: 0") } {if {$oldcurhigh != $curhigh} {poststuff privmsg ""#poststuff privmsg "Posibles Oyentes: [lindex $curhigh 1]"}if {$oldcurlist != $repl} {poststuff privmsg ""#poststuff privmsg " Actualmente hay : 4 [lindex $repl 1] ($currentl)  Oyentes"}}if {($tellsongs == 1) &amp;&amp; ($oldsong != $cursong) &amp;&amp; ($streamstatus == "isonline: 1") } {if {$songurl != ""} { set songurl "($songurl)"}regsub -all "," $cursong "," cursongregsub -all "&lt;" $cursong "&lt;" cursongregsub -all "&gt;" $cursong "&gt;" cursongregsub -all "&amp;" $cursong "\&amp;" cursongregsub -all """ $cursong """ cursongregsub -all "'" $cursong "'" cursongregsub -all "ÿ" $cursong "ÿ" cursongregsub -all "´" $cursong "´" cursongregsub -all "i" $cursong "i" cursongregsub -all "&amp;#x96;" $cursong "-" cursongregsub -all "ö" $cursong "ö" cursongregsub -all "ä" $cursong "ä" cursongregsub -all "ü" $cursong "ü" cursongregsub -all "Ö" $cursong "Ö" cursongregsub -all "Ä" $cursong "Ä" cursongregsub -all "Ü" $cursong "Ü" cursongregsub -all "ß" $cursong "ß" cursongregsub -all "é" $cursong "é" cursongregsub -all "á" $cursong "á" cursongregsub -all "ë" $cursong "ë" cursongregsub -all "ñ" $cursong "ñ" cursongregsub -all "{" $cursong "" cursongregsub -all "}" $cursong "" cursongputlog $cursongputserv "privmsg $otrachans 12Pon en tu Navegador 9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 10D2j: 12 $dj 10C2ancion 10A2ctual:12 [lrange $cursong 1 [llength $cursong]]"putserv "privmsg $otrachan 2Emitiendo 10D2j: 12 $dj 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 10C2ancion 10A2ctual:12 [lrange $cursong 1 [llength $cursong]]"#poststuff privmsg "1Quieres Escuchar La Radio  12Pon en tu Navegador9: 2 http://123.456.789.11:1234/widgets/player/dj/?p=5678 ... La Actual Canción es: 4 [lrange $cursong 1 [llength $cursong]] .. Para Ver Comandos de la Radio Teclea 6!comandos "}if {($tellbitrate == 1) &amp;&amp; ($oldbitrate != $bitrate) &amp;&amp; ($streamstatus == "isonline: 1") &amp;&amp; ($oldbitrate != "bitrate: 0")} {poststuff privmsg "Calidad Sonido a [lindex $bitrate 1]kbps"}}}putlog "Cargado shoutcast Correctamente" </code></pre></div>now what my shoutcast panel sends both:<br> Transmission statistics: XML , JSON , JSON-PAGS <br>to enter the XML file the link is like this:<br><a href="http://123.456.789.11:1234/stats?sid=1&amp;pass=12345678995124" class="postlink">http://123.456.789.11:1234/stats?sid=1&amp; ... 5678995124</a><br><br>this is what the XML file returns:<div class="codebox"><p>Code: </p><pre><code>&lt;SHOUTCASTSERVER&gt;&lt;CURRENTLISTENERS&gt;0&lt;/CURRENTLISTENERS&gt;&lt;PEAKLISTENERS&gt;5&lt;/PEAKLISTENERS&gt;&lt;MAXLISTENERS&gt;100&lt;/MAXLISTENERS&gt;&lt;UNIQUELISTENERS&gt;0&lt;/UNIQUELISTENERS&gt;&lt;AVERAGETIME&gt;0&lt;/AVERAGETIME&gt;&lt;SERVERGENRE&gt;various&lt;/SERVERGENRE&gt;&lt;SERVERGENRE2/&gt;&lt;SERVERGENRE3/&gt;&lt;SERVERGENRE4/&gt;&lt;SERVERGENRE5/&gt;&lt;SERVERURL&gt;clientradiourl.com&lt;/SERVERURL&gt;&lt;SERVERTITLE&gt;AutoDJ Stream&lt;/SERVERTITLE&gt;&lt;SONGTITLE&gt;La Sonora Santanera - Amor de Cabaret&lt;/SONGTITLE&gt;&lt;STREAMHITS&gt;52&lt;/STREAMHITS&gt;&lt;STREAMSTATUS&gt;1&lt;/STREAMSTATUS&gt;&lt;BACKUPSTATUS&gt;0&lt;/BACKUPSTATUS&gt;&lt;STREAMLISTED&gt;0&lt;/STREAMLISTED&gt;&lt;STREAMLISTEDERROR&gt;200&lt;/STREAMLISTEDERROR&gt;&lt;STREAMSOURCE&gt;127.0.0.1&lt;/STREAMSOURCE&gt;&lt;STREAMPATH&gt;/stream&lt;/STREAMPATH&gt;&lt;STREAMUPTIME&gt;245357&lt;/STREAMUPTIME&gt;&lt;BITRATE&gt;128&lt;/BITRATE&gt;&lt;SAMPLERATE&gt;44100&lt;/SAMPLERATE&gt;&lt;CONTENT&gt;audio/mpeg&lt;/CONTENT&gt;&lt;VERSION&gt;2.5.5.733 (posix(linux x64))&lt;/VERSION&gt;&lt;/SHOUTCASTSERVER&gt; </code></pre></div>to enter the JSON file the link is like this:<br><a href="http://123.456.789.11:1234/stats?sid=1&amp;pass=12345678995124&amp;json=1" class="postlink">http://123.456.789.11:1234/stats?sid=1&amp; ... 124&amp;json=1</a><br>this is what the JSON file returns:<br><div class="codebox"><p>Code: </p><pre><code> {"currentlisteners":0,"peaklisteners":5,"maxlisteners":100,"uniquelisteners":0,"averagetime":0,"servergenre":"various","servergenre2":"","servergenre3":"","servergenre4":"","servergenre5":"","serverurl":"clientradiourl.com","servertitle":"AutoDJ Stream","songtitle":"Justin Quiles x Chimbala x Zion y Lennox - Loco","streamhits":52,"streamstatus":1,"backupstatus":0,"streamlisted":0,"streamlistederror":200,"streamsource":"127.0.0.1","streampath":"\/stream","streamuptime":244458,"bitrate":"128","samplerate":"44100","content":"audio\/mpeg","version":"2.5.5.733 (posix(linux x64))"} </code></pre></div>to enter the JSON-PAGS file the link is like this:<br><a href="http://123.456.789.11:1234/stats?sid=1&amp;pass=12345678995124&amp;json=1&amp;callback=func" class="postlink">http://123.456.789.11:1234/stats?sid=1&amp; ... lback=func</a><br>this is what the JSON-PAGS file returns:<br><div class="codebox"><p>Code: </p><pre><code> func({"currentlisteners":0,"peaklisteners":5,"maxlisteners":100,"uniquelisteners":0,"averagetime":0,"servergenre":"various","servergenre2":"","servergenre3":"","servergenre4":"","servergenre5":"","serverurl":"clientradiourl.com","servertitle":"AutoDJ Stream","songtitle":"K-Narias - Ya No Me Acuerdo de Ti","streamhits":52,"streamstatus":1,"backupstatus":0,"streamlisted":0,"streamlistederror":200,"streamsource":"127.0.0.1","streampath":"\/stream","streamuptime":244962,"bitrate":"128","samplerate":"44100","content":"audio\/mpeg","version":"2.5.5.733 (posix(linux x64))"}) </code></pre></div>I would be very grateful if you could help me with the correction of errors with the ñ, symbols and others, thank you very much. <br>PS: if you need any more information to clarify the problem I will be happy to give it to you.<br><br><br>good<br>as usual and good ways to contribute so that you can continue to help as those who I am learning, after giving a thousand turns I came up with the solution that I need the messages come out with their accents, the ñ, and other forms, I leave the solution for which you aga lack and thus contribute to this does not decline and thus continue to learn from others <br>I would like to thank you again very much<br><br>in this part of the code<div class="codebox"><p>Code: </p><pre><code> proc playing {target chan} {global streamip streamport streampass djputlog "shoutcast: $target pedido la canción actual"if {[catch {set sock [socket $streamip $streamport] } sockerror]} {putlog "error: $sockerror"return 0 } else {puts $sock "GET /admin.cgi?pass=$streampass&amp;sid=1&amp;mode=viewxml&amp;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 $sockwhile {[eof $sock] != 1} {set bl [gets $sock]if { [string first "standalone" $bl] != -1 } {set streamstatus [string range $bl [shrink + 14 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]set songtitle [string range $bl [shrink + 11 "&lt;SONGTITLE" 0 $bl] [shrink - 1 "&lt;/SONGTITLE&gt;" 0 $bl]]set songurl [string range $bl [shrink + 9 "&lt;SONGURL&gt;" 0 $bl] [shrink - 1 "&lt;/SONGURL&gt;" 0 $bl]]if {$songurl != ""} { set songurl "($songurl)"} </code></pre></div>as last line add this<div class="codebox"><p>Code: </p><pre><code> set songtitle [encoding convertfrom utf-8 [string map {"&amp;" "&amp;"} $songtitle]] </code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Jan 06, 2022 12:32 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[play4free2]]></name></author>
		<updated>2021-11-23T00:34:36-04:00</updated>

		<published>2021-11-23T00:34:36-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110512#p110512</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110512#p110512"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110512#p110512"><![CDATA[
<blockquote class="uncited"><div>thanks for the answer, play4free2 but it has not corrected the error. i also looked at the link you left and everything is ok but it keeps giving me the same errors as soon as they come up &amp;,",',',`.  <br><br>Tainy, Bad Bunny, Julieta Venegas - Lo Siento BB<br>Tainy Â· Bad Bunny Â· Julieta Venegas - Lo Siento BB<br><br><br>Helen Reddy - You're My World<br>Helen Reddy - {You&amp;apos;re} My World</div></blockquote><strong class="text-strong">This is the complete code I am currently using for my Shoutcast Server v2.6.0.753 Eggdrop v1.8.4 and Anope 1.8.9<br><br>It will work with Anope 2.0.x if you change this line:</strong><div class="codebox"><p>Code: </p><pre><code>if {$advertiseglobal == "1" &amp;&amp; $advertiseonlyifonline == "0"} { putserv "PRIVMSG OperServ :GLOBAL $globaltext" }</code></pre></div><strong class="text-strong">To this:</strong><div class="codebox"><p>Code: </p><pre><code>if {$advertiseglobal == "1" &amp;&amp; $advertiseonlyifonline == "0"} { putserv "PRIVMSG GLOBAL :GLOBAL $globaltext" }</code></pre></div><div class="codebox"><p>Code: </p><pre><code>################################################################################################################# shoutcast.tcl v2.00# copyleft (c) 2o21 - play4free2 &amp; cards## Based on the original shoutcast.tcl v1.03 by domsen &lt;domsen@domsen.org&gt; (c)2oo5# Also some parts are based on shoutcast.tcl by Sm0ke0ut## This displays the current song, bitrate, and stream title plus# listen link(s), page link(s) and website link into the public channel(s)# It also sends all request to the radio's staff channel.## Also this script will have the bot kick the source from the shoutcast radio server,# from the Radio's staff channel and requires Ops in the channel for it to work.# It also displays listerners, peak listeners, the shoutcast server status and # the admin login link to the radio's staff channel.## Last but not least it auto announces the current song and link(s) into public channel(s)## To enable in your channel(s) Type: .chanset &lt;channel&gt; +radio +shoutgreet +shoutauto +shoutadmin## Public Commands: !radio !song !link !dj !request !website and !page# Staff Channel Commands: !kickdj !listeners !peak !server !admin## Channel Setup Fill in: Radio Station URL or IP and Port, DJ Staff Channel,# Listen link(s), Radio Station Page(s), Radio Station Website and Admin login link.# Also fill in: streamip streamport streampass# You will need these even if you don't use the auto announce for !kickdj to work.## Auto Announce Setup:# streamip - the ip of your radio# streamport - the port of your radio# streampass - the admin pass of your radio## alertadmin - the userhandle of the user who will get a msg if the server goes down# doalertadmin - 1 if you want to get a msg if the server goes offline, 0 if you#                dont. this is done through the bots notes system because its#                more comfortable and persistent this way.## announce - shall the bot announce any stuff? 1 for yes, 0 for no# urltopic - shall the bot change the topic everytime the radio goes on or off?# NOTE: If enable urltopic and have +radio set to multipal channels it will change the topic in all of them.## tellsongs - shall the bot post the songtitle to the channels everytime a new song starts?# tellusers - shall the bot post the number of current users to the channel #             everytime it changes or a new user maximum is reached?# tellbitrate - shall the bot announce bitrate changes?## offlinetext - the reason the bot says when the radio goes offline# offlinetopic - the topic which is set when the radio goes offline## onlinetext - the reason the bot says when the radio goes online# onlinetopic - the topic which is set when the radio goes online## advertise1 - shall the bot advertise the advertisetext1?# advertise2 - shall the bot advertise the advertisetext2?## advertiseglobal - shall the bot advertise the globaltext? # NOTE: The bot must have access to OperServ Global command.## advertiseonlyifonline - 1 if the bot only should advertise the radio and to globals if the stream#                         is up and running, 0 for all-the-time advertisement## globaltext - the global message the bot sends to all channels every hour on the full.## advertisetext1 - the first line of text the bot will post 3 times an hour on the full 20th. and 40th. min.# advertisetext2 - the second line of text the bot will post 3 times an hour on the 10th. 30th. and 50th. min.## how do I put veriables in the different texts and topics?################################################################################################################# the script knows the following variables which can be used in the offlinetext,# offlinetopic, onlinetext, onlinetopic, streamtext and advertisetext:## /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# $streamip - the streams ip# $streamport - the streams port#################################################################################################################Begin Setupset streamip "your.radio.station.com"set streamport "8000"set streampass "Admin Password"set streamid "1"set alertadmin "0"set doalertadmin "0"set announce "1"#See NOTEset urltopic "0"set tellsongs "1"set tellusers "0"set tellbitrate "0"set advertise1 "1"set advertise2 "1"#See NOTEset advertiseglobal "1"set advertiseonlyifonline "1"set offlinetext "\00304Your Radio Station is offline now \00303:'(\003"set offlinetopic "Set your offline topic here"set onlinetext "\00304Your Radio Station is now online at \00303(/surl/)\003"set onlinetopic "/dj/@/stitle/ @ /surl/ streaming at /bitrate/kbps"set advertisetext1 "\00304Winamp \00303(http://your.radio.station/listen.pls) \00304Request Link \00303(https://www.your.radio.station.com/#Playlist)\003"set advertisetext2 "\00304Windows Media Player \00303(https//:your.radio.station.m3u) \00304RealPlayer \00303(https://your.radio.station.com/listen.ram)\003"#Global message the bot will post:#See NOTEset globaltext "\00304Tune in to Your Radio Station! It's the \00303'Official' \00304Radio station on irc.your.radio.station.com - Winamp \00303http://your.radio.station.com/listen.pls \00304Windows Media Player \00303https://your.radio.station.com/listen.m3u \00304RealPlayer \00303https://your.radio.station.com/listen.ram \00304Join #YourRadioStationChannel for music - Thx for listening!\003"#Radio Station URL or IP and Port:set url "http://your.radio.station.com:8000"#DJ Staff Channel:set radiostaff "#RadioStaffChannel"#Listen links:set linktext1 "\00304Winamp \00303(http://your.radio.station.com/listen.pls) \00304Request Link \00303(https://your.radio.station.com/#Playlist)\003"set linktext2 "\00304Windows Media Player \00303(https://your.radio.station.com/listen.m3u) \00304RealPlayer \00303(https://your.radio.station.com/listen.ram)\003"#Radio Station Pages:set pagetext "\00304Facebook \00303(https://www.facebook.com/your.station.com) \00304Twitter \00303(https://twitter.com/your.station.com)\003"#Radio Station Website:set webtext "\00304Station's Website \00303(https://www.your.radio.station.com)\003"#Admin login link:set admintext "\00304\002Admin login\002: \00303(http://your.radio.station.com/admin.cgi)\003"#End Setup##########################################################DO NOT EDIT BELOW HERE UNLESS YOU KNOW HOW TO WRITE .tcl#########################################################bind cron - {* * * * *} isonlinebind cron - {0 */1 * * *} advertise1bind cron - {20 */1 * * *} advertise1bind cron - {40 */1 * * *} advertise1bind cron - {10 */1 * * *} advertise2bind cron - {30 */1 * * *} advertise2bind cron - {50 */1 * * *} advertise2bind cron - {0 */1 * * *} advertiseglobalset dj ""set surl ""set bitrate ""set stitle ""proc shrink { calc number string start bl } {  return [expr [string first "$string" $bl $start] $calc $number]}proc status { } {  global streamip streamport streampass streamid  if {[catch {set sock [socket $streamip $streamport] } sockerror]} {    putlog "error: $sockerror"    return 0  } else {    puts $sock "GET /stats?sid=&amp;$streamid&amp;pass=$streampass 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 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]      }    }    close $sock  }  if { $streamstatus == "1" } { return 1 } else { return 0 }}proc poststuffb { chand 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 [lrange $zeile 1 [llength $zeile]] }    if {[string first "dj:" $zeile] != -1 } { set dj [lrange $zeile 1 [llength $zeile]] }  }  close $temp  set stitle [string map {&amp; \\&amp;} $stitle]  set cursong [string map {&amp; \\&amp;} $cursong]  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  regsub -all "{" $text "" text  regsub -all "}" $text "" text  regsub -all {\\} $text "" text  putserv "$mode $chand :$text"  putlog $text}proc poststuff { mode text } {  global radiochans dj streamid  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 [lrange $zeile 1 [llength $zeile]] }    if {[string first "dj:" $zeile] != -1 } { set dj [lrange $zeile 1 [llength $zeile]] }  }  close $temp  set stitle [string map {&amp; \\&amp;} $stitle]  set cursong [string map {&amp; \\&amp;} $cursong]  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  regsub -all "{" $text "" text  regsub -all "}" $text "" text  regsub -all {\\} $text "" text  foreach chan [channels] {    if {[lsearch -exact [channel info $chan] +shoutauto] != -1} {putserv "$mode $chan :$text"}  }  putlog $text}proc advertise1 { nick uhost hand chan arg } {  global advertisetext1 advertise1 advertiseonlyifonline streamid  if {$advertise1 == "1" &amp;&amp; $advertiseonlyifonline == "0"} { poststuff privmsg "$advertisetext1" }  if {$advertise1 == "1" &amp;&amp; $advertiseonlyifonline == "1" &amp;&amp; [status] == 1} { poststuff privmsg "$advertisetext1" }}proc advertise2 { nick uhost hand chan arg } {  global advertisetext2 advertise2 advertiseonlyifonline streamid  if {$advertise2 == "1" &amp;&amp; $advertiseonlyifonline == "0"} { poststuff privmsg "$advertisetext2" }  if {$advertise2 == "1" &amp;&amp; $advertiseonlyifonline == "1" &amp;&amp; [status] == 1} { poststuff privmsg "$advertisetext2" }}proc advertiseglobal { minute hour day month year } {  global globaltext advertiseglobal advertiseonlyifonline streamid  if {$advertiseglobal == "1" &amp;&amp; $advertiseonlyifonline == "0"} { putserv "PRIVMSG OperServ :GLOBAL $globaltext" }  if {$advertiseglobal == "1" &amp;&amp; $advertiseonlyifonline == "1" &amp;&amp; [status] == 1} { putserv "PRIVMSG OperServ :GLOBAL $globaltext" }}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 streamid  global doalertadmin alertadmin  # if we cannot determine status this will assume it is offline  # keeps tcl errors from lacking required streamstatus variable.  set streamstatus "isonline: 0"  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]} {      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 /stats?sid=$streamid&amp;pass=$streampass 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 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]"          set repl "curlist: [string range $bl [shrink + 17 "&lt;UNIQUELISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/UNIQUELISTENERS&gt;" 0 $bl]]"          set curhigh "curhigh: [string range $bl [shrink + 15 "&lt;PEAKLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/PEAKLISTENERS&gt;" 0 $bl]]"          set currentl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]          set surl "serverurl: [string range $bl [shrink + 11 "&lt;SERVERURL&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERURL&gt;" 0 $bl]]"          set cursong "cursong: [string range $bl [shrink + 11 "&lt;SONGTITLE" 0 $bl] [shrink - 1 "&lt;/SONGTITLE&gt;" 0 $bl]]"          set songurl "surl: [string range $bl [shrink + 9 "&lt;SONGURL&gt;" 0 $bl] [shrink - 1 "&lt;/SONGURL&gt;" 0 $bl]]"          set bitrate "bitrate: [string range $bl [shrink + 9 "&lt;BITRATE&gt;" 0 $bl] [shrink - 1 "&lt;/BITRATE&gt;" 0 $bl]]"          set stitle "stitle: [string range $bl [shrink + 13 "&lt;SERVERTITLE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERTITLE&gt;" 0 $bl]]"          set sgenre "sgenre: [string range $bl [shrink + 13 "&lt;SERVERGENRE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERGENRE&gt;" 0 $bl]]"  set dj "dj: [string range $bl [shrink + 4 "&lt;DJ&gt;" 0 $bl] [shrink - 1 "&lt;/DJ&gt;" 0 $bl]]"        }      }      close $sock#      putlog $cursong      set cursong [string map {[ \\[} $cursong]      set cursong [string map {&amp; \\&amp;} $cursong]      set cursong [string map {$ \\$} $cursong]      #regsub -all "&amp;" $cursong "\&amp;" cursong      #set cursong [string map {&amp; \\&amp;} $cursong]      regsub -all -nocase "&amp;" $cursong "\\&amp;" cursong      regsub -all "&lt;" $cursong "&lt;" cursong      regsub -all "&gt;" $cursong "&gt;" cursong      regsub -all "&amp;" $cursong "\&amp;" cursong      regsub -all """ $cursong """ cursong      regsub -all "'" $cursong "'" cursong      regsub -all "ÿ" $cursong "" cursong      regsub -all "´" $cursong "´" cursong      regsub -all "&amp;#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      regsub -all "é" $cursong "é" cursong      regsub -all "á" $cursong "á" cursong      regsub -all "ë" $cursong "ë" cursong      regsub -all "ñ" $cursong "ñ" cursong      regsub -all "&amp;apos;" $cursong "'" cursong      regsub -all "{" $cursong "" cursong      regsub -all "}" $cursong "" cursong #     putlog $cursong      set temp [open "isonline" w+]      puts $temp "$streamstatus\n$repl\n$curhigh\n$cursong\n$bitrate\n$stitle\n$sgenre\n$surl\n$dj"      close $temp      if {$announce == 1 } {        if {$streamstatus == "isonline: 0" &amp;&amp; $oldisonline == "isonline: 1"} {          poststuff privmsg $offlinetext          if {$doalertadmin == 1} { $alertadmin "radio is now offline" }          if {$urltopic == 1} { poststuff topic $offlinetopic }        }        if {$streamstatus == "isonline: 1" &amp;&amp; $oldisonline == "isonline: 0" } {          if {$sgenre != ""} {            set sgenre " ([lrange $sgenre 1 [llength $sgenre]] )"          }          poststuff privmsg "$onlinetext"          if {$urltopic == 1} { poststuff topic "$onlinetopic" }        }      }    }    if {$tellusers == 1 &amp;&amp; $streamstatus == "isonline: 1" &amp;&amp; $oldcurhigh != "curhigh: 0" } {      if {$oldcurhigh != $curhigh} {        poststuff privmsg "\00304New listener peak:\00303 [lindex $curhigh 1]\003"      }      if {$oldcurlist != $repl} {        poststuff privmsg "\00304There are currently\00303 [lindex $repl 1] \($currentl\ unique) people listening\003"      }    }    if {$tellsongs == 1 &amp;&amp; $oldsong != $cursong &amp;&amp; $streamstatus == "isonline: 1" } {      if {$songurl != ""} { set songurl " ($songurl)"}      putlog $cursong      poststuff privmsg "\00304Now Playing @ [lindex $bitrate 1] kbps \00303[lrange $cursong 1 [llength $cursong]] ([lrange $stitle 1 [llength $stitle]])\003"    }    if {$tellbitrate == 1 &amp;&amp; $oldbitrate != $bitrate &amp;&amp; $streamstatus == "isonline: 1" &amp;&amp; $oldbitrate != "bitrate: 0"} {      poststuff privmsg "\00304Bitrate switched to\00303 [lindex $bitrate 1]kbps\003"    }  }}#--------------- Begin Public Commands ---------------bind pub -|- !song shoutcast_songproc shoutcast_song {nick uhost hand chan text} {  poststuffb $chan privmsg "\00304Now Playing @ /bitrate/ kbps \00303/cursong/ (/stitle/)\003"}bind pub -|- !dj shoutcast_djproc shoutcast_dj {nick uhost hand chan text} {  if {[channel get $chan radio]} {  poststuffb $chan privmsg "\00304DJ \00303/dj/\00304 is currently on \00303/stitle/\003"  }}  bind pub -|- !request shoutcast_requestproc shoutcast_request {nick uhost hand chan arg} {  global radiostaff  if {[channel get $chan radio]} {    set cmd [string tolower [lindex $arg 0]]    if {$cmd == ""} {      putserv "NOTICE $nick Please use: !request Artist - Song Title"      return 0      } else {      putserv "PRIVMSG $radiostaff :\00304\002Request from\002: \00303$nick \00304\002for\002: \00303$arg\003"      putserv "NOTICE $nick :Your request for \002'$arg'\002 has been succesfully sent to the station's staff."    }  }}bind pub -|- !link shoutcast_linkproc shoutcast_link {nick uhost hand chan text} {  global linktext1 linktext2  if {[channel get $chan radio]} {    putserv "PRIVMSG $chan :$linktext1"    putserv "PRIVMSG $chan :$linktext2"  }}bind pub -|- !page shoutcast_pageproc shoutcast_page {nick uhost hand chan text} {  global pagetext  if {[channel get $chan radio]} {    putserv "PRIVMSG $chan :$pagetext"  }}bind pub -|- !website shoutcast_websiteproc shoutcast_website {nick uhost hand chan text} {  global webtext  if {[channel get $chan radio]} {    putserv "PRIVMSG $chan :$webtext"  }}bind pub -|- !radio shoutcast_helpproc shoutcast_help {nick uhost hand chan text} {  if {[channel get $chan radio]} {    putserv "NOTICE $nick :The following commands are available:"    putserv "NOTICE $nick :!song !link !dj !page !website and !request"  }}#----------------- End Public Commands ----------------#--------------- Begin Main Channel Greet -------------catch {bind join - * rchangreet:wjoin}proc rchangreet:wjoin {nick uhost hand chan} {  if {[channel get $chan shoutgreet]} {    if {![isbotnick $nick]} {      putserv "NOTICE $nick :\00303Welcome to \00304$chan \00303$nick, where we bring you music 24/7\003"      putserv "NOTICE $nick :\00303Type: \00304!radio \00303to see a list of bot commands :)\003"    }  }}#---------------- End Main Channel Greet --------------#------------- Begin Staff Channel Commands -----------package require httpbind pub - !kickdj radio_kickdjproc radio_kickdj {nick uhost hand chan arg} {  global streamip streamport streampass streamid  if {[channel get $chan shoutadmin]} {    if {[catch {set sock [socket $streamip $streamport] } sockerror]} {    putlog "error: $sockerror"    return 0    } else {    if {[isop $nick $chan] == 1} {      puts $sock "GET /admin.cgi?sid=$streamid&amp;pass=$streampass&amp;mode=kicksrc 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      close $sock        putserv "PRIVMSG $chan :\00304\002Current DJ\002: \00303Was successfully kicked.\003"        } else {        putserv "NOTICE $nick :You lack sufficient access to use the command: !kickdj"      }    }  }}bind pub -|- !status shoutcast_statusproc shoutcast_status {nick uhost hand chan arg} {  global url streamid  if {[channel get $chan shoutadmin]} {    ::http::config -useragent "Mozilla/5.0; Shoutinfo"    set http_req [::http::geturl $url/index.html?sid=$streamid -timeout 2000]    if {[::http::status $http_req] != "ok"} {      putserv "PRIVMSG $chan :\00304Stream is unavailable.\003";    }    set data [::http::data $http_req]    ::http::cleanup $http_req    if {[regexp {Listing Status: &lt;/td&gt;&lt;td&gt;&lt;b&gt;([^&lt;]+)&lt;/b&gt;} $data x server]} {      putserv "PRIVMSG $chan :\00304\002Server Status\002: \00303$server\003"      } else {      putserv "PRIVMSG $chan :\00304Couldn't contact the server, please check the configuration and/or streaming server.\003"    }  }}bind pub -|- !peak shoutcast_peakproc shoutcast_peak {nick uhost hand chan arg} {  global url streamid  if {[channel get $chan shoutadmin]} {    ::http::config -useragent "Mozilla/5.0; Shoutinfo"    set http_req [::http::geturl $url/index.html?sid=$streamid -timeout 2000]    if {[::http::status $http_req] != "ok"} {      putserv "PRIVMSG $chan :\00304Stream is unavailable.\003";    }    set data [::http::data $http_req]    ::http::cleanup $http_req    if {[regexp {Listener Peak: &lt;/td&gt;&lt;td&gt;&lt;b&gt;([^&lt;]+)&lt;/b&gt;} $data x peak]} {      putserv "PRIVMSG $chan :\00304\002Listener Peak\002: \00303$peak\003"      } else {      putserv "PRIVMSG $chan :\00304Couldn't receive any information, checking server status...\003"      shoutcast_status $nick $uhost $hand $chan $arg    }  }}bind pub -|- !listeners shoutcast_listenersproc shoutcast_listeners {nick uhost hand chan arg} {  global url streamid  if {[channel get $chan shoutadmin]} {    ::http::config -useragent "Mozilla/5.0; Shoutinfo"    set http_req [::http::geturl $url/index.html?sid=$streamid -timeout 2000]    if {[::http::status $http_req] != "ok"} {      putserv "PRIVMSG $chan :\00304Stream is unavailable.\003";    }    set data [::http::data $http_req]    ::http::cleanup $http_req    if {[regexp {([0-9]+) of} $data x listeners]} {      regexp { of ([^&lt;]+) listeners} $data x maxlisteners      regexp {listeners ([^&lt;]+)} $data x unique      regexp {@ ([^&lt;]+),} $data x bitrate      putserv "PRIVMSG $chan :\00304\002Stream Status\002: \00303Stream is up at $bitrate with $listeners of $maxlisteners listeners $unique\003"      } else {      putserv "PRIVMSG $chan :\00304Couldn't receive any information, checking server status...\003"      shoutcast_status $nick $uhost $hand $chan $arg    }  }}bind pub -|- !admin shoutcast_adminproc shoutcast_admin {nick uhost hand chan text} {  global admintext  if {[channel get $chan shoutadmin]} {    putserv "PRIVMSG $chan :$admintext"  }}bind pub -|- !cmds shoutcast_adminhelpproc shoutcast_adminhelp {nick uhost hand chan text} {  if {[channel get $chan shoutadmin]} {    putserv "NOTICE $nick :The following commands are available:"    putserv "NOTICE $nick :!kickdj !listeners !peak !status !admin"    putserv "NOTICE $nick :!song !link !dj !page and !website"  }}#-------------- End Staff Channel Commands ------------setudef flag radiosetudef flag shoutautosetudef flag shoutadminsetudef flag shoutgreetputlog "Shoutcast shoutcast.tcl v2.20 by: play4free2 &amp; cards irc.420-hightimes.com #HighTimes-Lounge &amp; #snoopdogg loaded! Type .chanset &lt;channel&gt; +radio +shoutgreet +shoutauto +shoutadmin to enable in your channel(s)"</code></pre></div>Sorry about the custom colours but I was to lazy to take them out <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_razz.gif" width="15" height="15" alt=":P" title="Razz"><br>I have removed and added a few things from the original... This was just writen a month ago for my shoutcast.v2, it suits my needs fine, and I didn't feel like changing it all.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12296">play4free2</a> — Tue Nov 23, 2021 12:34 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-11-20T16:20:50-04:00</updated>

		<published>2021-11-20T16:20:50-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110500#p110500</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110500#p110500"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110500#p110500"><![CDATA[
<blockquote class="uncited"><div><blockquote class="uncited"><div>thanks CrazyCat for replying where can I get that info my server is zeno.fm free account would be in the control panel which I have the data of the radio,<br>Shoutcast Stream Encoder Configuration <br>ip<br>port<br>DJ / User ID<br>password<br>Sid<br>if this is what you need let me know and I will pass it to you via private message, thank you very much.<br><br>I leave the web of where I guessed api with which you made me the json<br> if you get the data that you ask me I do not know how to get them thank you again<br><a href="https://zeno.fm/angelescaidos/" class="postlink">https://zeno.fm/angelescaidos/</a></div></blockquote>Saludos amigo .... consulta!!  ... pudiste correr el tcl en zeno ¡¡??</div></blockquote>Saludos ORATEGOD  ... Nada pille un panel centova y ahora si hace lo que necesitaba, gracias<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Sat Nov 20, 2021 4:20 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-11-20T16:16:48-04:00</updated>

		<published>2021-11-20T16:16:48-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110499#p110499</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110499#p110499"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110499#p110499"><![CDATA[
thanks for the answer, play4free2 but it has not corrected the error. i also looked at the link you left and everything is ok but it keeps giving me the same errors as soon as they come up &amp;,",',',`.  <br><br>Tainy, Bad Bunny, Julieta Venegas - Lo Siento BB<br>Tainy Â· Bad Bunny Â· Julieta Venegas - Lo Siento BB<br><br><br>Helen Reddy - You're My World<br>Helen Reddy - {You&amp;apos;re} My World<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Sat Nov 20, 2021 4:16 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[ORATEGOD]]></name></author>
		<updated>2021-11-20T14:11:50-04:00</updated>

		<published>2021-11-20T14:11:50-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110498#p110498</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110498#p110498"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110498#p110498"><![CDATA[
<blockquote class="uncited"><div>thanks CrazyCat for replying where can I get that info my server is zeno.fm free account would be in the control panel which I have the data of the radio,<br>Shoutcast Stream Encoder Configuration <br>ip<br>port<br>DJ / User ID<br>password<br>Sid<br>if this is what you need let me know and I will pass it to you via private message, thank you very much.<br><br>I leave the web of where I guessed api with which you made me the json<br> if you get the data that you ask me I do not know how to get them thank you again<br><a href="https://zeno.fm/angelescaidos/" class="postlink">https://zeno.fm/angelescaidos/</a></div></blockquote>Saludos amigo .... consulta!!  ... pudiste correr el tcl en zeno ¡¡??<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12869">ORATEGOD</a> — Sat Nov 20, 2021 2:11 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[play4free2]]></name></author>
		<updated>2021-11-19T19:41:46-04:00</updated>

		<published>2021-11-19T19:41:46-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110496#p110496</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110496#p110496"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110496#p110496"><![CDATA[
<blockquote class="uncited"><div>no one has responded, can anyone help?</div></blockquote><strong class="text-strong">Replace this part of the code</strong><div class="codebox"><p>Code: </p><pre><code>         regsub -all "&lt;" $cursong "&lt;" cursong         regsub -all "&gt;" $cursong "&gt;" cursong         regsub -all "&amp;" $cursong "+" cursong         regsub -all """ $cursong """ cursong         regsub -all "'" $cursong "'" cursong         regsub -all "ÿ" $cursong "" cursong         regsub -all "´" $cursong "´" cursong         regsub -all "&amp;#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         regsub -all "&amp;apos;" $cursong "'" cursong         putlog $cursong         poststuff privmsg "\007Now Playing\007: [lrange $cursong 1 [llength $cursong]]$songurl"}</code></pre></div><strong class="text-strong">With this code</strong><div class="codebox"><p>Code: </p><pre><code>      regsub -all "&lt;" $cursong "&lt;" cursong      regsub -all "&gt;" $cursong "&gt;" cursong      regsub -all "&amp;" $cursong "\&amp;" cursong      regsub -all """ $cursong """ cursong      regsub -all "'" $cursong "'" cursong      regsub -all "ÿ" $cursong "" cursong      regsub -all "´" $cursong "´" cursong      regsub -all "&amp;#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      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 "\007Now Playing\007: [lrange $cursong 1 [llength $cursong]]$songurl"}</code></pre></div>That should fix a few of your errors, it did mine.<br>You can also look here: <a href="https://www.utf8-chartable.de/unicode-utf8-table.pl?number=1024&amp;unicodeinhtml=hex" class="postlink">https://www.utf8-chartable.de/unicode-u ... inhtml=hex</a> for more Unicode Hex Characters if you need them.<br><br><strong class="text-strong">Like the ñ etc.</strong><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12296">play4free2</a> — Fri Nov 19, 2021 7:41 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-11-19T12:53:16-04:00</updated>

		<published>2021-11-19T12:53:16-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110495#p110495</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110495#p110495"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110495#p110495"><![CDATA[
no one has responded, can anyone help?<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Fri Nov 19, 2021 12:53 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-10-02T04:54:40-04:00</updated>

		<published>2021-10-02T04:54:40-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110375#p110375</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110375#p110375"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110375#p110375"><![CDATA[
well at the end I am trying with a centova panel and it goes great with shoutcast v1 and well but I have a problem to see if they help me to solve it in the titles of the songs when they carry accent does not read them and releases in the room a lot of strange signs to see if you have a solution and tell me how to fix it thank you very much as always  <br><br>this would be the originals : Víctor Manuelle - Si Tú Me besas<br>Gloria Trevi &amp; Alejandra Guzmán - Más Buena<br>No Doubt - Don't Speak<br>Lola Indigo, TINI, Belinda - Niña de la Escuela<br><br>these the ones that it throws : VÃ­ctor Manuelle - Si TÃº Me Besas<br>Gloria Trevi {&amp;} Alejandra GuzmÃ¡n - MÃ¡s Buena<br>No Doubt - {Don&amp;apos;t} Speak<br>Lola Indigo, TINI, Belinda - NiÃ±a de la Escuela<br><br>as it is seen when the words have accents or ñ does not read them.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Sat Oct 02, 2021 4:54 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-09-23T12:17:53-04:00</updated>

		<published>2021-09-23T12:17:53-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110354#p110354</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110354#p110354"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110354#p110354"><![CDATA[
ok CrazyCat thank you, I will talk to the server staff to see if they can reveal this information to me and I will pass it on to you so that you can help me, thank you very much for taking another step to solve the problem, as soon as I know something I will comment here, again thank you very much.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Sep 23, 2021 12:17 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[CrazyCat]]></name></author>
		<updated>2021-09-23T10:07:29-04:00</updated>

		<published>2021-09-23T10:07:29-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110353#p110353</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110353#p110353"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110353#p110353"><![CDATA[
Sorry, but you have to ask your radio provider, I can help with the tcl part but I can't do anything else.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=691">CrazyCat</a> — Thu Sep 23, 2021 10:07 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-09-23T09:25:25-04:00</updated>

		<published>2021-09-23T09:25:25-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110352#p110352</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110352#p110352"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110352#p110352"><![CDATA[
thanks CrazyCat for replying where can I get that info my server is zeno.fm free account would be in the control panel which I have the data of the radio,<br>Shoutcast Stream Encoder Configuration <br>ip<br>port<br>DJ / User ID<br>password<br>Sid<br>if this is what you need let me know and I will pass it to you via private message, thank you very much.<br><br>I leave the web of where I guessed api with which you made me the json<br> if you get the data that you ask me I do not know how to get them thank you again<br><a href="https://zeno.fm/angelescaidos/" class="postlink">https://zeno.fm/angelescaidos/</a><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Sep 23, 2021 9:25 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[CrazyCat]]></name></author>
		<updated>2021-09-23T08:33:10-04:00</updated>

		<published>2021-09-23T08:33:10-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110351#p110351</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110351#p110351"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110351#p110351"><![CDATA[
The thing we need is what your shoutcast server (not the script, the <strong class="text-strong">shoutcat server</strong>) send or can send when you go to <a href="https://your.shoutcast.server/admin.cgi?sid=1&amp;pass=yourpass&amp;page=0&amp;mode=viewxml" class="postlink">https://your.shoutcast.server/admin.cgi ... de=viewxml</a><br><br>And to know if you can have another output than xml, probably by changing the mode value in the url.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=691">CrazyCat</a> — Thu Sep 23, 2021 8:33 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-09-23T08:28:42-04:00</updated>

		<published>2021-09-23T08:28:42-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110350#p110350</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110350#p110350"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110350#p110350"><![CDATA[
<span style="color:red"><span style="font-size:117%;line-height:116%">this is the json code</span></span><div class="codebox"><p>Code: </p><pre><code> namespace eval radio {variable streamurl "https://playradio.nombredelaradio.com/api/nombredelaradio/nowplaying/montaje"variable radiochan "#yourchan"package require httppackage require tlsvariable cursong ""                                                                          bind pub - !direct ::radio::pub:getstreambind pub -|n !mute ::radio::mutebind pub -|n !unmute ::radio::unmuteproc mute {nick uhost handle chan text} {unbind cron - "* * * * *" ::radio::getstream}proc unmute {nick uhost handle chan text} {bind cron - "* * * * *" ::radio::getstream}proc pub:getstream {nick uhost handle chan text} {if {[::string tolower $chan] ne $::radio::radiochan } {return}::radio::getstream 0 0 0 0 0}proc getstream {mi ho da mo wd} {::http::register https 443 ::tls::socketset tok [::http::geturl $::radio::streamurl]set source [::radio::json2dict [::http::data $tok]]::http::cleanup $tok::http::unregister httpsset title [dict get $source title]set artist [dict get $source artist]if {$::radio::cursong ne $title} {set ::radio::cursong $titleset artist [encoding convertfrom utf-8 [string map {"&amp;" "&amp;"} $artist]]set title [encoding convertfrom utf-8 [string map {"&amp;" "&amp;"} $title]]putserv "PRIVMSG $::radio::radiochan :Now streaming : \002\00303$title\003\002 by \002\00307$artist\003\002"}}proc json2dict {JSONtext} {string range [string trim [string trimleft [string map {\t {} \n {} \r {} , { } : { } \[ \{ \] \}} $JSONtext] {\uFEFF}]] 1 end-1}}</code></pre></div><br><br><span style="color:red"><span style="font-size:117%;line-height:116%">this is the code of the shoutcast script that does the function of sending the songs, if the Dj is live or in Dj autoplay the link and etc.</span></span><div class="codebox"><p>Code: </p><pre><code>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.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&amp;pass=$streampass&amp;mode=viewxml&amp;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 "&lt;STREAMSTATUS&gt;" 0 $bl] [shrink - 1 "&lt;/STREAMSTATUS&gt;" 0 $bl]]"               set repl "curlist: [string range $bl [shrink + 19 "&lt;UNIQUELISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/UNIQUELISTENERS&gt;" 0 $bl]]"               set curhigh "curhigh: [string range $bl [shrink + 15 "&lt;PEAKLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/PEAKLISTENERS&gt;" 0 $bl]]"               set currentl [string range $bl [shrink + 18 "&lt;CURRENTLISTENERS&gt;" 0 $bl] [shrink - 1 "&lt;/CURRENTLISTENERS&gt;" 0 $bl]]               set surl "serverurl: [string range $bl [shrink + 11 "&lt;SERVERURL&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERURL&gt;" 0 $bl]]"               set cursong "cursong: [string range $bl [shrink + 11 "&lt;SONGTITLE" 0 $bl] [shrink - 1 "&lt;/SONGTITLE&gt;" 0 $bl]]"               set songurl [string range $bl [shrink + 9 "&lt;SONGURL&gt;" 0 $bl] [shrink - 1 "&lt;/SONGURL&gt;" 0 $bl]]               set bitrate "bitrate: [string range $bl [shrink + 9 "&lt;BITRATE&gt;" 0 $bl] [shrink - 1 "&lt;/BITRATE&gt;" 0 $bl]]"               set stitle "stitle: [string range $bl [shrink + 13 "&lt;SERVERTITLE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERTITLE&gt;" 0 $bl]]"               set sgenre "sgenre: [string range $bl [shrink + 13 "&lt;SERVERGENRE&gt;" 0 $bl] [shrink - 1 "&lt;/SERVERGENRE&gt;" 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" &amp;&amp; $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" &amp;&amp; $oldisonline == "isonline: 0" } {            if {$sgenre != ""} {               set sgenre " ([lrange $sgenre 1 [llength $sgenre]] )"            }            poststuff privmsg "$onlinetext"            if {$urltopic == 1} { poststuff topic "$onlinetopic" }         }      }      if {($tellusers == 1) &amp;&amp; ($streamstatus == "isonline: 1") &amp;&amp; ($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) &amp;&amp; ($oldsong != $cursong) &amp;&amp; ($streamstatus == "isonline: 1") } {         if {$songurl != ""} { set songurl " ($songurl)"}         regsub -all "&lt;" $cursong "&lt;" cursong         regsub -all "&gt;" $cursong "&gt;" cursong         regsub -all "&amp;" $cursong "+" cursong         regsub -all """ $cursong "\"" cursong         regsub -all "'" $cursong "'" cursong         regsub -all "ÿ" $cursong "" cursong         regsub -all "´" $cursong "´" cursong         regsub -all "&amp;#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         regsub -all "&amp;apos;" $cursong "'" cursong         putlog $cursong         poststuff privmsg "\007Now Playing\007: [lrange $cursong 1 [llength $cursong]]$songurl"      }      if {($tellbitrate == 1) &amp;&amp; ($oldbitrate != $bitrate) &amp;&amp; ($streamstatus == "isonline: 1") &amp;&amp; ($oldbitrate != "bitrate: 0")} {         poststuff privmsg "bitrate switched to [lindex $bitrate 1]kbps"      }   }}putlog "*** shoutcast.tcl v1.03XXX by Domsen updated by RickTee76 &lt;domsen@domsen.org&gt; succesfully loaded. turn it up baby."</code></pre></div><br><span style="color:red"><br> I wonder if there is a way to insert the json into the shoutcast script and have it perform the same function as this part of the original script. thanks a lot.<br>thanks to the people who help and contribute to see if it is solved.<br></span><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Sep 23, 2021 8:28 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2021-09-22T08:44:10-04:00</updated>

		<published>2021-09-22T08:44:10-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110349#p110349</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110349#p110349"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110349#p110349"><![CDATA[
mabrook hi<br><br>thank you for answering my account on zeno.fm is free <br>I broadcast in shoutcast format and the widget that they offer reads the songs but the egg with this script does not. <br>that error is the one that gives me this script:<br> shoutcast: checking if the broadcast is online.<br>Tcl error [isonline]: can't read "streamstatus": no such variable exists<br><br><br>CrazyCat made me a small script with json and the api of the web that works very well and quite grateful I am , passes the songs when it is in autodj as live. <br> what is my problem only passes the songs does not do the same this script that we talked about, when my friends come to broadcast to my radio the json is not integrated, which does not announce the changes of dj, if you are in auto, live, request songs etc..<br>it jumps messages that the radio is off.<br><br><br>SpiKe^^ a fix so that no more than two requests can be requested in a given time.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Wed Sep 22, 2021 8:44 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[mabrook]]></name></author>
		<updated>2021-09-22T08:44:27-04:00</updated>

		<published>2021-09-22T07:38:02-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110348#p110348</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110348#p110348"/>
		<title type="html"><![CDATA[Domsen update to Shoutcast 2.4.7.256]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110348#p110348"><![CDATA[
flink, do you have a paid plan for zeno.fm or a free plan?<br><br>i'm creating a free account from zeno.fm. so that i can test from myself.<br><br> <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_razz.gif" width="15" height="15" alt=":P" title="Razz">  <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_razz.gif" width="15" height="15" alt=":P" title="Razz">  <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_razz.gif" width="15" height="15" alt=":P" title="Razz"><br><br><br>i've tried it, and this is what i got. this is a free plan from zeno.fm<br><div class="codebox"><p>Code: </p><pre><code>&lt;user&gt; .errorInfo&lt;testbot&gt; [12:00:20] ----------------&lt;testbot&gt; [12:00:20] can't read "streamstatus": no such variable&lt;testbot&gt;     while executing&lt;testbot&gt; "puts $temp "$streamstatus\n$repl\n$curhigh\n$cursong\n$bitrate\n$stitle\n$sgenre\n$surl""&lt;testbot&gt;     (procedure "isonline" line 54)&lt;testbot&gt;     invoked from within&lt;testbot&gt; "isonline $_time1 $_time2 $_time3 $_time4 $_time5"&lt;testbot&gt; [12:00:20] errorCode : TCL READ VARNAME&lt;testbot&gt; [12:00:20] ----------------</code></pre></div>and <br><div class="codebox"><p>Code: </p><pre><code>&lt;testbot&gt; [12:05:00] shoutcast: checking if stream is online&lt;testbot&gt; [12:05:00] Tcl error [isonline]: can't read "streamstatus": no such variable</code></pre></div><br>this is both icecast and shoutcast script.<br><br>this is my main stream url<br><div class="codebox"><p>Code: </p><pre><code>http://stream.zeno.fm/6q5uz7vw868uv</code></pre></div><br>and yes, you are right flink,<br><div class="codebox"><p>Code: </p><pre><code>https://www.imgpaste.net/image/KdkFQS</code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12921">mabrook</a> — Wed Sep 22, 2021 7:38 am</p><hr />
]]></content>
	</entry>
	</feed>
