;;----------------------------------------------------------;;
;; 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
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
%% 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
}
.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 ----------------------------------------------;;