' File: iTunesRateCurrentTrack.vbs ' Version: 1.0 ' This script will rate the current song. ' Usage: ' iTunesRateCurrentTrack rating [-q] ' ' rating Number of 1/2 stars. ' Valid values: Integers from 1 to 10 inclusive. ' -q Quiet mode. ' Don't display any non-usage error messages. ' ' Examples: ' iTunesRateCurrentTrack 1 ' iTunesRateCurrentTrack 7 -q ' Returns: ' 0 Success ' 1 Invalid arguments provided ' 2 Unable to connect to iTunes ' 3 Unable to determine current track ' Disclaimer: Use at your own risk. ' Send comments to iTunesRateCurrentTrack@varacalli.com ' Copyright © 2007 varacalli.com, All Rights Reserved ' Constants Const MINIMUM_RATING = 1 Const MAXIMUM_RATING = 10 Const RATING_TO_STAR_MULTIPLIER = 10 ' 100 / MAXIMUM_RATING Const MINIMUM_ARGUMENT_COUNT = 1 Const MAXIMUM_ARGUMENT_COUNT = 2 Const QUIET_MODE_SWITCH = "-q" ' Variables Dim iTunes Dim currentTrack Dim rating Dim quietMode ' Default quietMode to off quietMode = False ' Make sure the correct number of arguments are provided. If WScript.Arguments.Count < MINIMUM_ARGUMENT_COUNT Or WScript.Arguments.Count > MAXIMUM_ARGUMENT_COUNT Then Usage() End If ' Get the rating from the command line and validate it. On Error Resume Next rating = CInt(WScript.Arguments(0)) ' Is it a valid integer? If Err.number <> 0 Then Usage() End If ' Is it in the right range? If rating < MINIMUM_RATING Or rating > MAXIMUM_RATING Then Usage() End If ' Get the optional quiet-mode switch If WScript.Arguments.Count = 2 Then If WScript.Arguments(1) = QUIET_MODE_SWITCH Then quietMode = True Else Usage() End If End If ' Connect to iTunes app Set iTunes = CreateObject("iTunes.Application") If iTunes Is Nothing Then Call ErrorMessage ("Unable to connect to iTunes. Please make sure it is running.", 2) End If ' Get the current track. Set currentTrack = iTunes.CurrentTrack If currentTrack Is Nothing Then Call ErrorMessage ("Unable to determine current track.", 3) End If ' Rate the song. Rating is a number from 0-100. currentTrack.Rating = rating * RATING_TO_STAR_MULTIPLIER ' Done. Cleanup(0) ' Display usage message. Quit. Private Sub Usage() Call ErrorMessage( _ "Usage:" & vbCrLf & _ vbTab & "iTunesRateCurrentTrack rating [-q]" & vbCrLf & _ vbCrLf & _ vbTab & "rating" & vbTab & "Number of 1/2 stars." & vbCrLf & _ vbTab & vbTab & "Valid values: Integers from " & MINIMUM_RATING & " to " & MAXIMUM_RATING & "inclusive." & vbCrLf & _ vbTab & "-q" & vbTab & "Quiet mode." & vbCrLf & _ vbTab & vbTab & "Don't display any non-usage error messages." & vbCrLf & _ vbCrLf & _ "Examples:" & vbCrLf & _ vbTab & "iTunesRateCurrentTrack 1" & vbCrLf & _ vbTab & "iTunesRateCurrentTrack 7 -q" _ , 1) End Sub ' Display error message. Quit. Private Sub ErrorMessage(ByVal message, ByVal errorCode) If Not quietMode Then WScript.Echo "##### iTunes Rate Current Track Script #####" & vbCrLf _ & vbCrLf & _ message & vbCrLf & _ vbCrLf & _ vbCrLf & _ "Copyright © 2007 varacalli.com. All rights reserved." & vbCrLf & _ "Send comments to iTunesRateCurrentTrack@varacalli.com" End If Call Cleanup(errorCode) End Sub ' Clean up object references. Quit, setting the error code. Private Sub Cleanup(ByVal errorCode) Set iTunes = Nothing Set currentTrack = Nothing WScript.Quit errorCode End Sub