/* 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 } } } } } }