コード例 #1
0
        public void AlbumArtTest()
        {
            var blankImage        = new Bitmap(128, 128, PixelFormat.Format32bppRgb);
            var audioFileMetadata = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);

            var hasAlbumArt = audioFileMetadata.HasAlbumArt;

            Assert.True(hasAlbumArt, "Failed to extract album art from MP3 file");

            var albumArt = audioFileMetadata.AlbumArt;

            var imageLength         = 0;
            var returnedImageLength = 0;

            using (var memStream = new MemoryStream())
            {
                blankImage.Save(memStream, ImageFormat.Bmp);
                imageLength = memStream.ToArray().Length;
            }

            using (var memStream = new MemoryStream())
            {
                albumArt.Save(memStream, ImageFormat.Bmp);
                returnedImageLength = memStream.ToArray().Length;
            }

            var imageSizeIsEqual = imageLength == returnedImageLength;

            Assert.True(imageSizeIsEqual, "Image extracted was not the same size as image stored in audio metdata tag");
        }
コード例 #2
0
        public void BuildAudioFileMetdata()
        {
            var audioFileMetadata         = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);
            var metadataWasBuiltCorrectly = audioFileMetadata.HasFutherMetadataTag;

            Assert.True(metadataWasBuiltCorrectly, "Metdata was not extracted correctly from audio metadata tag");
        }
コード例 #3
0
ファイル: MusicLibrary.cs プロジェクト: djfdyuruiry/Dukebox
        public async Task <Song> AddFile(string filename, IAudioFileMetadata metadata = null)
        {
            if (!File.Exists(filename))
            {
                throw new FileNotFoundException(string.Format("Could not add file '{0}' as it is was not found on this system", filename));
            }

            if (!_audioFormats.FileSupported(filename))
            {
                throw new FileFormatException(string.Format("Error adding file '{0}': this format is not supported", filename));
            }

            if (metadata == null)
            {
                metadata = AudioFileMetadata.BuildAudioFileMetaData(filename);
            }

            var artist = await GetArtistForTag(metadata);

            var album = await GetAlbumForTag(metadata);

            var newSong = await BuildSongFromMetadata(filename, metadata, artist, album);

            return(newSong);
        }
コード例 #4
0
        public void Title()
        {
            var audioFileMetadata = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);
            var title             = audioFileMetadata.Title;

            var titleIsCorrect = !string.IsNullOrEmpty(title) && (title == "sample title");

            Assert.True(titleIsCorrect, "Title name extracted was incorrect");
        }
コード例 #5
0
        public void Length()
        {
            var audioFileMetadata = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);

            var audioLength          = audioFileMetadata.Length;
            var audioLengthIsCorrect = audioLength == 152;

            Assert.True(audioLengthIsCorrect, "Audio playback length extract was incorrect");
        }
コード例 #6
0
        public void Artist()
        {
            var audioFileMetadata = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);
            var artist            = audioFileMetadata.Artist;

            var artistIsCorrect = !string.IsNullOrEmpty(artist) && (artist == "sample artist");

            Assert.True(artistIsCorrect, "Artist name extracted was incorrect");
        }
コード例 #7
0
        public void Album()
        {
            var audioFileMetadata = AudioFileMetadata.BuildAudioFileMetaData(sampleMp3FileName);
            var album             = audioFileMetadata.Album;

            var albumIsCorrect = !string.IsNullOrEmpty(album) && (album == "sample album");

            Assert.True(albumIsCorrect, "Album name extracted was incorrect");
        }
コード例 #8
0
ファイル: MusicLibrary.cs プロジェクト: djfdyuruiry/Dukebox
        private List <Tuple <string, IAudioFileMetadata> > ExtractMetadataFromFiles(IEnumerable <string> filesToAdd, Action <object, AudioFileImportedEventArgs> progressHandler,
                                                                                    int concurrencyLimit, int numFilesToAdd)
        {
            return(filesToAdd.AsParallel().WithDegreeOfParallelism(concurrencyLimit).Select(f =>
            {
                var metadataTuple = new Tuple <string, IAudioFileMetadata>(f, AudioFileMetadata.BuildAudioFileMetaData(f));

                Task.Run(() => progressHandler?.Invoke(this, new AudioFileImportedEventArgs
                {
                    JustProcessing = true,
                    FileAdded = f,
                    TotalFilesThisImport = numFilesToAdd
                }));

                return metadataTuple;
            }).ToList());
        }