protected Track parseTrack(XPathNodeIterator nodeIterator) { var track = new Track(); while (nodeIterator.MoveNext()) { string key = nodeIterator.Current.Value; if (key.Equals("Track ID", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.TrackID = int.Parse(nodeIterator.Current.Value); } } else { if (key.Equals("Name", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.Name = nodeIterator.Current.Value; } continue; } if (key.Equals("Artist", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.Artist = nodeIterator.Current.Value; } continue; } if (key.Equals("Album Artist", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.AlbumArtist = nodeIterator.Current.Value; } continue; } if (key.Equals("Album", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.Album = nodeIterator.Current.Value; } continue; } if (key.Equals("Genre", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { track.Genre = nodeIterator.Current.Value; } continue; } if (key.Equals("Total Time", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { try { track.TotalTime = int.Parse(nodeIterator.Current.Value); } catch { } } continue; } if (key.Equals("Track Number", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { try { track.TrackNumber = int.Parse(nodeIterator.Current.Value); } catch { } } continue; } if (key.Equals("Year", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { try { track.Year = int.Parse(nodeIterator.Current.Value); } catch { } } continue; } if (key.Equals("Play Count", StringComparison.OrdinalIgnoreCase)) { if (nodeIterator.MoveNext()) { try { track.PlayCount = int.Parse(nodeIterator.Current.Value); } catch { } } continue; } } } return (track.TrackID != -1) ? track : null; }
public List<Track> GetMusicTracks(string artworkDir) { List<Track> tracks = new List<Track>(); try { var libraryPlaylist = this.iTunesApp.LibraryPlaylist; foreach (IITTrack iitrack in libraryPlaylist.Tracks) { if (iitrack.Kind != ITTrackKind.ITTrackKindFile) continue; var fileTrack = iitrack as IITFileOrCDTrack; if (fileTrack == null) continue; if (fileTrack.VideoKind != ITVideoKind.ITVideoKindNone) continue; var t = new Track { TrackID = iitrack.trackID, Name = iitrack.Name, Album = iitrack.Album, Artist = iitrack.Artist, BiitRate = iitrack.BitRate, Composer = iitrack.Composer, DateAdded = iitrack.DateAdded, DiscCount = iitrack.DiscCount, DiscNumber = iitrack.DiscNumber, TotalTime = iitrack.Duration, Genre = iitrack.Genre, Kind = iitrack.KindAsString, DateModified = iitrack.ModificationDate, PlayCount = iitrack.PlayedCount, PlayDateUTC = iitrack.PlayedDate, TrackCount = iitrack.TrackCount, TrackNumber = iitrack.TrackNumber, Year = iitrack.Year, }; var imagePathName = artworkDir + Path.DirectorySeparatorChar + HashString(t.Album + t.Artist + t.DiscNumber.ToString()); if (File.Exists(imagePathName) || ExtractArtwork(iitrack, imagePathName)) { t.Image = imagePathName; } tracks.Add(t); } } catch (Exception) { } return tracks; }