Code: Select all
##########################
######### README #########
##########################
# This script is written by Sm0ke0ut.
# For shoutcast servers only!
#
# Available Commands:
# !np !song = Current Song
# !dj !title = Stream Title/Current DJ
# !server = Server Status
# !status = Current Status of Stream (users/kbps)
# !record = Listeners Peak
# !listen = Get playlist
# !genre = Shows Genre
# !website !site !url = Shows url/site
# !icq = ICQ Number
# !aim = AIM Address
# !request <text> = Request Song
#
# indeed, there's also `Stream IRC`, but that's pretty useless because you're already at IRC...
#
# irc.fayntic.com #fatalerrorgroup
##########################
######## Settings ########
##########################
# Stream URL (e.g. http://domain.tld:port OR http://IP:port)
set url "http://xx.xx.xx.xx:xxxx"
# Playlist URL (Leave empty for default stream playlist)
set playlist ""
# Public/User Channel
set streamch "#Radio"
# Private/DJ Channel
set djch "#Radio-mods"
##########################
###### DO NOT EDIT #######
##########################
package require http
bind pub -|- !song get_shoutcast_song
bind pub -|- !np get_shoutcast_song
proc get_shoutcast_song {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Current Song: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Prave hraje\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !title get_shoutcast_title
bind pub -|- !dj get_shoutcast_title
proc get_shoutcast_title {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Stream Title: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002DJ\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !site get_shoutcast_site
bind pub -|- !url get_shoutcast_site
bind pub -|- !website get_shoutcast_site
proc get_shoutcast_site {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {>http://([^<]+)</a></b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Website\002: http://$title"
} elseif {[regexp {>www.([^<]+)</a></b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Website\002: http://www.$title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !server get_shoutcast_server
proc get_shoutcast_server {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Server Status: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Server\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't contact the server, please check the configuration and/or streaming server"
}
}
}
bind pub -|- !genre get_shoutcast_genre
proc get_shoutcast_genre {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Stream Genre: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Genre\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !status get_shoutcast_status
proc get_shoutcast_status {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {B>([^<]+) of} $data x title]} {
regexp { of ([^<]+) listeners} $data x title2
regexp {listeners ([^<]+)} $data x title3
regexp {Stream is up at ([^<]+) with} $data x title4
puthelp "PRIVMSG $chan :\002Status\002: $title of $title2 $title3 at $title4"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !record get_shoutcast_peak
proc get_shoutcast_peak {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Listener Peak: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002Record\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !listen get_shoutcast_listen
proc get_shoutcast_listen {nick uhost hand chan arg} {
global url streamch playlist
set streamch [string tolower $streamch]
if {[string tolower $chan] == "$streamch"} {
if {$playlist == ""} {
puthelp "PRIVMSG $chan :\002Stream/Listen\002: $url/listen.pls"
} else {
puthelp "PRIVMSG $chan :\002Stream/Listen\002: $playlist"
}
}
}
bind pub -|- !icq get_shoutcast_icq
proc get_shoutcast_icq {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Stream ICQ: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002ICQ\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !aim get_shoutcast_aim
proc get_shoutcast_aim {nick uhost hand chan arg} {
global url streamch
set streamch [string tolower $streamch]
::http::config -useragent "Mozilla/5.0; Shoutinfo"
if {[string tolower $chan] == "$streamch"} {
set http_req [::http::geturl $url -timeout 2000]
if {[::http::status $http_req] != "ok"} {
puthelp "PRIVMSG $chan :Stream is unavailable";
}
set data [::http::data $http_req]
::http::cleanup $http_req
if {[regexp {<font class=default>Stream AIM: </font></td><td><font class=default><b>([^<]+)</b>} $data x title]} {
puthelp "PRIVMSG $chan :\002AIM\002: $title"
} else {
puthelp "PRIVMSG $chan :Couldn't receive any information, checking server status..."
get_shoutcast_server $nick $uhost $hand $chan $arg
}
}
}
bind pub -|- !req get_shoutcast_request
proc get_shoutcast_request {nick uhost hand chan arg} {
global streamch djch
set streamch [string tolower $streamch]
if {[string tolower $chan] == "$streamch"} {
puthelp "PRIVMSG $djch :\002\Request\002: $arg - Requested by: \002$nick\002"
puthelp "NOTICE $nick :\002$arg\002 is succesfully requested"
}
}
I tried something like: set streamch "#Radio #Chan2 #Chan3" or set streamch "#Radio,#Chan2,#Chan3" but it didnt work.