コード例 #1
0
 /// <summary>
 /// Internal method used to fire the TrackAdded event.
 /// </summary>
 /// <param name="row">Row that's just been added</param>
 private void NotifyEventSubscribers(MediaData.TrackRow row)
 {
     // notify any event subscribers
     if (TrackAdded != null)
     {
         TrackAdded(this, new TrackInfoEventArgs(
                        (row.IsTitleNull()  ? "" : row.Title),
                        (row.IsAuthorNull() ? "" : row.Author)));
     }
 }
コード例 #2
0
        /// <summary>
        /// Retrieves media information for a single directory as a DataSet.
        /// </summary>
        /// <param name="directory">Directory to be used for data retrieval</param>
        /// <returns>MediaData object (a strongly-typed DataSet)</returns>
        public MediaData RetrieveSingleDirectoryInfo(string directory)
        {
            MediaData md = new MediaData();

            DirectoryInfo dirInfo = new DirectoryInfo(directory);

            FileInfo[] fileInfos = dirInfo.GetFiles("*.wma");

            for (int i = 0; i < fileInfos.Length; i++)
            {
                MediaData.TrackRow row = md.Track.NewTrackRow();
                RetrieveTrackRow(dirInfo + "\\" + fileInfos[i].Name, ref row);
                md.Track.AddTrackRow(row);

                NotifyEventSubscribers(row);
            }

            return(md);
        }
コード例 #3
0
        /// <summary>
        /// Recursive function used by RetrieveRecursiveDirectoryInfo to drill down
        /// the directory tree.
        /// </summary>
        /// <param name="directory">Current directory level</param>
        /// <param name="md">MediaData structure in current form</param>
        private void RecurseDirectories(string directory, MediaData md)
        {
            DirectoryInfo parent = new DirectoryInfo(directory);

            DirectoryInfo[] children = parent.GetDirectories();
            foreach (DirectoryInfo folder in children)
            {
                FileInfo[] fileInfos = folder.GetFiles("*.wma");

                for (int i = 0; i < fileInfos.Length; i++)
                {
                    MediaData.TrackRow row = md.Track.NewTrackRow();
                    RetrieveTrackRow(folder.FullName + "\\" + fileInfos[i].Name, ref row);
                    md.Track.AddTrackRow(row);

                    NotifyEventSubscribers(row);
                }

                RecurseDirectories(folder.FullName, md);
            }
        }
コード例 #4
0
        /// <summary>
        /// Used internally to fill a row of a DataSet with metadata for the given media file.
        /// </summary>
        /// <param name="filename">Windows Media File (.wma file)</param></param>
        /// <param name="row">The TrackRow to be filled with data</param>
        private void RetrieveTrackRow(string filename, ref MediaData.TrackRow row)
        {
            MediaData.TrackDataTable tab = new MediaData.TrackDataTable();

            using (MetadataEditor md = new MetadataEditor(filename))
            {
                row.Title       = md[MediaMetadata.Title] as string;
                row.Author      = md[MediaMetadata.Author] as string;
                row.AlbumTitle  = md[MediaMetadata.AlbumTitle] as string;
                row.AlbumArtist = md[MediaMetadata.AlbumArtist] as string;
                row.Publisher   = md[MediaMetadata.Publisher] as string;
                row.Genre       = md[MediaMetadata.Genre] as string;

                object o = md[MediaMetadata.TrackNumber];
                if (o == null)
                {
                    row.SetTrackNumberNull();
                }
                else
                {
                    row.TrackNumber = (uint)o;
                }

                o = md[MediaMetadata.Duration];
                if (o == null)
                {
                    row.SetDurationNull();
                }
                else
                {
                    row.Duration = new TimeSpan((long)(ulong)o);
                }

                o = md[MediaMetadata.BitRate];
                if (o == null)
                {
                    row.SetBitRateNull();
                }
                else
                {
                    row.BitRate = (uint)o;
                }

                o = md[MediaMetadata.IsProtected];
                if (o == null)
                {
                    row.SetIsProtectedNull();
                }
                else
                {
                    row.IsProtected = (bool)o;
                }

                o = md[MediaMetadata.FileSize];
                if (o == null)
                {
                    row.SetFileSizeNull();
                }
                else
                {
                    row.FileSize = (ulong)o;
                }

                row.FileName = filename;
            }
        }