Friday, July 30, 2010

#1 2006-11-29 07:10:36 am

erroetdisco
Member
Registered: 2006-11-29
Posts: 1

iTunes Script For Missing Tracks on Album

I'm new to AppleScript, but learning fast...

I'm trying to write a script that will find albums in my iTunes library that do not have all of their tracks. For example, if I ripped a cd from my collection and it was scratched, I might not have been able to import track 5, but 1-4 and 6-12 imported fine. With thousands of songs in my library, it's pretty much impossible to spot these missing tracks until I'm listening to an album and the song I expect to hear next is not there.

My first attempt is a script that matches the Track Count property of a track against the count of tracks with the same album name.

Here's the code I came up with:

Applescript:

tell application "iTunes"
   
   set SourcePlaylist to "Sample Playlist"
   set TargetPlaylist to "Albums with Missing Tracks"
   
   if (playlist TargetPlaylist exists) then delete playlist TargetPlaylist
   
   make new playlist with properties {name:TargetPlaylist}
   
   set alltracks to every track of playlist SourcePlaylist
   
   repeat with i from 1 to count (every track of playlist SourcePlaylist)
       
       set albummatch to album of item i of alltracks
       set TrackMatchCount to track count of item i of alltracks
       set albummatchcount to count (every track of Sample Playlist where album = albummatch)
       if TrackMatchCount is not equal to albummatchcount then
           duplicate item i of alltracks to playlist TargetPlaylist
       end if
       
   end repeat
   
end tell

This works, but it's really slow... the library is around 8000 songs and it takes over 10 minutes to run.

Any hints on speeding up the code, especially when it comes to looping through the entire library?

Also, two other problems I've considered but haven't attempted to handle yet are...
-What if the track has no track count?
-What if two albums have the same name? The matching will return both these albums, even if complete.

I suppose a secondary goal might be to export the missing track number and album to a text file, but I'm only ready for scripting one app at a time.

Thanks in advance for any help,
eed
imac intel 183/512
os x 10.4.8
itunes 7.0.2


Filed under: iTunes

Offline

 

#2 2006-11-29 10:00:03 am

digest4d
Member
From: Northampton, MA, USA
Registered: 2004-01-26
Posts: 389
Website

Re: iTunes Script For Missing Tracks on Album

The problem may be (every track of Sample Playlist where album = albummatch). That's slow. And aren't you repeating the check for every track, even if there is more than on track from the same album?

Maybe you could create a running list of albums that have already been checked, and then skip any track that belongs to an album in this list?

Or, you might get rid of the whole "where album =" bit by creating three lists... album name, expected track count, actual track count. Then just loop tracks, if album not in list, add album to names, track count to expected, and a new element to actual, initially set to 1. If the track's album is in the list, just add one to its actual counter. When you're done, you can just run through the list and export any album where actual <> expected.

Offline

 

Board footer

Powered by FluxBB

[ Generated in 0.128 seconds, 8 queries executed ]

RSS (new topics) RSS (active topics)