Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        public static RPMusicArtist Artist(this RPMusicSong sg)
        {
            foreach (RPMusicArtist ar in MusicCache.Default.Framework.Artists)
            {
                if (ar.ID == sg.ArtistID)
                {
                    return(ar);
                }
            }

            return(null);
        }
Exemple #5
0
        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));
            }
        }
Exemple #6
0
        // Song =>
        public static string ArtistName(this RPMusicSong sg)
        {
            RPMusicArtist ar = sg.Artist();

            if (ar != null)
            {
                return(ar.Name);
            }
            else
            {
                return("Unknown Artist");
            }
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 public static TimeSpan DurationTS(this RPMusicSong sg)
 {
     return(TimeSpan.FromSeconds(sg.Duration));
 }
Exemple #9
0
 public static Uri StreamSourceUri(this RPMusicSong sg)
 {
     return(new Uri("streamsong64?id=" + Uri.EscapeUriString(Functions.EncodeToBase64(sg.ID)), UriKind.Absolute));
 }