-- Shoutcast interface through PtokaX script -- Author: RabidWombat -- Requirements: the winamp source of the shoutcast server -- is running on the hub server where this script is AND -- you have installed Clever (a GREAT utility) -- This is the version I downloaded for testing purposes -- http://www.jukkis.net/clever/clever_2_98.zip -- This is site for all offered versions: -- http://www.jukkis.net/ sCleverDir = "C:\\clever\\"; sBotName = "ShoutCastBot"; low = strlower; sHelpOutput = "Commands\r\n"; sOpHelpOutput = "Op Commands\r\n"; function Main() tCommands = { [low("!SC.next")] = { ShoutCastNext, 1, "Play next song in playlist" }, [low("!SC.prev")] = { ShoutCastPrev, 1, "Play prev song in playlist" }, [low("!SC.playlist")] = { ShoutCastPlayList, 0, "Display Playlist" }, [low("!SC.play")] = { ShoutCastPlay, 1, "Play" }, [low("!SC.pause")] = { ShoutCastPause, 1, "Pause" }, [low("!SC.stop")] = { ShoutCastStop, 1, "Stop" }, [low("!SC.status")] = { ShoutCastStatus, 0, "Display Status" }, [low("!SC.help")] = { ShoutCastHelp, 0, "Help Message" }, }; for sCmd, tCmd in tCommands do if(tCmd[2] == 1) then sOpHelpOutput = sOpHelpOutput..sCmd.."-\t"..tCmd[3].."\r\n"; else sHelpOutput = sHelpOutput..sCmd.."-\t"..tCmd[3].."\r\n"; end end frmHub:RegBot(sBotName); end function DataArrival(curUser, sData) local s, e, cmd, args = strfind(sData, "%b<>%s+(%S+)%s*([^%|]*)%|$"); if(cmd == nil) then return 0; end cmd = strlower(cmd); if(tCommands[cmd] and (tCommands[cmd][2] == 0 or curUser.bOperator)) then curUser:SendData(sData); tCommands[cmd][1](curUser, args); return 1; end end function ShoutCastNext() execute(sCleverDir.."clever.exe next"); end function ShoutCastPrev() execute(sCleverDir.."clever.exe prev"); end function ShoutCastPlayList(curUser) execute(sCleverDir.."clever.exe playlist > output.tmp"); readfrom("output.tmp"); local line = read("*a"); if(line) then line = gsub(line, "\n", "\r\n"); curUser:SendData(sBotName, "\r\n"..line); end readfrom(); end function ShoutCastPlay() execute(sCleverDir.."clever.exe play"); end function ShoutCastPause() execute(sCleverDir.."clever.exe pause"); end function ShoutCastStop() execute(sCleverDir.."clever.exe stop"); end function ShoutCastStatus(curUser) execute(sCleverDir.."clever.exe status > output.tmp"); readfrom("output.tmp"); local line = read("*a"); if(line) then line = gsub(line, "\n", "\r\n"); curUser:SendData(sBotName, "\r\n"..line); end readfrom(); end function ShoutCastHelp(curUser) curUser:SendData(sBotName, sHelpOutput); if(curUser.bOperator) then curUser:SendData(sBotName, sOpHelpOutput); end end