;;----------------------------------------------------------;; ;; iTunes script by Kvn Pfc :: http://rseos.com/EchoScript/ ;; ;; Revised Version August 2011 ;; ;;----------------------------------------------------------;; ;;----------------------------------------------------------;; ;; Options ;; ;; Edit these lines to your preference ;; ;;----------------------------------------------------------;; ;; checkForItunes - Should return $true if you want to use the ;; -- chkprog alias to see if iTunes is running before each ;; -- command. Slows the program down slightly, but the script ;; -- will not run iTunes if it is not open. If $false, the ;; -- script will run slightly faster and it will assume the ;; -- user knows whether or not iTunes is open, and due to ;; -- the COM interface, will run iTunes if it is not open. alias -l checkForITunes { return $false } ;; useTimer - Should return $true if you want the iTunes script ;; -- to run periodically, i.e. every 480 seconds. If $false, ;; -- no timers will be run. alias -l useTimer { return $false } ;; doNotMessageChans -- This should be a space delimited list of ;; -- channels you do not want the script to message. By default ;; -- the script will message your active channel, so if one of ;; -- these channels is your active channel, it will do nothing ;; -- Syntax: #chan1 #chan2 #chan3 #chanN alias -l doNotMessageChans { return #IRCHelp #Support #Opers #Services #BOPM #Denora #Help #twitlive #twitter_JoshuaACasey } ;; period -- Edit the number to the number of seconds you want ;; -- as a delay between automatic messages. alias -l period { return 480 } ;; Colors - Change the double digit numeric to modify the colors ;; -- used in the iTunes script. Play around with it until you ;; -- find what you like. alias c1 { return $+($chr(3),07) } alias c2 { return $+($chr(3),14) } alias c3 { return $+($chr(3),04) } alias c4 { return $+($chr(3),12) } ;; Text separators - These are totally up to you, I recommend ;; -- keeping these fairly simple. Modification is not actually ;; -- necessary. alias -l l { return $+($chr(2),$c3,»,$chr(3),$chr(2)) } alias -l ll { return $+($c2,$1-,$c3,:,$c1) } alias -l it { return $+($c2,[,$c4,iTunes,$c2,],$chr(2),$c3 —›,$chr(2)) } alias -l lll { return $+($c2,[,$c1,$1-,$c2,]) } ;; End Options ---------------------------------------------;; ;; Begin Script --------------------------------------------;; alias itunes { _iTunes if ($useTimer) { .timeriTunes 0 $period noop $!_itunes } } alias itunesoff { .timeriTune* off echo -at $c1 $+ ** $it $c2 $+ iTunes timer stopped. } alias _itunes { if (!$chkprg(iTunes.exe)) { if (!$isid) { var %x = $?!="Would you like to run iTunes?" if (%x) { run iTunes.exe | echo -at $c1 $+ ** $it $+($c2,Now running,$chr(32),$c1,iTunes.exe,$c2,. Type /itunes again when iTunes finishes opening and you have started playing music.) } else { echo -at $c1 $+ ** $it $+ $c2 No action taken. } } .timeriTune* off return } scid $activecid var %p = iTunes, %i = IITTrack, %b = $chr(2), %% = $+(%b,$c3,»,$chr(3),%b) .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { if (!$com(%i)) { echo -at $c1 $+ ** $it $+ $c2 No track is currently playing. | goto error } var %k = $com(%i,Name,2) var %name = $com(%i).result var %k = $com(%i,Album,2), %album = $com(%i).result, $& %k = $com(%i,Artist,2), %artist = $com(%i).result, $& %k = $com(%i,BitRate,2), %bitrate $com(%i).result, $& %k = $com(%i,Time,2), %time = $regsubex($com(%i).result,/(\d+):(\d+)/,$+(\1,$c2,:,$c1,\2)), $& %k = $com(%i,Rating,2), %n = $com(%i).result, $& %rating = $+($str(¤,$calc(%n /20)),%b,$str(-,$calc(5 - (%n /20))),%b), $& %k = $com(%i,Year,2), %year = $com(%i).result var %k = $com(%i,Duration,2), %k = $com(%p,PlayerPosition,2), $& %position = $regsubex($asctime($com(%p).result,n:ss),/(\d+):(\d+)/,$+(\1,$c2,:,$c1,\2)), $& %pr = $calc($com(%p).result / $com(%i).result), $& %progress = $+(%b,$chr(3),4,$str(¦,$floor($calc(%pr *10))),$chr(3),1¦,$chr(3),3,$str(¦,$calc(10- $round($calc(%pr *10),0))),%b,$c2), $& %k = $com(%p,PlayerState,2), %st = $com(%p).result, $& %k = $com(%i,Genre,2), %genre = $com(%i).result, $& %k = $com(%i,PlayedCount,2), %played = $com(%i).result var %msg = $it $ll(Track) %name $iif(!%st,$lll(Paused)) $& $iif(%artist,%% $ll(Artist) %artist $iif(%year,$lll(%year))) $& $iif(%album,%% $ll(Album) %album) $& %% $ll(Position) $+(%position,$c2,/,$c1,%time) $& $lll($calc($round(%pr,2) *100) $+ %) $+([,%progress,]) $& %% $ll(Rating) %rating $& %% $ll(Bitrate) $+(%bitrate,$c2,kbps) $& $iif(%genre,%% $ll(Genre) %genre) $& %% $ll(PlayedCount) %played $+ $chr(15) $iif($active ischan && !$istok($doNotMessageChans,$active,32),msg $active,noop) $iif(c !isincs $chan($active).mode,%msg,$strip(%msg,c))) } :error while ($com(0)) { .comclose $com(1) } } alias pause { if (!$chkprg(iTunes.exe)) { return } .comopen iTunes iTunes.Application noop $com(iTunes,Pause,3) echo -at $c1 $+ ** $it $c2 $+ Music Paused. .comclose iTunes } alias resume { if (!$chkprg(iTunes.exe)) { return } .comopen iTunes iTunes.Application noop $com(iTunes,Play,3) echo -at $c1 $+ ** $it $c2 $+ Music Resumed. .comclose iTunes } alias setrating { if (!$1) { echo -at $c1 $+ ** $it $c2 $+ Please specify a rating to give this song, between 0 and 5 inclusive. return } var %p = iTunes, %i = IITTrack .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { if (!$com(%i)) { echo -at $c1 $+ ** $it $c2 $+ No track is currently selected. .timeriTunes off goto error } var %k = $com(%i,Rating,4,long,$calc($1 *20)), $& %k = $com(%i,Name,2), %n = $com(%i).result echo -at $c1 $+ ** $it $+($c2,Rating for:,$c1,$chr(32),%n,$chr(32),$c2,changed to,$c1,$chr(32),$1,$c2,.) } :error while ($com(0)) { .comclose $com(1) } } alias next { if (!$chkprg(iTunes.exe)) { return } var %p = iTunes, %i = IITTrack .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { var %k = $com(%p,NextTrack,3) .timer 1 .5 _next } :error while ($com(0)) { .comclose $com(1) } } alias back { if (!$chkprg(iTunes.exe)) { return } var %p = iTunes, %i = IITTrack .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { var %k = $com(%p,PreviousTrack,3) .timer 1 .5 _back } :error while ($com(0)) { .comclose $com(1) } } alias -l _back { var %p = iTunes, %i = IITTrack .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { var %k = $com(%i,Name,2) echo -at $c1 $+ ** $it $+($c2,Advanced to previous track:,$c1) $com(%i).result } :error while ($com(0)) { .comclose $com(1) } } alias -l _next { var %p = iTunes, %i = IITTrack .comopen iTunes iTunes.Application if ($comerr) { .timeriTunes off | goto error } if $com(%p,CurrentTrack,3,dispatch* %i) { var %k = $com(%i,Name,2) echo -at $c1 $+ ** $it $+($c2,Advanced to next track:,$c1) $com(%i).result } :error while ($com(0)) { .comclose $com(1) } } alias chkprg { if (!$checkForITunes) { return $true } if ($file(pro.vbs) != 294) { .fopen -o processes processes.txt .fclose processes var %% = aline @@, %x = processes.txt window -h @@ %% Dim z, x, t %% Set z = CreateObject("Scripting.FileSystemObject") %% Set x = z.OpenTextFile(" $+ $mircdir $+ %x $+ ", 2, 1) %% t = "." %% For Each obj In GetObject("winmgmts://" & t & "/root/cimv2").ExecQuery("SELECT * FROM Win32_Process") %% x.Write(obj.Description & vbCrLf) %% Next savebuf @@ pro.vbs window -c @@ } .comopen q wscript.shell .comclose q $com(q,run,3,bstr,wscript " $+ $mircdir $+ pro.vbs",uint,5,bool,true) return $read(processes.txt,r,$1) } ;; End Script ----------------------------------------------;;