/*
Author : iknietjij
URL : www.irc-lounge.com
email : iknietjij@gmail.com
IRC : irc.enterthegame.com #Lounge
Version : 1.0
iTunes 'now playing' script for mIRC
Read readme.txt for more information.
Script uses the $proc alias by myggan - get it off www.mircscripts.org (It's included in the release
Also many thanks to ibt|bla who made spamtunes which I used as a base for the COM connection stuff
*/
on *:START: {
echo -at i.iTunes; Script version $i.itunes.ver loaded.
i.itunes.checkforupdates
}
alias i.itunes.youraction {
; Change the return statement here to what you want the script to do when it fetched the song
; You can use the following variables:
; &artist - The artist of the song
; &songname - The name of the song
; &position - Position in the song in minutes:seconds
; &duration - Total duration of the song in minutes:seconds
; &perc - Percentage of the song that's elapsed
; &year - Year of the song
; &album - Album of the song
; &stream - Stream name
; &streamurl - URL of the audio stream
; &bitrate - Bitrate of what you're listening to
; &pc - Play count (amount of times you've played the song)
; &rating - Your rating of the song
; &comment - Songs comment
; &genre - Genre of the song
; &type - Type of music file (For instance, *.mp3 is MPEG audio file)
; &trackcount - Amount of tracks in the playlist (works for library at least)
; &tracknumber - Number of the current track in the playlist
; &playlist - What playlist is playing
;
; And any mIRC aliases/variables
; ONLY edit the line below this one:
return describe $active 07NP: 03&stream &artist - &songname 07 $+ [&position\&duration]
}
; #####################################################################################################################
; DO NOT EDIT BELOW THIS LINE
; #####################################################################################################################
; $proc alias by myggan - get it off www.mircscripts.org
alias proc {
if (!$0) || (!$isid) return $null
var %query = $iif($1 !isnum 0-,WHERE Name = $+(",$1,")), %result = 0
if ($com(proc_a)) .comclose proc_a
if ($com(proc_b)) .comclose proc_b
.comopen proc_a WbemScripting.SWbemLocator
if (!$com(proc_a)) return $null
.comclose proc_a $com(proc_a,ConnectServer,3,dispatch* proc_b)
if (!$com(proc_b)) return $null
.comclose proc_b $com(proc_b,ExecQuery,3,string,SELECT * FROM Win32_Process %query,dispatch* proc_a)
if (!$com(proc_a)) return $null
!.echo -q $com(proc_a,Count,3)
var %count = $com(proc_a).result, %b = $iif($1 isnum 1-,$1,$iif($2 isnum 1-,$2,1))
if (!%count) return $null
elseif ($istok($1-,0,32)) %result = %count
else {
if ($1 isnum 1-) %b = $1
%result = $iif($comval(proc_a,%b,Name),$replace($ifmatch,$chr(32),$chr(160)),*)
%result = %result $iif($comval(proc_a,%b,ExecutablePath),$replace($ifmatch,$chr(32),$chr(160)),*)
%result = %result $iif($comval(proc_a,%b,WorkingSetSize),$replace($ifmatch,$chr(32),$chr(160)),*)
%result = %result $iif($comval(proc_a,%b,ProcessId),$replace($ifmatch,$chr(32),$chr(160)),*)
%result = %result $iif($comval(proc_a,%b,Priority),$replace($ifmatch,$chr(32),$chr(160)),*)
}
.comclose proc_a
return $iif(%result == * * * * *,$null,%result)
}
; Alias that gets the song and does what you want to do with it
alias wamp {
itune
}
alias itune {
if ($proc(itunes.exe,0) != $null) {
; iTunes is running
; Opening connection
.comopen i.itunes.com iTunes.application
if ($comerr) { i.itunes.comerror }
else {
; No Com error, continuing
var %i.itunes.uselessvar = $com(i.itunes.com,PlayerState,3)
var %i.itunes.isplaying = $com(i.itunes.com).result
if (%i.itunes.isplaying == 1) {
; Song is playing, continuing
var %i.itunes.uselessvar = $com(i.itunes.com,CurrentTrack,3,dispatch* i.itunes.track)
if ($comerr) { i.itunes.comerror }
else {
var %i.itunes.uselessvar = $com(i.itunes.com,CurrentPlaylist,3,dispatch* i.itunes.play)
if ($comerr) { i.itunes.comerror }
else {
var %i.itunes.uselessvar = $com(i.itunes.com,PlayerPosition,3)
var %i.itunes.playerposition = $com(i.itunes.com).result
var %i.itunes.uselessvar = $com(i.itunes.com,CurrentStreamTitle,3)
var %i.itunes.stream = $com(i.itunes.com).result
var %i.itunes.uselessvar = $com(i.itunes.com,CurrentStreamURL,3)
var %i.itunes.streamurl = $com(i.itunes.com).result
if ($comerr) { i.itunes.comerror }
else {
; Get Song Information
var %i.itunes.uselessvar = $com(i.itunes.track,Name,3)
var %i.itunes.songname = $com(i.itunes.track).result
if ($comerr) { i.itunes.comerror }
else {
; artist
var %i.itunes.uselessvar = $com(i.itunes.track,Artist,3)
var %i.itunes.artist = $com(i.itunes.track).result
if ($comerr) { i.itunes.comerror }
else {
; Other info
var %i.itunes.uselessvar = $com(i.itunes.track,Album,3)
var %i.itunes.album = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,BitRate,3)
var %i.itunes.bitrate = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,PlayedCount,3)
var %i.itunes.playedcount = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Rating,3)
var %i.itunes.rating = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Year,3)
var %i.itunes.year = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Duration,3)
var %i.itunes.duration = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Genre,3)
var %i.itunes.genre = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Composer,3)
var %i.itunes.composer = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,BPM,3)
var %i.itunes.bpm = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Comment,3)
var %i.itunes.comment = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,KindAsString,3)
var %i.itunes.kind = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,PlayedDate,3)
var %i.itunes.playeddate = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,TrackCount,3)
var %i.itunes.trackcount = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,TrackNumber,3)
var %i.itunes.tracknumber = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,DateAdded,3)
var %i.itunes.dateadded = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,Compilation,3)
var %i.itunes.compilation = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.track,BPM,3)
var %i.itunes.bpm = $com(i.itunes.track).result
var %i.itunes.uselessvar = $com(i.itunes.play,Name,3)
var %i.itunes.playlist = $com(i.itunes.play).result
if ($comerr) { i.itunes.comerror }
else {
; Change rating:
if (%i.itunes.rating == 0) { var %i.itunes.rating = N/A }
elseif (%i.itunes.rating == 20) { var %i.itunes.rating = 1/5 }
elseif (%i.itunes.rating == 40) { var %i.itunes.rating = 2/5 }
elseif (%i.itunes.rating == 60) { var %i.itunes.rating = 3/5 }
elseif (%i.itunes.rating == 80) { var %i.itunes.rating = 4/5 }
elseif (%i.itunes.rating == 100) { var %i.itunes.rating = 5/5 }
; Change seconds around
var %i.itunes.dur = $i.itunes.mins(%i.itunes.duration) $+ : $+ $i.itunes.secs(%i.itunes.duration)
var %i.itunes.playpos = $i.itunes.mins(%i.itunes.playerposition) $+ : $+ $i.itunes.secs(%i.itunes.playerposition)
var %i.itunes.playperc = $round($calc(%i.itunes.playerposition / %i.itunes.duration * 100),0)
var %i.itunes.returnthis = $replace($i.itunes.youraction,&artist,%i.itunes.artist)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&songname,%i.itunes.songname)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&position,%i.itunes.playpos)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&duration,%i.itunes.dur)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&perc,%i.itunes.playperc)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&year,%i.itunes.year)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&album,%i.itunes.album)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&stream,%i.itunes.stream)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&streamurl,%i.itunes.streamurl)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&bitrate,%i.itunes.bitrate)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&pc,%i.itunes.playedcount)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&rating,%i.itunes.rating)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&comment,%i.itunes.comment)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&genre,%i.itunes.genre)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&type,%i.itunes.kind)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&trackcount,%i.itunes.trackcount)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&tracknumber,%i.itunes.tracknumber)
var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&playlist,%i.itunes.playlist)
%i.itunes.returnthis
;msg $active i.iTunes; %i.itunes.artist - %i.itunes.songname $chr(91) $+ %i.itunes.playpos $+ / $+ %i.itunes.dur $+ $chr(93)
; Close COM connections
.comclose i.itunes.play
.comclose i.itunes.track
; Close COM connection
.comclose i.itunes.com
}
}
}
}
}
}
}
else {
; No song playing. Closing connection
echo -at i.iTunes; No song playing.
.comclose i.itunes.com
}
}
}
else {
echo -at iTunes.exe NOT running.
}
}
alias i.itunes.secs { return $i.itunes.addzero($calc($1 - 60 * $int($calc($1 / 60)))) }
alias i.itunes.mins { return $int($calc($1 / 60)) }
alias i.itunes.addzero {
if ($1 < 10) {
return 0 $+ $1
}
else {
return $1
}
}
alias i.itunes.comerror {
echo -at i.iTunes; COM connection error.
while ($com(0)) {
.comclose $com(1)
}
halt
}
alias i.itunes.ver { return 1.0 }
alias i.itunes.checkforupdates {
if ($sock(i.itunes) != $null) { sockclose i.itunes }
sockopen i.itunes 64.71.177.227 80
}
on *:SOCKOPEN:i.itunes: {
if ($sockerr > 0) {
echo -st i.iTunes; Error checking for script updates. Cannot connect to server?
}
else {
sockwrite -nt $sockname GET /scripts/versions.txt HTTP/1.1
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/??
sockwrite -nt $sockname Host: www.irc-lounge.com
sockwrite -t $sockname $str($crlf,2)
}
}
on *:SOCKREAD:i.itunes: {
if ($sockerr > 0) {
echo -st i.iTunes; Error checking for script updates. Cannot find update file?
}
else {
sockread %i.itunes.sockread
if (i.itunes * iswm %i.itunes.sockread) {
if ($i.itunes.ver < $gettok(%i.itunes.sockread,2,32)) {
echo -st i.iTunes; There is a newer version of i.iTunes out (version $gettok(%i.itunes.sockread,2,32) $+ ) than your current version (version $i.itunes.ver $+ ). Please update your script.
echo -st i.iTunes; Download the new version at: $gettok(%i.itunes.sockread,3,32)
if ($gettok(%i.itunes.sockread,4-,32) != $null) {
echo -st i.iTunes; Notes on the new version:
var %i.itunes.sockread.incvar = 1
while (%i.itunes.sockread.incvar <= $numtok($gettok(%i.itunes.sockread,3-,32),124)) {
echo -st i.iTunes; $gettok($gettok(%i.itunes.sockread,4-,32),%i.itunes.sockread.incvar,124)
inc %i.itunes.sockread.incvar
}
}
}
}
}
}