Exemplo n.º 1
0
        public AlbumCollection GetAlbums()
        {
            throw new NotImplementedException();
            IWMPMediaCollection media     = wmp.mediaCollection;
            IWMPPlaylist        playlist  = media.getAll();
            List <Album>        albumlist = new List <Album>();

            for (int i = 0; i < playlist.count; i++)
            {
                IWMPMedia temp = playlist[i];
                if (temp.getItemInfo("MediaType") == "audio")
                {
                    string albumname = temp.getItemInfo("Album");
                }
            }
            AlbumCollection albums = new AlbumCollection(albumlist);

            return(albums);
        }
    /// <summary>
    /// Returns a collection of Song objects from the Windows Media Player library.
    /// </summary>
    /// <returns></returns>
    public static IEnumerable<WmpSong> GetSongsFromLibrary()
    {
      WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
      IWMPMediaCollection media = wmp.mediaCollection;
      IWMPPlaylist pList = media.getAll();

      for (int i = 0; i < pList.count; i++)
      {
        IWMPMedia item = pList.get_Item(i);

        WmpSong currentSong = new WmpSong();
        if (item.getItemInfo("CanonicalFiletype") == "mp3")
        {
          foreach (LibraryField libField in Enum.GetValues(typeof(LibraryField)))
          {
            string attrName;
            switch (libField)
            {
              case LibraryField.AlbumTitle:
                {
                  attrName = "WM/AlbumTitle";
                  currentSong.AlbumTitle = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.ArtistName:
                {
                  attrName = "WM/AlbumArtist";
                  currentSong.ArtistName = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.CollectionId:
                {
                  attrName = "WM/WMCollectionID";
                  currentSong.WmCollectionId = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.DateAdded:
                {
                  attrName = "AcquisitionTime";
                  string dateAddedStr = item.getItemInfo(attrName);
                  //Convert from UTC time
                  DateTime utcDateAdded = DateTime.SpecifyKind(DateTime.Parse(dateAddedStr), DateTimeKind.Utc);
                  currentSong.DateAdded = utcDateAdded.ToLocalTime();
                  break;
                }

              case LibraryField.Duration:
                {
                  attrName = "Duration";
                  currentSong.Duration = double.Parse(item.getItemInfo(attrName));
                  break;
                }

              //TODO: Add Label support!

              case LibraryField.LastPlayed:
                {
                  attrName = "UserLastPlayedTime";
                  string lastPlayedStr = item.getItemInfo(attrName);
                  if (!string.IsNullOrEmpty(lastPlayedStr))
                  {
                    //Convert from UTC time
                    DateTime utcLastPlayed = DateTime.SpecifyKind(DateTime.Parse(lastPlayedStr), DateTimeKind.Utc);
                    currentSong.LastPlayed = utcLastPlayed.ToLocalTime();
                  }
                  break;
                }

              case LibraryField.ReleaseDate:
                {
                  attrName = "ReleaseDate";
                  string releaseDateStr = item.getItemInfo(attrName);
                  if (!string.IsNullOrEmpty(releaseDateStr))
                    currentSong.ReleaseDate = DateTime.Parse(releaseDateStr).Date;
                  break;
                }

              case LibraryField.SongTitle:
                {
                  attrName = "Title";
                  currentSong.SongTitle = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.SongTrackingId:
                {
                  attrName = "TrackingID";
                  currentSong.SongTrackingId = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.SourceUrl:
                {
                  attrName = "SourceURL";
                  currentSong.SourceUrl = item.getItemInfo(attrName);
                  break;
                }

              case LibraryField.TrackNumber:
                {
                  attrName = "WM/TrackNumber";
                  currentSong.TrackNumber = int.Parse(item.getItemInfo(attrName));
                  break;
                }

              default:
                continue;
            }
          }

          yield return currentSong;
        }
      }
    } 
Exemplo n.º 3
0
        public SongCollection GetSongs()
        {
            IWMPMediaCollection media    = wmp.mediaCollection;
            IWMPPlaylist        playlist = media.getAll();
            List <Song>         songlist = new List <Song>();

            for (int i = 0; i < playlist.count; i++)
            {
                IWMPMedia temp = playlist[i];
                if (temp.getItemInfo("MediaType") == "audio")
                {
                    int  wmprating;
                    int  rating;
                    int  tracknumber;
                    int  playcount;
                    bool IsProtected;
                    if (!int.TryParse(temp.getItemInfo("UserRating"), out wmprating))
                    {
                        throw new Exception();
                    }
                    if (wmprating >= 87)
                    {
                        rating = 10;
                    }
                    else if (wmprating >= 63)
                    {
                        rating = 8;
                    }
                    else if (wmprating >= 38)
                    {
                        rating = 6;
                    }
                    else if (wmprating >= 13)
                    {
                        rating = 4;
                    }
                    else if (wmprating >= 1)
                    {
                        rating = 2;
                    }
                    else
                    {
                        rating = 0;
                    }
                    if (!int.TryParse(temp.getItemInfo("WM/TrackNumber"), out tracknumber))
                    {
                        tracknumber = 0;
                    }
                    if (!int.TryParse(temp.getItemInfo("PlayCount"), out playcount))
                    {
                        throw new Exception();
                    }
                    if (!bool.TryParse(temp.getItemInfo("Is_Protected"), out IsProtected))
                    {
                        throw new Exception();
                    }
                    TimeSpan duration = new TimeSpan(0, 0, 0, 0, (int)(temp.duration * 1000.0));
                    songlist.Add(new Song(temp.name, duration, rating, tracknumber, temp, mediasource));
                }
            }
            SongCollection songs = new SongCollection(songlist);

            return(songs);
        }