public List<RPMusicAlbum> GetAllAlbums() { if (!Settings.Default.EnableMusicLibrary) return new List<RPMusicAlbum>(); WindowsMediaPlayer WMPlayer = new WindowsMediaPlayer(); List<RPMusicAlbum> output = new List<RPMusicAlbum>(); IWMPStringCollection scAlbums = WMPlayer.mediaCollection.getAttributeStringCollection("AlbumID", "Audio"); for (int i = 0; i < scAlbums.count; i++) { if (string.IsNullOrEmpty(scAlbums.Item(i))) continue; // avoid null strings RPMusicAlbum album = new RPMusicAlbum(); album.ID = scAlbums.Item(i); // Find a song in this album IWMPPlaylist pl = WMPlayer.mediaCollection.getByAttribute("AlbumID", album.ID); if (pl.count < 1) continue; // don't add the album; no matching media items (must be an error, shouldn't happen) IWMPMedia song = pl.get_Item(0); // just use the first song to get the additional album info // ALBUM ARTIST: Try to use the song property's "album artist", if this doesn't work, use the first song's author album.ArtistID = song.getItemInfo("WM/AlbumArtist"); if (string.IsNullOrEmpty(album.ArtistID)) album.ArtistID = song.getItemInfo("Author"); album.Title = song.getItemInfo("WM/AlbumTitle"); album.GenreID = song.getItemInfo("Genre"); output.Add(album); } WMPlayer.close(); // Sort output A-Z CommonEPG.Comparers.RPMusicAlbumNameComparer myComparer = new CommonEPG.Comparers.RPMusicAlbumNameComparer(); output.Sort(myComparer); return output; }