Esempio n. 1
0
        public List <RPMusicArtist> GetAllArtists()
        {
            if (!Settings.Default.EnableMusicLibrary)
            {
                return(new List <RPMusicArtist>());
            }

            WindowsMediaPlayer WMPlayer = new WindowsMediaPlayer();

            List <RPMusicArtist> output     = new List <RPMusicArtist>();
            List <RPMusicArtist> outputList = new List <RPMusicArtist>();
            IWMPStringCollection scArtists  = WMPlayer.mediaCollection.getAttributeStringCollection("Author", "Audio");

            for (int i = 0; i < scArtists.count; i++)
            {
                string strArtistName = scArtists.Item(i);
                if (string.IsNullOrEmpty(strArtistName))
                {
                    continue;                                      // Believe it or not WMP sometimes returns an empty artist name
                }
                RPMusicArtist artist = new RPMusicArtist(strArtistName);
                output.Add(artist);
            }

            WMPlayer.close();

            // Sort output A-Z
            CommonEPG.Comparers.RPMusicArtistNameComparer myComparer = new CommonEPG.Comparers.RPMusicArtistNameComparer();
            output.Sort(myComparer);

            return(output);
        }
Esempio n. 2
0
        public List <RPMusicGenre> GetAllGenres()
        {
            if (!Settings.Default.EnableMusicLibrary)
            {
                return(new List <RPMusicGenre>());
            }

            WindowsMediaPlayer  WMPlayer = new WindowsMediaPlayer();
            List <RPMusicGenre> output   = new List <RPMusicGenre>();

            IWMPStringCollection scGenres = WMPlayer.mediaCollection.getAttributeStringCollection("Genre", "Audio");

            for (int i = 0; i < scGenres.count; i++)
            {
                RPMusicGenre genre = new RPMusicGenre(scGenres.Item(i));
                output.Add(genre);
            }

            WMPlayer.close();

            // Sort output A-Z
            CommonEPG.Comparers.RPMusicGenreTitleComparer myComparer = new CommonEPG.Comparers.RPMusicGenreTitleComparer();
            output.Sort(myComparer);

            return(output);
        }
Esempio n. 3
0
        public int addAlbums(IWMPStringCollection collection, IWMPMediaCollection2 mediaCollection)
        {
            ArrayList items = new ArrayList();

            for (int k = 0; k < collection.count; k++)
            {
                string name = collection.Item(k);
                if (name != null && !name.Equals(""))
                {
                    Album item;
                    if (!stats_only)
                    {
                        item = new Album(name, mediaCollection.getByAlbum(name));
                    }
                    else
                    {
                        item = new Album(name, true);
                    }
                    if (!items.Contains(item))
                    {
                        items.Add(item);
                    }
                }
            }
            items.TrimToSize();
            if (!stats_only)
            {
                albums = items;
            }
            return(items.Count);
        }
Esempio n. 4
0
        public void ResetAlbumList()
        {
            // Get the list of album names and put them into the listbox.
            IWMPStringCollection rgsAlbumNames = wmpplayer.mediaCollection.getAttributeStringCollection("Album", "Audio");

            for (int i = 0; i < rgsAlbumNames.count; i++)
            {
                string strAlbumName = rgsAlbumNames.Item(i);
                albumListbox.Items.Add(strAlbumName);
            }
        }
Esempio n. 5
0
        private void SaveWMPLibraryData(NHibernate.ISession pDataSession)
        {
            // Hip hip hooray for procedural......
            WindowsMediaPlayerClass WMP     = new WindowsMediaPlayerClass();
            IWMPMediaCollection     mc      = WMP.mediaCollection;
            IWMPStringCollection    strings = mc.getAttributeStringCollection("AlbumID", "audio");

            var albumArtistLookup = new System.Collections.Hashtable();

            int WmpCount = strings.count;

            if (WmpCount > 0)
            {
                for (int i = 0; i < WmpCount; i++)
                {
                    string       item     = strings.Item(i);
                    IWMPPlaylist playlist = mc.getByAttribute("AlbumID", item);
                    playlist.setItemInfo("SortAttribute", "OriginalIndex");
                    int playlistCount = playlist.count;
                    if (playlistCount > 0)
                    {
                        for (int ic = 0; ic < playlistCount; ic++)
                        {
                            IWMPMedia mMedia = playlist.get_Item(ic);

                            string guid        = mMedia.getItemInfo("WM/WMCollectionID");
                            string albumTitle  = mMedia.getItemInfo("WM/AlbumTitle");
                            string albumArtist = mMedia.getItemInfo("WM/AlbumArtist");

                            FileInfo file = new FileInfo(mMedia.sourceURL);

                            //Add to array if not found
                            if (!string.IsNullOrEmpty(guid) && !string.IsNullOrEmpty(albumTitle) &&
                                !albumArtistLookup.ContainsKey(file.DirectoryName))
                            {
                                albumArtistLookup[file.DirectoryName] = true;

                                string filePathLarge = System.IO.Path.Combine(file.DirectoryName, string.Format(WMP_LARGE_GUID, guid));
                                string filePathSmall = System.IO.Path.Combine(file.DirectoryName, string.Format(WMP_SMALL_GUID, guid));

                                if (File.Exists(filePathLarge))
                                {
                                    CreateAndSaveLargeArt(albumArtist, albumTitle, filePathLarge, pDataSession);
                                }
                                if (File.Exists(filePathSmall))
                                {
                                    CreateAndSaveSmallArt(albumArtist, albumTitle, filePathSmall, pDataSession);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        private ArrayList getArray(IWMPStringCollection collection)
        {
            ArrayList items = new ArrayList();

            for (int k = 0; k < collection.count; k++)
            {
                string item = collection.Item(k);
                if (item != null && !item.Equals("") && !items.Contains(item))
                {
                    items.Add(item);
                }
            }
            items.TrimToSize();
            return(items);
        }
Esempio n. 8
0
        public int addAlbumArtists(IWMPStringCollection collection)
        {
            int result_count = 0;

            if (!stats_only)
            {
                album_artists = getArray(collection);
                result_count  = album_artists.Count;
            }
            else
            {
                result_count = getArrayCount(getArray(collection));
            }
            return(result_count);
        }
Esempio n. 9
0
        public int addGenres(IWMPStringCollection collection)
        {
            int result_count = 0;

            if (!stats_only)
            {
                genres       = getArray(collection);
                result_count = genres.Count;
            }
            else
            {
                result_count = getArrayCount(getArray(collection));
            }
            return(result_count);
        }