egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

shoutcast.tcl v1.03 by domsen

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
yelow79
Voice


Joined: 22 Jun 2011
Posts: 10

PostPosted: Sun Jun 26, 2011 12:13 am    Post subject: shoutcast.tcl v1.03 by domsen Reply with quote

This script is a Great script on it's own. However for my needs I have needed to change a few things. I am trying to learn a little bit of tcl on my own for this project.

Here is what I am looking for at the moment. The script runs the advertisement every 10 minutes. I can't for the life of me figure out how to change that to like say every 30 minutes. Thank you in advance here is what I am working with
Code:

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

set radiochans "#sawit-chat #radio-staff"
set adminchans "#radio-staff"
set streamip "127.0.0.1"
set streamurl "Radio.MisFits-irc.net"
set streamport "8004"
set streampass "password"
set scstatstrigger ".stats"
set scstreamtrigger ".stream"
set scplayingtrigger ".playing"
set sclistenertrigger ".listener"
set scdjtrigger ".dj"
set scsetdjtrigger ".setdj"
set scunsetdjtrigger ".unsetdj"
set scwishtrigger ".request"
set scgreettrigger ".greet"
set sclastsongstrigger ".lastsongs"
set schelptrigger ".help"
set scadtrigger ".radio"

set alertadmin ""
set doalertadmin "0"

set announce "1"

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

set advertise "1"
set advertiseonlyifonline "1"

set offlinetext "going offline now"
set offlinetopic "MisFits-Radio is OFFLINE"

set onlinetext "\0039 .:|:. MisFits-Radio .:|:. Playing: /cursong/@/bitrate/kbps .:|:. \00311 /listeners/ \0039 .:|:. /peak/$
set onlinetopic "\0038...\0037:::\0034MisFits-Radio is ONLINE\0037:::\0038... \00310If you are interested in being a DJ or i$

set streamtext "listen by clicking http://$streamurl:$streamport/listen.pls"

set advertisetext "\0039 .:|:. MisFits-Radio .:|:. Playing: /cursong/@/bitrate/kbps .:|:. \00311 /listeners/ \0039 .:|:. /pe$

# end of config #####################

bind pub - $scstatstrigger  pub_scstat
#bind msg - $scstatstrigger  msg_scstat
bind pub - $scplayingtrigger  pub_playing
#bind msg - $scplayingtrigger  msg_playing

bind pub - $scdjtrigger  pub_dj
#bind msg - $scdjtrigger  msg_dj

bind pub D $scsetdjtrigger  pub_setdj
#bind msg D $scsetdjtrigger  msg_setdj

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

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

bind pub - $scgreettrigger  pub_greet
#bind msg - $scgreettrigger  msg_greet

bind pub - $scstreamtrigger pub_stream
#bind msg - $scstreamtrigger msg_stream
bind pub - $sclastsongstrigger pub_lastsongs
#bind msg - $sclastsongstrigger msg_lastsongs

bind pub - $sclistenertrigger pub_listener
#bind msg - $sclistenertrigger msg_listener

bind pub - $schelptrigger pub_help
#bind msg - $schelptrigger msg_help

bind pub - $scadtrigger pub_ad
#bind msg - $scadtrigger msg_ad

bind time - "* * * * *" isonline
bind time - "?0 * * * *" advertise
bind nick D * djnickchange


set dj ""
set surl ""
set bitrate ""
set stitle ""

if {[file exists dj]} {
set temp [open "dj" r]
set dj [gets $temp]
close $temp
}

proc shrink { calc number string start bl} { return [expr [string first "$string" $bl $start] $calc $number] }


proc status { } {
global streamip streamport streampass
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
}}
close $sock
}
if { $streamstatus == "1" } { return 1 } else { return 0 }
}




proc poststuff { mode text } {
global radiochans dj
set listeners "0"
set peak "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 "listeners:" $zeile] != -1 } { set listeners $zeile }
if {[string first "peak:" $zeile] != -1 } { set peak $zeile }
if {[string first "cursong:" $zeile] != -1 } { set cursong [lrange $zeile 1 [llength $zeile]]}
if {[string first "sgenre:" $zeile] != -1 } { set sgenre [lrange $zeile 1 [llength $zeile]]}
if {[string first "serverurl:" $zeile] != -1 } { set surl [lindex $zeile 1] }
if {[string first "bitrate:" $zeile] != -1 } { set bitrate [lindex $zeile 1] }
if {[string first "stitle:" $zeile] != -1 } { set stitle [lindex $zeile 1] }
}
close $temp

regsub -all "/stitle/" $text "$stitle" text
regsub -all "/listeners/" $text "$listeners" text
regsub -all "/peak/" $text "$peak" text
regsub -all "/cursong/" $text "$cursong" text
regsub -all "/sgenre/" $text "$sgenre" text
regsub -all "/surl/" $text "$surl" text
regsub -all "/bitrate/" $text "$bitrate" text
regsub -all "/dj/" $text "$dj" text

foreach chan [channels] {
if {$radiochans == "" } { putserv "$mode $chan :$text" }
if {$radiochans != "" } {
if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1)} {putserv "$mode $chan :$text"}
}}}


proc schelp { target } {
global scstatstrigger scstreamtrigger scplayingtrigger scdjtrigger sclastsongstrigger scwishtrigger scgreettrigger sclistene$
putserv "notice $target :the following commands are available:"
putserv "notice $target :$scstreamtrigger - $scplayingtrigger - $scdjtrigger - $sclastsongstrigger - $scwishtrigger - $sclis$
}

proc pub_help {nick uhost hand chan arg} {
global radiochans
if {$radiochans == "" } { schelp $nick }
if {$radiochans != "" } {
if {([lsearch -exact [string tolower $radiochans] [string tolower $chan]] != -1) || ($radiochans == "")} { schelp $nick}
}}

proc advertise { nick uhost hand chan arg } {
global advertisetext advertise advertiseonlyifonline
if {$advertise == "1" && $advertiseonlyifonline == "0"} { poststuff privmsg "$advertisetext" }
if {$advertise == "1" && $advertiseonlyifonline == "1" && [status] == 1} { poststuff privmsg "$advertisetext" }
}


proc setdj {nickname djnickname } {
if {$djnickname == "" } { set djnickname $nickname }
global streamip streamport streampass dj
putlog "shoutcast: new dj: $djnickname ($nickname)"
set temp [open "dj" w+]
puts $temp $djnickname
close $temp
set temp [open "djnick" w+]
puts $temp $nickname
close $temp
if { [status] == "1" } { poststuff privmsg "$djnickname is now rocking the turntables, enjoy."
if { $ctodjc == "1" } {
set temp [open "isonline" r]
while {[eof $temp] != 1} {
set zeile [gets $temp]
if {[string first "isonline:" $zeile] != -1 } { set oldisonline $zeile }
if {[string first "listeners:" $zeile] != -1 } { set oldlisteners $zeile }
if {[string first "peak:" $zeile] != -1 } { set oldpeak $zeile }
if {[string first "cursong:" $zeile] != -1 } { set oldsong $zeile }
if {[string first "bitrate:" $zeile] != -1 } { set oldbitrate $zeile }
}
close $temp
}
} else {
putserv "privmsg $nickname :this has not been announced because the radio is currentlfy offline." }
}


proc msg_setdj { nick uhost hand arg } { setdj $nick $arg }
proc pub_setdj { nick uhost hand chan arg } { global adminchans; if {([lsearch -exact [string tolower $adminchans] [string t$

proc unsetdj { nick } {
global dj
set dj ""
file delete dj
putserv "notice $nick :dj deleted"
}



proc msg_unsetdj { nick uhost hand arg } { unsetdj $nick }
proc pub_unsetdj { nick uhost hand chan arg } { global adminchans; if {([lsearch -exact [string tolower $adminchans] [string$


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 peak [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
}}
close $sock
putserv "notice $target :there are currently $repl unique people listening, the listener maximum is $maxl, our user peak was$
}}

proc msg_listener { nick uhost hand arg } { listener $nick }
proc pub_listener { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [strin$

proc wish { nick arg } {
if {$arg == ""} { putserv "notice $nick :you forgot to add your request (song title - artist)"; return 0}
if { [status] == "1" } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
putserv "privmsg $djnick :(request) - $nick - $arg"
} else {
putserv "notice $nick :sorry radio is currently offline" }
}


proc msg_wish { nick uhost hand arg } { wish $nick $arg }
proc pub_wish { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string to$

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 "&#x3C;" $songs "<" songs
regsub -all "&#x3E;" $songs ">" songs
regsub -all "&#x26;" $songs "+" songs
regsub -all "&#x22;" $songs "\"" songs
regsub -all "&#x27;" $songs "'" songs
regsub -all "&#xFF;" $songs "" songs
regsub -all "<TITLE>" $songs "(" songs
regsub -all "</TITLE>" $songs ")" songs
regsub -all "<SONG>" $songs "" songs
regsub -all "</SONG>" $songs " - " songs
regsub -all "<PLAYEDAT>" $songs "" songs
regsub -all "</PLAYEDAT>" $songs "" songs
regsub -all {\d} $songs "" songs

regsub -all "&#xB4;" $songs "´" songs
regsub -all "&#x96;" $songs "-" songs
regsub -all "&#xF6;" $songs "ö" songs
regsub -all "&#xE4;" $songs "ä" songs
regsub -all "&#xFC;" $songs "ü" songs
regsub -all "&#xD6;" $songs "Ö" songs
regsub -all "&#xC4;" $songs "Ä" songs
regsub -all "&#xDC;" $songs "Ü" songs
regsub -all "&#xDF;" $songs "ß" songs



}}
close $sock
putserv "notice $target :$songs"
}}


proc msg_lastsongs { nick uhost hand arg } { sclastsongs $nick }
proc pub_lastsongs { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [stri$


proc scad { target } {
global advertisetext advertise advertiseonlyifonline
putlog "shoutcast: ad requested by $target"
if {$advertise == "1" && $advertiseonlyifonline == "0" && [status] != 1} { putserv "notice $target Radio is currently offlin$
if {$advertise == "1" && $advertiseonlyifonline == "1" && [status] == 1} { putserv "notice $target $advertisetext" }
}

proc scstream { target } {
global streamip streamport streamtext
putlog "shoutcast: streaminfo requested by $target"
putserv "notice $target :$streamtext"
}

proc msg_stream { nick uhost hand arg } { scstream $nick }
proc pub_stream { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string $

proc scgreet { nick arg } {
if {$arg == ""} { putserv "notice $nick :you forgot to add your greetmessage"; return 0}
if { [status] == "1" } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
putserv "privmsg $djnick :(GREET) - $nick - $arg"
} else {
putserv "notice $nick :sorry radio is currently offline" }
}


proc msg_greet { nick uhost hand arg } { scgreet $nick $arg }
proc pub_greet { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string t$



proc djnickchange { oldnick uhost hand chan newnick } {
set temp [open "djnick" r]
set djnick [gets $temp]
close $temp
if {$oldnick == $djnick} {
putlog "shoutcast: dj nickchange $oldnick -> $newnick"
set temp [open "djnick" w+]
puts $temp $newnick
close $temp
}}





proc dj { target } {
global streamip streamport streampass dj
putlog "shoutcast: $target asked for dj info"
if {[status] == 1} {
if {[file exists dj]} {
set temp [open "dj" r]
set dj [gets $temp]
close $temp
putserv "notice $target :$dj is at the turntables!"
} else { putserv "notice $target :sorry, no dj name available" }
} else { putserv "notice $target :sorry radio is currently offline" }
}


proc msg_dj { nick uhost hand arg } { dj $nick"}
proc pub_dj { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string tolo$



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 peak [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set surl [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]
set maxl [string range $bl [shrink + 14 "<MAXLISTENERS>" 0 $bl] [shrink - 1 "</MAXLISTENERS>" 0 $bl]]
set bitrate [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]
set stitle [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]
set sgenre [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]
if {$sgenre != ""} {set sgenre " ($sgenre)"}
set avgtime [string range $bl [shrink + 13 "<AVERAGETIME>" 0 $bl] [shrink - 1 "</AVERAGETIME>" 0 $bl]]
set irc [string range $bl [shrink + 5 "<IRC>" 0 $bl] [shrink - 1 "</IRC>" 0 $bl]]
set icq [string range $bl [shrink + 5 "<ICQ>" 0 $bl] [shrink - 1 "</ICQ>" 0 $bl]]
if {$icq == 0} { set icq "N/A" }
set aim [string range $bl [shrink + 5 "<AIM>" 0 $bl] [shrink - 1 "</AIM>" 0 $bl]]
set webhits [string range $bl [shrink + 9 "<WEBHITS>" 0 $bl] [shrink - 1 "</WEBHITS>" 0 $bl]]
set streamhits [string range $bl [shrink + 12 "<STREAMHITS>" 0 $bl] [shrink - 1 "</STREAMHITS>" 0 $bl]]
set version [string range $bl [shrink + 9 "<VERSION>" 0 $bl] [shrink - 1 "</VERSION>" 0 $bl]]
if {$streamstatus == 1} {
if {[file exists dj]} {
set temp [open "dj" r]
set dj [gets $temp]
close $temp
} else { set dj "none" }
putserv "notice $target :$stitle$sgenre is online, running shoutcast $version and streaming at $bitrate kbps,  your dj is $d$
} else {
putserv "notice $target :$stitle$sgenre is currenty offline, running shoutcast $version and streaming at $bitrate kbps, chec$
putserv "notice $target :there are currently $repl unique people listening, the listener maximum is $maxl, our user peak was$
putserv "notice $target :the average user is listening $avgtime seconds, our stream had $webhits webhits and $streamhits str$
putserv "notice $target :you can contact the team by irc on $irc"
}}
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 $


proc playing {target} {
global streamip streamport streampass dj
putlog "shoutcast: $target asked for current song"
if {[catch {set sock [socket $streamip $streamport] } sockerror]} {
putlog "error: $sockerror"
return 0 } else {
puts $sock "GET /admin.cgi?pass=$streampass&mode=viewxml&page=0 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: $streamip"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "standalone" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<STREAMSTATUS>" 0 $bl] [shrink - 1 "</STREAMSTATUS>" 0 $bl]]
set songtitle [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]
set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
if {$songurl != ""} { set songurl " ($songurl)"}
regsub -all "&#x3C;" $songtitle "<" songtitle
regsub -all "&#x3E;" $songtitle ">" songtitle
regsub -all "&#x26;" $songtitle "+" songtitle
regsub -all "&#x22;" $songtitle "\"" songtitle
regsub -all "&#x27;" $songtitle "'" songtitle
regsub -all "&#xFF;" $songtitle "" songtitle
regsub -all "&#xB4;" $songtitle "´" songtitle
regsub -all "&#x96;" $songtitle "-" songtitle
regsub -all "&#xF6;" $songtitle "ö" songtitle
regsub -all "&#xE4;" $songtitle "ä" songtitle
regsub -all "&#xFC;" $songtitle "ü" songtitle
regsub -all "&#xD6;" $songtitle "Ö" songtitle
regsub -all "&#xC4;" $songtitle "Ä" songtitle
regsub -all "&#xDC;" $songtitle "Ü" songtitle
regsub -all "&#xDF;" $songtitle "ß" songtitle

if {$streamstatus == 1} {
putserv "notice $target :now playing $songtitle"
} else {
putserv "notice $target :server is currently offline, sorry"
}}}
close $sock
}}

proc msg_playing { nick uhost hand arg } { playing $nick}
proc pub_playing { nick uhost hand chan arg } { global radiochans; if {([lsearch -exact [string tolower $radiochans] [string$



proc isonline { nick uhost hand chan arg } {
global radiochans announce tellusers tellsongs tellbitrate urltopic dj
global offlinetext offlinetopic onlinetext onlinetopic
global streamip streampass streamport dj
global doalertadmin alertadmin

if {$announce == 1 || $tellsongs == 1 || $tellusers == 1 || $tellbitrate == 1} {
set isonlinefile "isonline"
set oldisonline "isonline: 0"
set oldlisteners "listeners: 0"
set oldpeak "peak: 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 "listeners:" $zeile] != -1 } { set oldlisteners $zeile }
if {[string first "peak:" $zeile] != -1 } { set oldpeak $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 "listeners: [string range $bl [shrink + 19 "<REPORTEDLISTENERS>" 0 $bl] [shrink - 1 "</REPORTEDLISTENERS>" 0 $bl]]"
set peak "peak: [string range $bl [shrink + 15 "<PEAKLISTENERS>" 0 $bl] [shrink - 1 "</PEAKLISTENERS>" 0 $bl]]"
set currentl [string range $bl [shrink + 18 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
set surl "serverurl: [string range $bl [shrink + 11 "<SERVERURL>" 0 $bl] [shrink - 1 "</SERVERURL>" 0 $bl]]"
set cursong "cursong: [string range $bl [shrink + 11 "<SONGTITLE" 0 $bl] [shrink - 1 "</SONGTITLE>" 0 $bl]]"
set songurl [string range $bl [shrink + 9 "<SONGURL>" 0 $bl] [shrink - 1 "</SONGURL>" 0 $bl]]
set bitrate "bitrate: [string range $bl [shrink + 9 "<BITRATE>" 0 $bl] [shrink - 1 "</BITRATE>" 0 $bl]]"
set stitle "stitle: [string range $bl [shrink + 13 "<SERVERTITLE>" 0 $bl] [shrink - 1 "</SERVERTITLE>" 0 $bl]]"
set sgenre "sgenre: [string range $bl [shrink + 13 "<SERVERGENRE>" 0 $bl] [shrink - 1 "</SERVERGENRE>" 0 $bl]]"
}}
close $sock
}

set temp [open "isonline" w+]
puts $temp "$streamstatus\n$repl\n$peak\n$cursong\n$bitrate\n$stitle\n$sgenre\n$surl"
close $temp
if {$announce == 1 } {
if {$streamstatus == "isonline: 0" && $oldisonline == "isonline: 1"} {
        poststuff privmsg $offlinetext
        if {$doalertadmin == "1"} { sendnote domsen $alertadmin "radio is now offline" }
        if {$urltopic == 1} { poststuff topic $offlinetopic }
}
if {$streamstatus == "isonline: 1" && $oldisonline == "isonline: 0" } {
if {$sgenre != ""} {
set sgenre " ([lrange $sgenre 1 [llength $sgenre]] )"
}
poststuff privmsg "$onlinetext"
if {$urltopic == 1} { poststuff topic "$onlinetopic" }
}}
if {($tellusers == 1) && ($streamstatus == "isonline: 1") && ($oldpeak != "peak: 0") } {
if {$oldpeak != $peak} {
poststuff privmsg "new listener peak: [lindex $peak 1]"
}
if {$oldlisteners != $repl} {
poststuff privmsg "there are currently [lindex $repl 1] ($currentl) people listening"
}}
if {($tellsongs == 1) && ($oldsong != $cursong) && ($streamstatus == "isonline: 1") } {
if {$songurl != ""} { set songurl " ($songurl)"}
regsub -all "&#x3C;" $cursong "<" cursong
regsub -all "&#x3E;" $cursong ">" cursong
regsub -all "&#x26;" $cursong "+" cursong
regsub -all "&#x22;" $cursong "\"" cursong
regsub -all "&#x27;" $cursong "'" cursong
regsub -all "&#xFF;" $cursong "" cursong
regsub -all "&#xB4;" $cursong "´" cursong
regsub -all "&#x96;" $cursong "-" cursong
regsub -all "&#xF6;" $cursong "ö" cursong
regsub -all "&#xE4;" $cursong "ä" cursong
regsub -all "&#xFC;" $cursong "ü" cursong
regsub -all "&#xD6;" $cursong "Ö" cursong
regsub -all "&#xC4;" $cursong "Ä" cursong
regsub -all "&#xDC;" $cursong "Ü" cursong
regsub -all "&#xDF;" $cursong "ß" cursong
putlog $cursong
#poststuff privmsg "now playing: $cursong"
}

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

putlog "*** shoutcast.tcl v1.03 by domsen <domsen@domsen.org> succesfully loaded. turn it up baby."

I hope I didn't miss anything I copied and pasted out of putty


Last edited by yelow79 on Sun Jun 26, 2011 1:45 am; edited 1 time in total
Back to top
View user's profile Send private message
yelow79
Voice


Joined: 22 Jun 2011
Posts: 10

PostPosted: Sun Jun 26, 2011 1:42 am    Post subject: one more question about using isop Reply with quote

Where would I add the isop $nick to make this only work for ops

the section of the script for the trigger is all i will post here. To avoid confusion I won't post where I have tried to add isop. Thank you again for any help.
Code:

set scadtrigger "!radio"

bind pub - $scadtrigger sc_ad
bind msg - $scadtrigger sc_ad

proc sc_ad { nick uhost hand chan arg } {
global radiochans advertisetext advertise advertiseonlyifonline
putlog "shoutcast: ad requested by $nick"
if { $advertise == "1" && $advertiseonlyifonline == "1" && [status] != 1} { poststuff privmsg "Radio is currently offline" }
if { $advertise == "1" && $advertiseonlyifonline == "1" && [status] == 1} { poststuff privmsg "$advertisetext" }
}


Last edited by yelow79 on Mon Jun 27, 2011 1:11 am; edited 1 time in total
Back to top
View user's profile Send private message
x-y-no
Voice


Joined: 09 Aug 2009
Posts: 7
Location: Fort Lauderdale, FL

PostPosted: Sun Jun 26, 2011 8:58 pm    Post subject: Reply with quote

This line:

Code:

bind time - "?0 * * * *" advertise


is what's making the ad go every 10 minutes. I don't think you can do complicated stuff in the mask, so I'd just make this two lines:

Code:

bind time - "0 * * * *" advertise
bind time - "30 * * * *" advertise


Put the isop check in the top of your procedure:

Code:

proc sc_ad { nick uhost hand chan arg } {
    if {![isop $nick $chan]} {
      putserv "PRIVMSG $chan : You do not have permission."
      return
   }

...


or something like that.
Back to top
View user's profile Send private message
yelow79
Voice


Joined: 22 Jun 2011
Posts: 10

PostPosted: Mon Jun 27, 2011 1:01 am    Post subject: Reply with quote

Solved thank you

I had tried changing this line but changing it alone didn't work

Code:

bind time - "?0 * * * *" advertise


I had to do like you said

Code:
 
bind time - "0 * * * *" advertise
bind time - "30 * * * *" advertise


and here is what I ended up with for the sc_ad command

Code:

proc sc_ad { nick uhost hand chan arg } {
global advertisetext advertise
putlog "shoutcast: ad requested by $nick"
if { [isvoice $nick $chan] } { putserv "privmsg $chan $advertisetext" }
}


I know that I had asked about adding isop, which is what I had intended but then needed to change it so that voiced dj's could trigger the add.
I was going to set it so that it would trigger for ops or anyone with DJ in their nick however I couldn't remember the "or" command and this didn't work

Code:

proc sc_ad { nick uhost hand chan arg } {
global advertisetext advertise
putlog "shoutcast: ad requested by $nick"
if { [isop $nick $chan] } { putserv "privmsg $chan $advertisetext" }
if { $nick == "dj*" } { putserv "privmsg $chan $advertisetext" }
}

this is what I was getting from the bot

Quote:
[23:34:34] shoutcast: ad requested by dj-yelow


But nothing in the channel.

Hopes this helps out those who may have similar issues and Thanks again for the help.
Back to top
View user's profile Send private message
speechles
Revered One


Joined: 26 Aug 2006
Posts: 1398
Location: emerald triangle, california (coastal redwoods)

PostPosted: Mon Jun 27, 2011 1:19 am    Post subject: Reply with quote

Code:
if { [isop $nick $chan] } { putserv "privmsg $chan $advertisetext" }
if { $nick == "dj*" } { putserv "privmsg $chan $advertisetext" }


Change that to look like this:
Code:
if {[isop $nick $chan] || [string match -nocase "dj*" $nick]} { putserv "privmsg $chan :$advertisetext" }


Within an if construct, || equals OR, && equals AND.

The reason it didn't output anything, was you've forgotten the : (colon) to seperate the target ($chan) from the message ($advertisetext) when the privmsg was interpreted by the IRCD.
_________________
speechles' eggdrop tcl archive
Back to top
View user's profile Send private message
yelow79
Voice


Joined: 22 Jun 2011
Posts: 10

PostPosted: Mon Jun 27, 2011 1:43 am    Post subject: Reply with quote

Thank you for sorting that out for me speechles,

and yes I remember now that || equals or, I knew that && equals and, != means doesn't equal, and == equals

Code:

proc sc_ad { nick uhost hand chan arg } {
global advertisetext advertise
putlog "shoutcast: ad requested by $nick"
if { [isvoice $nick $chan] } { putserv "privmsg $chan $advertisetext" }
}


actually worked without the colon as you say. Tho it will probably be better added in.

This is the first TCL script I have ever attempted at all. I have done some mIRC scripting and C++ but never TCL.

Thanks for help
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber