Tim Van Wassenhove

Passionate geek, interested in Technology. Proud father of two

20 Jul 2010

Removing Dead Tracks (Duplicates that don't exist) from iTunes using C#

Last week i noticed the following post from Scott Hanselman: Removing Dead Tracks (Duplicates that don’t exist) from iTunes using C#. As a good boy scout i noticed that these days iTunesLib.IITTrackCollection inherits from IEnumerable so i rewrote the code a little

class Program
{
	[STAThread]
	static void Main()
	{
		var itunes = new iTunesApp();
		itunes.DeleteTracksThatDoNotExist();
	}
}

public static class ITunesExtensions
{
	public static void DeleteTracksThatDoNotExist(this IiTunes itunes)
	{
		var tracksThatDoNotExist = FindTracksThatDoNotExist(itunes);
		foreach (var track in tracksThatDoNotExist) track.Delete();
	}

	public static IEnumerable<iitfileOrCDTrack> FindTracksThatDoNotExist(this IiTunes iTunes)
	{
		return iTunes.LibraryPlaylist.Tracks
			.OfType<iitfileOrCDTrack>()
			.Where(track => !File.Exists(track.Location));
	}
}