public void PassThruSwitchReturnsAudioFile(
            [NotNull] string fileName)
        {
            var path = Path.Combine("Output", "Rename-AudioFile", fileName);

            Directory.CreateDirectory(Path.GetDirectoryName(path));
            File.Copy(Path.Combine(
                          new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                          "TestFiles",
                          "Valid",
                          fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Rename-AudioFile")
                .AddParameter("AudioFile", audioFile)
                .AddParameter("Name", "Foo")
                .AddParameter("Replace")
                .AddParameter("PassThru");

                Assert.Equal(audioFile, ps.Invoke()[0].BaseObject);
            }
        }
        public void RenamesFile(
            [NotNull] string fileName,
            [NotNull] TestAudioMetadata metadata,
            [NotNull] string name,
            [NotNull] string expectedFileName)
        {
            var path = Path.Combine("Output", "Rename-AudioFile", fileName);

            Directory.CreateDirectory(Path.GetDirectoryName(path));
            File.Copy(Path.Combine(
                          new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                          "TestFiles",
                          "Valid",
                          fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            _mapper.Map(metadata, audioFile.Metadata);
            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Rename-AudioFile")
                .AddParameter("AudioFile", audioFile)
                .AddParameter("Name", name)
                .AddParameter("Replace");

                ps.Invoke();

                Assert.Equal(expectedFileName, Path.GetFileName(audioFile.Path));
            }
        }
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            if (Key != null)
            {
                foreach (var item in Key)
                {
                    taggedAudioFile.Metadata.Remove(item);
                }

                // Treat CoverArt like a text field:
                if (Key.Contains("CoverArt"))
                {
                    taggedAudioFile.Metadata.CoverArt = null;
                }
            }
            else
            {
                taggedAudioFile.Metadata.Clear();
            }

            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);
            var substituter     = new MetadataSubstituter(taggedAudioFile.Metadata);

            DirectoryInfo outputDirectory;

            try
            {
                outputDirectory = new DirectoryInfo(
                    this.GetFileSystemPaths(substituter.Substitute(Path), substituter.Substitute(LiteralPath)).First());
            }
            catch (ItemNotFoundException e)
            {
                outputDirectory = new DirectoryInfo(e.ItemName);
            }

            if (ShouldProcess(AudioFile.FileInfo.FullName))
            {
                taggedAudioFile.Metadata.CoverArt?.Export(outputDirectory, substituter.Substitute(Name), Replace);
            }

            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
Beispiel #5
0
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            taggedAudioFile.Metadata.CoverArt = CoverArt;
            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
Beispiel #6
0
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            new HashTableToMetadataDictionaryAdapter(Metadata).CopyTo(taggedAudioFile.Metadata);
            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
        public void CoverArtGetDataReturnsExpectedValue([NotNull] string fileName, [CanBeNull] string expectedHash)
        {
            var result = new TaggedAudioFile(
                Path.Combine(
                    new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                    "TestFiles",
                    "Valid",
                    fileName))
                         .Metadata.CoverArt?.Data.ToArray();

            Assert.Equal(expectedHash, result == null ? null : HashUtility.CalculateHash(result));
        }
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            if (taggedAudioFile.Metadata.CoverArt != null)
            {
                taggedAudioFile.Metadata.CoverArt = new ConvertibleCoverArt(taggedAudioFile.Metadata.CoverArt).Convert(_maxWidth, _convertToLossy, _quality);
            }
            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            if (ShouldProcess(AudioFile.FileInfo.FullName))
            {
                taggedAudioFile.SaveMetadata(new HashTableToSettingsDictionaryAdapter(Setting));
            }

            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
        protected override void ProcessRecord()
        {
            if (!ShouldProcess(AudioFile.FileInfo.FullName))
            {
                return;
            }

            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            taggedAudioFile.Rename(new MetadataSubstituter(taggedAudioFile.Metadata).Substitute(Name));
            if (PassThru)
            {
                WriteObject(taggedAudioFile);
            }
        }
        public void LoadMetadataRefreshesMetadata([NotNull] string fileName)
        {
            var audioFile = new TaggedAudioFile(Path.Combine(
                                                    new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                                                    "TestFiles",
                                                    "Valid",
                                                    fileName));
            var expectedMetadata = new AudioMetadata(audioFile.Metadata);

            audioFile.Metadata.Title = "Modified";
            audioFile.LoadMetadata();

            Assert.True(new Comparer().Compare(expectedMetadata, audioFile.Metadata, out var differences),
                        string.Join(" ", differences));
        }
        public void CreatesExpectedOutput(
            int index,
            string fileName,
            TestAudioMetadata metadata,
            string imageFileName,
            SettingDictionary settings,
            string[] validHashes)
        {
            var sourceDirectory = Path.Combine(PathUtility.GetTestFileRoot(), "Valid");
            var path            = Path.Combine("Output", "Save-AudioMetadata", "Valid", $"{index:000} - {fileName}");

            Directory.CreateDirectory(Path.GetDirectoryName(path) !);
            File.Copy(Path.Combine(sourceDirectory, fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            _mapper.Map(metadata, audioFile.Metadata);
            if (!string.IsNullOrEmpty(imageFileName))
            {
                audioFile.Metadata.CoverArt = CoverArtFactory.GetOrCreate(Path.Combine(sourceDirectory, imageFileName));
            }
            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Save-AudioMetadata")
                .AddArgument(audioFile);
                foreach (var item in settings)
                {
                    if (item.Value is bool boolValue)
                    {
                        if (boolValue)
                        {
                            ps.AddParameter(item.Key);
                        }
                    }
                    else
                    {
                        ps.AddParameter(item.Key, item.Value);
                    }
                }

                ps.Invoke();
            }

            Assert.Contains(HashUtility.CalculateHash(audioFile.Path), validHashes);
        }
        public void PassThruSwitchReturnsAudioFile(string fileName)
        {
            var path = Path.Combine("Output", "Rename-AudioFile", fileName);

            Directory.CreateDirectory(Path.GetDirectoryName(path) !);
            File.Copy(Path.Combine(PathUtility.GetTestFileRoot(), "Valid", fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Rename-AudioFile")
                .AddParameter("AudioFile", audioFile)
                .AddParameter("Name", "Foo")
                .AddParameter("Force")
                .AddParameter("PassThru");

                Assert.Equal(audioFile, ps.Invoke()[0].BaseObject);
            }
        }
        public void AudioFileSaveMetadata()
        {
            var index        = Convert.ToInt32(TestContext.DataRow["Index"]);
            var fileName     = Path.Combine(TestContext.DeploymentDirectory, "TestFiles", Convert.ToString(TestContext.DataRow["FileName"]));
            var settings     = ConvertToDictionary(Convert.ToString(TestContext.DataRow["Settings"]));
            var metadata     = ConvertToDictionary(Convert.ToString(TestContext.DataRow["Metadata"]));
            var coverArt     = Convert.ToString(TestContext.DataRow["CoverArt"]);
            var expectedHash = Convert.ToString(TestContext.DataRow["ExpectedHash"]);

            var input = new TaggedAudioFile(new FileInfo(fileName).CopyTo("Save Metadata Row " + index + Path.GetExtension(fileName)));

            metadata.CopyTo(input.Metadata);
            if (!string.IsNullOrEmpty(coverArt))
            {
                input.Metadata.CoverArt = new CoverArt(new FileInfo(Path.Combine(TestContext.DeploymentDirectory, "TestFiles", coverArt)));
            }
            input.SaveMetadata(settings);

            Assert.AreEqual <string>(expectedHash, CalculateHash(input));
        }
        public void PassThruSwitchReturnsAudioFile(
            [NotNull] string fileName,
            [NotNull] string analyzerName)
        {
            var audioFile = new TaggedAudioFile(Path.Combine(
                                                    new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                                                    "TestFiles",
                                                    "Valid",
                                                    fileName));

            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Measure-AudioFile")
                .AddParameter("Analyzer", analyzerName)
                .AddParameter("AudioFile", audioFile)
                .AddParameter("PassThru");

                Assert.Equal(audioFile, ps.Invoke()[0].BaseObject);
            }
        }
        void ProcessPath(string path)
        {
            try
            {
                ITaggedAudioFile result;

                try
                {
                    result = new TaggedAudioFile(path);
                }
                finally
                {
                    ProcessLogMessages();
                }

                WriteObject(result);
            }
            catch (AudioException e)
            {
                WriteError(new(e, e.GetType().Name, ErrorCategory.InvalidData, Path));
            }
        }
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);

            if (Key != null && Key.Length > 0)
            {
                var result = new MetadataDictionary();
                foreach (string key in Key)
                {
                    string value;
                    if (taggedAudioFile.Metadata.TryGetValue(key, out value))
                    {
                        result.Add(key, value);
                    }
                }
                WriteObject(result);
            }
            else
            {
                WriteObject(taggedAudioFile.Metadata);
            }
        }
        public void RenamesFile(string fileName, TestAudioMetadata metadata, string name, string expectedFileName)
        {
            var path = Path.Combine("Output", "Rename-AudioFile", fileName);

            Directory.CreateDirectory(Path.GetDirectoryName(path) !);
            File.Copy(Path.Combine(PathUtility.GetTestFileRoot(), "Valid", fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            _mapper.Map(metadata, audioFile.Metadata);
            using (var ps = PowerShell.Create())
            {
                ps.Runspace = _moduleFixture.Runspace;
                ps.AddCommand("Rename-AudioFile")
                .AddParameter("AudioFile", audioFile)
                .AddParameter("Name", name)
                .AddParameter("Force");

                ps.Invoke();

                Assert.Equal(expectedFileName, Path.GetFileName(audioFile.Path));
            }
        }
        public void RenameRenamesFile(
            [NotNull] string fileName,
            [NotNull] TestAudioMetadata metadata,
            [NotNull] string name,
            [NotNull] string expectedFileName)
        {
            var path = Path.Combine("Output", "Rename", fileName);

            Directory.CreateDirectory(Path.GetDirectoryName(path));
            File.Copy(Path.Combine(
                          new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.Parent?.Parent?.FullName,
                          "TestFiles",
                          "Valid",
                          fileName), path, true);
            var audioFile = new TaggedAudioFile(path);

            _mapper.Map(metadata, audioFile.Metadata);

            audioFile.Rename(name, true);

            Assert.Equal(expectedFileName, Path.GetFileName(audioFile.Path));
        }
Beispiel #20
0
        protected override void ProcessRecord()
        {
            var taggedAudioFile = new TaggedAudioFile(AudioFile);
            var substituter     = new MetadataSubstituter(taggedAudioFile.Metadata);

            string outputDirectory;

            try
            {
                outputDirectory = this.GetFileSystemPaths(substituter.Substitute(Path), substituter.Substitute(LiteralPath)).First();
            }
            catch (ItemNotFoundException e)
            {
                outputDirectory = e.ItemName;
            }

            if (!ShouldProcess(AudioFile.FileInfo.FullName))
            {
                return;
            }

            Directory.CreateDirectory(outputDirectory);
            WriteObject(new TaggedAudioFile(taggedAudioFile.FileInfo.CopyTo(System.IO.Path.Combine(outputDirectory, substituter.Substitute(Name == null ? System.IO.Path.GetFileNameWithoutExtension(taggedAudioFile.FileInfo.Name) : Name) + taggedAudioFile.FileInfo.Extension), Replace)));
        }