CopyAlbumArtwork.js

/**
 * Try and find artwork from copies of audio files
 */
var fso = new ActiveXObject("Scripting.FileSystemObject");
var iTunesApp = WScript.CreateObject("iTunes.Application");
var logFile = fso.CreateTextFile("CopyAlbumArtwork.log", true);
var NAME = "cover";
var i;
var ITTrackKindFile = 1;
var AlbumArt = new Array();
var imageExtensions = new Array(4);
imageExtensions[1] = 'jpg';
imageExtensions[2] = 'png';
imageExtensions[3] = 'bmp';
var libraryPlaylist = iTunesApp.LibraryPlaylist;
var tracks = libraryPlaylist.Tracks;
function saveArtwork( currTrack ) {
 var file = null;
 var location = currTrack.location;
 var artwork = currTrack.Artwork.Item(1);
 var format = artwork.Format;
 file = location.substring(0, location.lastIndexOf('\\') + 1) + NAME + '.' + imageExtensions[format];
 if ( ! fso.FileExists(file) ) {
 artwork.SaveArtworkToFile(file);
 logFile.WriteLine( "Saved artwork for this album " + currTrack.Album );
 } else {
 logFile.WriteLine( "Found previously stored artwork for this album " + currTrack.Album );
 } 
 return file;
}
for (i = 1; i <= tracks.Count; i++) 
{
 var currTrack = tracks.item(i);
 if ( ( currTrack.Kind == ITTrackKindFile ) &&
 ( currTrack.KindAsString.indexOf("audio file" ) != -1 ) )
 {
 // If we have artwork for this album but not saved in AlbumArt, save it
 if (currTrack.Artwork.Count > 0) {
 // NB: This is a bit risky for Albums with names like "Greatest Hits", therefore check that we don't already have artwork
 if ( ( currTrack.Album != "" ) && ( currTrack.Album != "Unknown Album" ) && ( AlbumArt[currTrack.Album] == null ) ) {
 try {
 AlbumArt[currTrack.Album] = saveArtwork( currTrack );
 } catch (exception) {
 logFile.WriteLine( "Failure on " + currTrack.Album );
 }
 } 
 // Missing artwork
 } else {
 logFile.WriteLine("Missing artwork for album " + currTrack.Album );
// Did we already extract the artwork for this album?
 if ( ( currTrack.Album != "" ) && ( currTrack.Album != "Unknown Album" ) && ( AlbumArt[currTrack.Album] != null ) ) {
 currTrack.AddArtworkFromFile(AlbumArt[currTrack.Album]);
 // Refresh track information from its associated file, so that artwork is updated
 currTrack.UpdateInfoFromFile();
 logFile.WriteLine( "Added artwork for this album " + currTrack.Album );
 } else {
 var location = currTrack.location;
 // Don't look for imageExtensions[0] as that is not defined
 for ( format = 1; format < imageExtensions.length; format++ ) {
 var file = location.substring(0, location.lastIndexOf('\\') + 1) + NAME + '.' + imageExtensions[format];
 
 if ( fso.FileExists(file) ) {
 logFile.WriteLine("CopyAlbumArtwork found image file for " + currTrack.Artist + ", " + currTrack.Album + ", " + currTrack.Name );
 } else {
 logFile.WriteLine("Missing artwork and nothing found " + currTrack.Artist + ", " + currTrack.Album + ", " + currTrack.Name + ", " + currTrack.Location + " at " + file );
 }
 }
 }
 }
 }
}

Leave a comment