public List <RPMusicSong> GetAllSongs() { if (!Settings.Default.EnableMusicLibrary) { return(new List <RPMusicSong>()); } WindowsMediaPlayer WMPlayer = new WindowsMediaPlayer(); List <RPMusicSong> output = new List <RPMusicSong>(); // Find all songs IWMPPlaylist pl = WMPlayer.mediaCollection.getByAttribute("MediaType", "Audio"); for (int s = 0; s < pl.count; s++) { IWMPMedia song = pl.get_Item(s); RPMusicSong RPsong = CreateRPMusicSongFromIWMPMediaSong(song); if (RPsong != null) { output.Add(RPsong); } } WMPlayer.close(); return(output); }
public string PathForAlbumThumbnail(string albumID, bool useFolderArtIfFound) { List <RPMusicSong> songs = GetSongsForAlbum(albumID); if (songs.Count < 1) { Functions.WriteLineToLogFile("Warning - no album found with ID " + albumID + " when trying to retrieve thumbnail."); return(""); // no songs } RPMusicSong firstSong = songs[0]; string filePath = PathForMusicFile(firstSong.ID); if (useFolderArtIfFound) { string itemFolder = Path.GetDirectoryName(filePath); string folderArtFN = Path.Combine(itemFolder, "folder.jpg"); if (File.Exists(folderArtFN)) { return(folderArtFN); } } // No folder art, use first song file return(filePath); }
public static Uri ThumbnailUriOrNull(this RPMusicSong sg, string size) { if (string.IsNullOrEmpty(size)) { size = "medium"; } return(new Uri("musicsongthumbnail64?id=" + Uri.EscapeUriString(Functions.EncodeToBase64(sg.ID)) + "&size=" + size, UriKind.Absolute)); }
public static RPMusicArtist Artist(this RPMusicSong sg) { foreach (RPMusicArtist ar in MusicCache.Default.Framework.Artists) { if (ar.ID == sg.ArtistID) { return(ar); } } return(null); }
public static string ToPrettyDuration(this RPMusicSong sg) { TimeSpan ts = sg.DurationTS(); if (ts.Hours > 0) { return(String.Format("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds)); } else { return(String.Format("{0:00}:{1:00}", ts.Minutes, ts.Seconds)); } }
// Song => public static string ArtistName(this RPMusicSong sg) { RPMusicArtist ar = sg.Artist(); if (ar != null) { return(ar.Name); } else { return("Unknown Artist"); } }
public RPMusicSong CreateRPMusicSongFromIWMPMediaSong(IWMPMedia song) { string FN = song.sourceURL; if (!File.Exists(FN)) { return(null); } RPMusicSong RPsong = new RPMusicSong(); RPsong.ArtistID = song.getItemInfo("Author"); //RPsong.FileName = song.sourceURL; RPsong.ID = song.getItemInfo("TrackingID"); string userRating = song.getItemInfo("UserRating"); int intRating; if (int.TryParse(userRating, out intRating)) { RPsong.UserRating = intRating; } RPsong.Title = song.getItemInfo("Title"); RPsong.Duration = (long)song.duration; // Just store extension for now so client knows what type of music file this is RPsong.FileExtension = Path.GetExtension(FN); FileInfo fi = new FileInfo(FN); RPsong.FileSizeBytes = fi.Length; int intTrackNumber; string strTrackNumber = song.getItemInfo("WM/TrackNumber"); if ((!string.IsNullOrEmpty(strTrackNumber)) && (int.TryParse(strTrackNumber, out intTrackNumber))) { RPsong.TrackNumber = intTrackNumber; } return(RPsong); }
public static TimeSpan DurationTS(this RPMusicSong sg) { return(TimeSpan.FromSeconds(sg.Duration)); }
public static Uri StreamSourceUri(this RPMusicSong sg) { return(new Uri("streamsong64?id=" + Uri.EscapeUriString(Functions.EncodeToBase64(sg.ID)), UriKind.Absolute)); }