CODE
use Win32::OLE;
$file = "F:/Work/Eminem - Brain Damage.mp3";
printf "Trying to add %s to iTunes\n", $file;
$result = iTunesAdd( $file);
printf "Result %d\n", $result;
sub iTunesOpen {
my $failure;
$iTunesApp = new Win32::OLE( "iTunes.Application") or $failure = 1;
if ($failure) {
printf "Failed to launch iTunes application through OLE\n";
} else {
$iTunesVersion = $iTunesApp->Version;
printf "OLE connection established to iTunes application $iTunesVersion\n";
$iTunesOpen = 1;
}
}
sub iTunesAdd {
my $file = shift @_;
my ($mainLibrary, $operationStatus, $trackCollection, $count);
iTunesOpen( ) unless $iTunesOpen;
return undef unless $iTunesOpen;
$mainLibrary = $iTunesApp->LibraryPlayList;
$operationStatus = $mainLibrary->AddFile( $file);
unless (defined $operationStatus) {
printf "File not accepted by iTunes \"%s\"\n", $file);
return 0;
}
sleep 1 while $operationStatus->InProgress;
$trackCollection = $operationStatus->Tracks;
$count = $trackCollection->Count;
printf "Failed to add file to iTunes \"%s\"\n", $file unless $count;
return $count;
}
Perl is a programming language available for Unix, Mac, Windows, Linux etc.
I use Perl 5.8 available from activestate:
ActiveState Perl
Furthermore the Apple iTunes OLE interface is built-in to iTunes 4.5 and the documentation can be found here:
Apple iTunes scripting SDK
Another example script I made is itunes-rating-from-musicmatch that scan through all tracks in iTunes, read their Music Match rating from the MP3 tags in the file and if applicable, set the iTunes rating accordingly.