yanlış anlamayın baştan savıyorum vs gibi olmasın. kendiniz orjinaliyle sizin buraya postaladığınız arasındaki farkı-eksikliği görmeniz için daha ayrıntılı açıklamaya-göstermeye çalışayım:
bakın bu sizin bi sayfa arkada verdiğiniz koddan !durum isteğini kod içinde takip ediyorum :
Kod: Kodu kopyalamak için üzerine çift tıklayın!
set scstatstrigger "!durum"
scstatstrigger'a bakıyorum bind'ler içinden shoutcast stat komutu-triggerı olarak burda ayarlanmış !durum komutu.
bindler içinde ilk satırda hemen :
Kod: Kodu kopyalamak için üzerine çift tıklayın!
bind pub - $scstatstrigger pub_scstat
bu bind'in prosedürü yani yapılması gereken işi yaptıracak yer pub_scstat de imiş hemen oraya bakıyorum:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
proc pub_scstat { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scstat $nick }}
scstat $nick diyerek !durum komutuna karşılayacak atılacak mesajı scstat prosedürüne (proc) una bağlamış şimdi onu bulalım:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
proc scstat {target} {
global streamip streamport streampass
putlog "shoutcast: $target asked for serverstats"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
set repl [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]
set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set surl [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set bitrate [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]
set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
if {$sgenre != ""} {set sgenre " ($sgenre)"}
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
set irc [string range $bl [shrink + 5 "<IRC>" 0 $bl] [shrink - 1 "</IRC>" 0 $bl]]
set icq [string range $bl [shrink + 5 "<ICQ>" 0 $bl] [shrink - 1 "</ICQ>" 0 $bl]]
if {$icq == 0} { set icq "N/A" }
set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
set webhits [string range $bl [shrink + 9 "<WEBHITS>" 0 $bl] [shrink - 1 "</WEBHITS>" 0 $bl]]
set streamhits [string range $bl [shrink + 12 "<STREAMHITS>" 0 $bl] [shrink - 1 "</STREAMHITS>" 0 $bl]]
set version [string range $bl [shrink + 9 "<VERSION>" 0 $bl] [shrink - 1 "</VERSION>" 0 $bl]]
..... diye devam ediyor bikaç satır sonra advertismentlara geçiyor.
bu komutlar için atılacak mesajların variable'ları burda alt alta set blabla "falan filan" dizilmiş ama sizin aldığınız hatadaki cursong diye bi variable burda yok....bunu bulamadığından-eksikliğinden gösteremiyor hata atıyor. cursong current song yani şuan-halen süregelen gibi bi anlamı var current kelimesinin song bildiğiniz şarkı kısaltıp birleştirmiş cursong demiş bu değer-variable için ama sizdeki kodda bu yok.
bakın buda orjinal shoutcast daki aynı proc:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
proc scstat {target} {
global streamip streamport streampass radiochans
putlog "shoutcast: $target asked for serverstats"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
set repl [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]
set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set surl [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set bitrate [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]
set cursong "cursong: [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]"
set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
if {$sgenre != ""} {set sgenre " ($sgenre)"}
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
set irc [string range $bl [shrink + 5 "<IRC>" 0 $bl] [shrink - 1 "</IRC>" 0 $bl]]
set icq [string range $bl [shrink + 5 "<ICQ>" 0 $bl] [shrink - 1 "</ICQ>" 0 $bl]]
if {$icq == 0} { set icq "N/A" }
set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
set webhits [string range $bl [shrink + 9 "<WEBHITS>" 0 $bl] [shrink - 1 "</WEBHITS>" 0 $bl]]
set streamhits [string range $bl [shrink + 12 "<STREAMHITS>" 0 $bl] [shrink - 1 "</STREAMHITS>" 0 $bl]]
set version [string range $bl [shrink + 9 "<VERSION>" 0 $bl] [shrink - 1 "</VERSION>" 0 $bl]]
set played [string range $bl [shrink + 8 "<PLAYED>" 0 $bl] [shrink - 1 "</PLAYED>" 0 $bl]]
... diye devam ediyor.
farkı görebilirsiniz burda set cursong var sizinkinde yok... oysa bu variable kodun !komutlarında atılacak pekçok mesaj için kullanılıyor hemen tüm mesaj olaylarını kodu yapan bu proc/prosedür altında toplamış ve diğer prosedürleri buna bağlamış.sizde şimdi işlemeyen komutların işleyememe nedeni bu eksiklik/kusur.
başka ne gibi değişiklikler eksikler olduğunu ancak adım adım alınacak hata mesajlarından takip edip onarmak gidermek gerekir bu nedenle...dedim orjinale dönmeniz daha hayırlı olur diye...
----------------------------------------------------------------------------------
şimdi böyle alt alta getirince bu proc'ları sizinkiyle orjinaldekini sadece cursong değil global dede sizinkinde radiochans gösterilmemiş /silinmiş. ben direk cursong'a baktığım için onu fark etmemişim ..
sadece set cursong satırını ekleyip vermiştim arka sayfada çünkü aldığınız hata mesajında o değişken eksik görünüyordu şimdi iki parçayı üst üste getirince global'dede eksiği fark edebildim.
birde onuda düzelterek deneyelim öleyse.dahada başka bir yerinde eksilmiş bozulmuş biyer yoksa çalışacaktır.sizde yeniden düzenlemek zorunda kalmazsınız.yok gene düzelmez başka başka hata mesajları atarsa ,,başka yerlerdede sorun var demektir.
global'deki eksiği ve cursong değişkeni eklenmiş hali:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
set radiochans "#kardelen"
set streamip "dinle.kardelenfm.com"
set streamport "2000"
set streampass "*******"
set scstatstrigger "!durum"
set scstreamtrigger "!adres"
set scplayingtrigger "!calan"
set sclistenertrigger "!dinleyici"
set scdjtrigger "!dj"
set scsetdjtrigger "!setdj"
set scwishtrigger "!wish"
set scgreettrigger "!greet"
set sclastsongstrigger "!soncalan"
set schelptrigger "!yardim"
set announce "3"
set urltopic "1"
set tellsongs "1"
set tellusers "1"
set tellbitrate "1"
set advertise "1"
set offlinetext "9,1OnLine Dj oLmadığından doLayı Radyo Yayını Bir Süre Kapanmıştır.."
set offlinetopic "14,4 Radyo KardelenFM 15,4Radyo Kanalına Hoş geLdiniz4,1 Yayinimiz Su An OnLine Dj oLmadığından Dolayı Kapalıdır.Kanaldaki Op Arkadaşlardan Yardım aLabilirsiniz. ."
set onlinetext "11,1Yayınızımı Dinlemek için 9,1 | Kardelen FM |sanal radyo online radyo fm, Kardelen chat sohbet kardelen script ismail yk tarkan Adresini Tıklayabilir 9,1iStekleriniz için 11,1
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.Radyo istek 9,1 Adresimizi kullanabilirsiniz.."
set onlinetopic "14,4 Radyo KardelenFM 15,4Radyo Kanalına Hoş geLdiniz4,1 Yayinimiz Su An OnLine14,1Radyomuzu 9,1http://dinle.kardelenfm.com:2000/listen.pls11,1 Adresini Çift 4,1Tıklayarak Dinleyebilirsiniz.."
set streamtext "0,4Radyomuzu dinlemek için Sadece tıklayın & 11,1
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] "
set advertisetext "11,1 En Son 9,1aLbumleri 4,1En Hit Parçaları 14,1Slow, 15,1Pop, 11,1Özgün, 9,1Rock, 4,1Yabancı ve 15,1Tum Muzik 14,1Turlerini 9,1http://dinle.kardelenfm.com:2000/listen.pls11,1 Adresini Çift 4,1Tıklayarak Dinleyebilirsiniz 9,1iStekleriniz için 11,1
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.Radyo istek 9,1 Adresimizi kullanabilirsiniz.."
# end of config #####################
bind pub - $scstatstrigger pub_scstat
bind msg - $scstatstrigger msg_scstat
bind pub - $scplayingtrigger pub_playing
bind msg - $scplayingtrigger msg_playing
bind pub - $scdjtrigger pub_dj
bind msg - $scdjtrigger msg_dj
bind pub D $scsetdjtrigger pub_setdj
bind msg D $scsetdjtrigger msg_setdj
bind pub - $scwishtrigger pub_wish
bind msg - $scwishtrigger msg_wish
bind pub - $scgreettrigger pub_greet
bind msg - $scgreettrigger msg_greet
bind pub - $scstreamtrigger pub_stream
bind msg - $scstreamtrigger msg_stream
bind pub - $sclastsongstrigger pub_lastsongs
bind msg - $sclastsongstrigger msg_lastsongs
bind pub - $sclistenertrigger pub_listener
bind msg - $sclistenertrigger msg_listener
bind pub - $schelptrigger pub_help
bind msg - $schelptrigger msg_help
bind time - "* * * * *" isonline
bind time - "?0 * * * *" advertise
bind nick D * djnickchange
proc shrink { calc number string start bl} { return [expr [string first "$string" $bl $start] $calc $number] }
proc poststuff { mode text } {
global radiochans
foreach chan [channels] {
if {$radiochans == "" } { putserv "$mode $chan :$text" }
if {$radiochans != "" } {
if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} {putserv "$mode $chan :$text"}
}}}
proc schelp { target } {
global scstatstrigger scstreamtrigger scplayingtrigger scdjtrigger sclastsongstrigger scwishtrigger scgreettrigger sclistenertrigger
putserv "notice $target :işte Size KuLLana BiLeceginiz Bazi KomutLar..:"
putserv "notice $target :$scstatstrigger - $scstreamtrigger - $scplayingtrigger - $scdjtrigger - $sclastsongstrigger - $sclistenertrigger"
putserv "notice $target :radyo.tcl Edited ßy KardelenFM"
}
proc pub_help {nick uhost hand chan arg} {
global radiochans
if {$radiochans == "" } { schelp $nick }
if {$radiochans != "" } {
if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { schelp $nick}
}}
proc advertise { nick uhost hand chan arg } {
global advertisetext advertise
if {$advertise == "1" } { poststuff privmsg $advertisetext }
}
proc setdj {nickname djnickname } {
if {$djnickname == "" } { set djnickname $nickname }
global streamip streamport streampass
putlog "shoutcast: new dj: $djnickname ($nickname)"
set temp [open "dj" w+]
puts $temp $djnickname
close $temp
set temp [open "djnick" w+]
puts $temp $nickname
close $temp
putserv "privmsg $nickname :your are now dj of this radio"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
}}
if { $streamstatus == "1" } { poststuff privmsg "$djnickname is now rocking the turntables, enjoy." } else {
putserv "privmsg $nickname :this has not been announced because the radio is currentlfy offline." }
}}
proc listener { target } {
global streamip streamport streampass
putlog "shoutcast: $target requested listener count"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set repl [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]
set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
}}
close $sock
set advertisetext "Su anda $repl Kisi Radyomuzu DinLemekte, maximum Dinleyici Sayısı $maxl, OrtaLama DinLenMe Zamanı İse $avgtime"
}}
proc msg_listener { nick uhost hand arg } { global radiochans; listener $nick }
proc pub_listener { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { listener $nick }}
proc wish { nick arg } {
if {$arg == ""} { putserv "notice $nick :you forgot to add your wish"; return 0}
global streamip streamport streampass
putlog "shoutcast: $nick wants to hear: $arg"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
}}
if { $streamstatus == "1" } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
putserv "privmsg $djnick :(WISH) - $nick - $arg"
} else {
putserv "notice $nick :sorry radio is currently offline" }
}}
proc msg_wish { nick uhost hand arg } { global radiochans; wish $nick $arg }
proc pub_wish { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { wish $nick $arg }}
proc sclastsongs { target } {
global streamip streamport streampass
putlog "shoutcast: $target requested songhistory"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set songs [string range $bl [string first "<TITLE>" $bl] [expr [string last "</TITLE>" $bl] + 7]]
regsub -all "<" $songs "<" songs
regsub -all ">" $songs ">" songs
regsub -all "&" $songs "+" songs
regsub -all """ $songs "\"" songs
regsub -all "'" $songs "'" songs
regsub -all "ÿ" $songs "" songs
regsub -all "<TITLE>" $songs "(" songs
regsub -all "</TITLE>" $songs ")" songs
regsub -all "<SONG>" $songs "" songs
regsub -all "</SONG>" $songs " - " songs
regsub -all "<PLAYEDAT>" $songs "" songs
regsub -all "</PLAYEDAT>" $songs "" songs
regsub -all {\d} $songs "" songs
}}
putserv "notice $target :$songs"
}}
proc msg_lastsongs { nick uhost hand arg } { global radiochans; sclastsongs $nick }
proc pub_lastsongs { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { sclastsongs $nick }}
proc scstream { target } {
global streamip streamport streamtext
putlog "shoutcast: streaminfo requested by $target"
putserv "notice $target :$streamtext"
}
proc msg_stream { nick uhost hand arg } { global radiochans; scstream $nick }
proc pub_stream { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scstream $nick }}
proc scgreet { nick arg } {
if {$arg == ""} { putserv "notice $nick :you forgot to add your greetmessage"; return 0}
global dj streamip streamport streampass
putlog "shoutcast: $nick greets fly out to: $arg"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
}}
if { $streamstatus == "1" } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
putserv "privmsg $djnick :(GREET) - $nick - $arg"
} else {
putserv "notice $nick :sorry radio is currently offline" }
}}
proc msg_greet { nick uhost hand arg } { global radiochans; 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 msg_setdj { nick uhost hand arg } { global radiochans; setdj $nick $arg }
proc pub_setdj { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { setdj $nick $arg }}
proc djnickchange { oldnick uhost hand chan newnick } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
if {$oldnick == $djnick} {
putlog "shoutcast: dj nickchange $oldnick -> $newnick"
set temp [open "djnick" w+]
puts $temp $newnick
close $temp
}}
proc dj { target } {
global streamip streamport streampass
putlog "shoutcast: $target asked for dj info"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
}}
if {$streamstatus == 1} {
if {[file exists dj]} {
set temp [open "dj" r]
set dj [gets $temp]
close $temp
putserv "notice $target :$dj is at the turntables!"
} else { putserv "notice $target :Şuanda Dj $stitle$sgenre" }
} else {
putserv "notice $target :sorry radio is currently offline"
}
close $sock
}}
proc msg_dj { nick uhost hand arg } { global radiochans; dj $nick"}
proc pub_dj { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { dj $nick }}
proc scstat {target} {
global streamip streamport streampass radiochans
putlog "shoutcast: $target asked for serverstats"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
set repl [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]
set curhigh [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set cursong "cursong: [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]"
set surl [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set bitrate [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]
set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
if {$sgenre != ""} {set sgenre " ($sgenre)"}
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
set irc [string range $bl [shrink + 5 "<IRC>" 0 $bl] [shrink - 1 "</IRC>" 0 $bl]]
set icq [string range $bl [shrink + 5 "<ICQ>" 0 $bl] [shrink - 1 "</ICQ>" 0 $bl]]
if {$icq == 0} { set icq "N/A" }
set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
set webhits [string range $bl [shrink + 9 "<WEBHITS>" 0 $bl] [shrink - 1 "</WEBHITS>" 0 $bl]]
set streamhits [string range $bl [shrink + 12 "<STREAMHITS>" 0 $bl] [shrink - 1 "</STREAMHITS>" 0 $bl]]
set version [string range $bl [shrink + 9 "<VERSION>" 0 $bl] [shrink - 1 "</VERSION>" 0 $bl]]
if {$streamstatus == 1} {
if {[file exists dj]} {
set temp [open "dj" r]
set dj [gets $temp]
close $temp
} else { set dj "none" }
set advertisetext "4$stitle$sgenre 2simdi online, 6Radyomuzun Resmi Sayfasını MutLaka Ziyaret Edin 12
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.else {
set advertisetext "4$stitle$sgenre 2simdi offline, 6Radyomuzun Resmi Sayfasını MutLaka Ziyaret Edin 12
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.set advertisetext "2Su an yayinimizi4 $currentl kisi 2DinLemeKtedir, 10Maximum Dinleyici Sayisi ise4 $maxl, 10dir 2RAdyomuzu Ayni Anda en Fazla4 $curhigh Kisi 2DinLemistir."
set advertisetext "2Radyo RADYO KardelenFm'i Webten DinLemek için 4
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.tıkLamanız yeterLi..."
set advertisetext "4Radyo12 KardelenFM 4Dinlemek icin TıkLa..! 12http://dinle.kardelenfm.com:2000/listen.pls 0,7 Simdi Calan parca: 1,13[lrange $cursong 1 [llength $cursong]]0,4 $songurl"
}}
close $sock
}}
proc msg_scstat { nick uhost hand arg } { global radiochans; scstat $nick}
proc pub_scstat { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { scstat $nick }}
proc playing {target} {
global streamip streamport streampass
putlog "shoutcast: $target asked for current song"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
set songtitle [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]
set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
if {$songurl != ""} { set songurl " ($songurl)"}
regsub -all "<" $songtitle "<" songtitle
regsub -all ">" $songtitle ">" songtitle
regsub -all "&" $songtitle "+" songtitle
regsub -all """ $songtitle "\"" songtitle
regsub -all "'" $songtitle "'" songtitle
regsub -all "ÿ" $songtitle "" songtitle
if {$streamstatus == 1} {
set advertisetext "Şu Anda Calan $songtitle$songurl"
} else {
putserv "notice $target :server is currently offline, sorry"
}}}
close $sock
}}
proc msg_playing { nick uhost hand arg } { global radiochans; playing $nick}
proc pub_playing { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { playing $nick }}
proc isonline { nick uhost hand chan arg } {
global radiochans announce tellusers tellsongs tellbitrate urltopic
global offlinetext offlinetopic onlinetext onlinetopic
global streamip streampass streamport
if {$announce == 1 || $tellsongs == 1 || $tellusers == 1 || $tellbitrate == 1} {
set isonlinefile "isonline"
set oldisonline "isonline: 0"
set oldcurlist "curlist: 0"
set oldcurhigh "curhigh: 0"
set oldsong "cursong: 0"
set oldbitrate "bitrate: 0"
if {[file exists $isonlinefile]} {
putlog "shoutcast: checking if stream is online"
set temp [open "isonline" r]
while {[eof $temp] != 1} {
set zeile [gets $temp]
if {[string first "isonline:" $zeile] != -1 } { set oldisonline $zeile }
if {[string first "curlist:" $zeile] != -1 } { set oldcurlist $zeile }
if {[string first "curhigh:" $zeile] != -1 } { set oldcurhigh $zeile }
if {[string first "cursong:" $zeile] != -1 } { set oldsong $zeile }
if {[string first "bitrate:" $zeile] != -1 } { set oldbitrate $zeile }
}
close $temp
}
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0} else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus "isonline: [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]"
set repl "curlist: [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]"
set curhigh "curhigh: [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]"
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set surl "serverurl: [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]"
set cursong "cursong: [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]"
set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
set bitrate "bitrate: [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]"
set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
}}
close $sock
}
set temp [open "isonline" w+]
puts $temp "$streamstatus\n$repl\n$curhigh\n$cursong\n$bitrat e"
close $temp
if {$announce == 3 } {
if {$streamstatus == "isonline: 0" && $oldisonline == "isonline: 1"} {
poststuff privmsg $offlinetext
if {$urltopic == 1} { poststuff topic $offlinetopic }
}
if {$streamstatus == "isonline: 1" && $oldisonline == "isonline: 0" } {
if {$sgenre != ""} {
set sgenre " ($sgenre)"
}
poststuff privmsg "0,1Online DJ 0,1 $stitle"
poststuff privmsg "0,4Radyo RADYO RadYoOoOoOoOoOo KardelenFM ile RenkLi MelodiLer 0,1Radyo9,1 KardelenFM "
if {$urltopic == 1} { poststuff topic "15,1 Djmiz9,1 $stitle 1,7Yayın kalitesi [lindex $bitrate 1]kbits $onlinetopic" }
}}
if {($tellusers == 1) && ($streamstatus == "isonline: 1") && ($oldcurhigh != "curhigh: 0") } {
if {$oldcurhigh != $curhigh} {
}
if {$oldcurlist != $repl} {
poststuff privmsg "1,4 Su Anki Dinleyici Sayısı ($currentl) 0,4http://dinle.kardelenfm.com:2000/listen.pls "
}}
if {($tellsongs == 1) && ($oldsong != $cursong) && ($streamstatus == "isonline: 1") } {
if {$songurl != ""} { set songurl " ($songurl)"}
regsub -all "<" $cursong "<" cursong
regsub -all ">" $cursong ">" cursong
regsub -all "&" $cursong "+" cursong
regsub -all """ $cursong "\"" cursong
regsub -all "'" $cursong "'" cursong
regsub -all "ÿ" $cursong "" cursong
poststuff privmsg "0,1Online DJ9,1 $stitle "
poststuff privmsg "0,5 Turkiye'nin en kaliteli online radyosu ve DJ'leri 0,7SanaL aLemin En Hit Radyosu : 0,7 | Kardelen FM |sanal radyo online radyo fm, Kardelen chat sohbet kardelen script ismail yk tarkan "
poststuff privmsg "0,1<<<Kardelen9,1FM>>> "
poststuff privmsg "0,4Radyo KardelenFM 0,1Siradaki Parca :9,1 [lrange $cursong 1 [llength $cursong]]$songurl "
poststuff privmsg "11,1Radyomuzu Online Dinlemek İçin Tıkla »» 0,6
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] "
poststuff privmsg "4,1Suan : ($currentl) kisi 0,4Radyo KardelenFM 4,1DinLiyOr. "
poststuff privmsg "0,5Istekleriniz icin 0,10
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 0,5 Linkini Kullanabilirsiniz.. "
}
if {($tellbitrate == 1) && ($oldbitrate != $bitrate) && ($streamstatus == "isonline: 1") && ($oldbitrate != "bitrate: 0")} {
poststuff privmsg "bitrate switched to [lindex $bitrate 1]kbps"
}}}
proc join_greet {nick uhost handle channel} {
putserv "NOTICE $nick : 0,12 Radyo KardelenFM'E hos geldiniz $nick! 9,1 Isteklerinizi Icin 8,1
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 0,3 adresinden yazabilirsiniz. 0,5 Acik: Radyo KardelenFM "
putserv "NOTICE $nick : 0,1 Radyomuzu dinlemek icin tiklayin: 12http://dinle.kardelenfm.com:2000/listen.pls"
}
bind join - * join_greet
#gerekli bindler
bind pub - !yes yes
bind pub - !no no
bind pub - !istek istek
bind pub - !msg cevap
bind evnt - init-server baglan_yap
#Gerekli degiskenler
set onick "Kardelen_FM"
set opass "fgwq4750"
#Dj kanali
set djkanal "#istek"
#Radyo kanali
set radyo "#Kardelen"
#ELLEMEYIN (Siz Bİlirsiniz)
proc baglan_yap {type} {
global onick opass
putserv "OPER $onick $opass"
}
proc cevap {nick uhand host chan arg} {
global djkanal radyo
set nick [lindex [split $arg] 0]
if {[isop $nick $djkanal] && [onchan $nick $radyo]} {
putquick "PRIVMSG $radyo :4 [lindex [split $arg] 0] :6[join [lrange [split $arg] 1 end]]"
}
}
proc yes {nick uhand host chan arg} {
global djkanal radyo
set nick [lindex $arg 0]
putquick "PRIVMSG $radyo :4 $nick 6İsteğiniz Arşivimizde Mevcut. Kısa Süre İçinde İsteginiz yayınlanacaktır."
}
proc no {nick uhand host chan arg} {
global djkanal radyo
set nick [lindex $arg 0]
putquick "PRIVMSG $radyo :4 $nick 6Üzgünüm, İsteğiniz Arşivimizde Bulunmamaktadır. Başka Bir İstekte Bulunabilirsiniz."
}
proc istek {nick uhand host chan arg} {
global radyo djkanal
if {[lindex $arg 0] == ""} { return }
dj:ara $nick $arg
}
proc dj:ara {kim mesaj} {
global botnick djkanal radyo
set opbulundu 0
foreach opcuk [chanlist $djkanal] {
if {[isop $opcuk $djkanal] && $opcuk != $botnick} { set opbulundu "1" }
}
if {$opbulundu != "1"} {
putserv "PRIVMSG $radyo :6Üzgünüm 4 $kim 6isteginize cevap verecek dj bulunamadı! Lütfen daha sonra tekrar deneyiniz."
} {
putquick "PRIVMSG $radyo :4 $kim 6Lütfen bekleyiniz. İsteğinizi Kontrol Ediyorum."
putquick "PRIVMSG $djkanal :4 $kim 6Istegi: 12 $mesaj"
putquick "PRIVMSG $radyo :4 $kim 12 $mesaj 6 isteğiniz DJ'lerimize iletilmiştir. Bir sonraki istek isteme süreniz 4 1dk6'dir."
newignore $kim!*@* KardelenFM "Istek Ignore" 1
}
}
channel add $djkanal
channel add $radyo
putlog "yapimci : KardelenFM"