Ejemplo n.º 1
0
        public void ContainsYearAndSceneNumber_FilenameHasYearAndMultipleScenes_ReturnsTrue()
        {
            string filename = @"Joker (2019) - Scenes 13 & 14. Mark Maron & Robert De Niro.mkv";
            bool   result   = FilenameParser.ContainsYearAndSceneNumber(filename);

            Assert.IsTrue(result);
        }
Ejemplo n.º 2
0
        public async Task <string> SaveAsync(Stream stream, string filename, bool generateFilename = true)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException("filename");
            }

            if (FileStorage == null)
            {
                throw new NullReferenceException();
            }
            if (FilenameParser == null)
            {
                throw new NullReferenceException();
            }

            stream.Position = 0;
            string savepath = generateFilename ? FilenameParser.Parse(filename) : filename;

            return(await FileStorage.SaveEntryAsync(stream, savepath.Replace('\\', '/')));
        }
Ejemplo n.º 3
0
        public void ContainsYearAndSceneNumber_FilenameDoesNotHaveYearAndScene_ReturnsFalse()
        {
            string filename = @"Arrow - Oliver Queen, Laurel Lance & Harbinger - Little Fear of Lightning (2019-12-05).mkv";
            bool   result   = FilenameParser.ContainsYearAndSceneNumber(filename);

            Assert.IsFalse(result);
        }
Ejemplo n.º 4
0
        public void ContainsYearAndSceneNumber_FilenameHasYearAndScene_ReturnsTrue()
        {
            string filename = @"Joker (2019) - Scene 3. Joaquin Phoenix & Zazie Beetz.mkv";
            bool   result   = FilenameParser.ContainsYearAndSceneNumber(filename);

            Assert.IsTrue(result);
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            FilenameParser parser = new FilenameParser("");

            Console.WriteLine(parser.parse());
            Console.ReadKey();
        }
Ejemplo n.º 6
0
        public void GetPerformersSubstring_FilenameHasYearAndMultipleScene_ReturnsPerformersSubstring()
        {
            string filename = @"Joker (2019) - Scenes 13 & 14. Mark Maron & Robert De Niro.mkv";
            string expected = "Mark Maron & Robert De Niro";

            string result = FilenameParser.GetPerformersSubstring(filename);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 7
0
        public void GetPerformersSubstring_FilenameIsNormal_ReturnsPerformersSubstring()
        {
            string filename = @"Arrow - Oliver Queen, Laurel Lance & Harbinger - Little Fear of Lightning (2019-12-05).mkv";
            string expected = "Oliver Queen, Laurel Lance & Harbinger";

            string result = FilenameParser.GetPerformersSubstring(filename);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 8
0
        public void GetSeriesName_FilenameHasSeries_ReturnsSeriesName()
        {
            string filename = @"Watchmen - Jean Smart, Jeremy Irons, Regina King - Little Fear of Lightning (2019-12-05).mkv";
            string expected = "Watchmen";

            string result = FilenameParser.GetSeriesName(filename);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 9
0
        public void GetPerformers_NameHasNoHyphens_ReturnsEmptyList()
        {
            string filename       = @"hi I am a file.mkv";
            int    expectedNumber = 0;

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
        }
Ejemplo n.º 10
0
 public Rename(ILogger <Rename> logger, ILogger <DryRun> dryRunLogger, IFileSystem fileSystem, FileMatcher fileMatcher, OutputRecordWriter writer, FilenameParser parser)
 {
     this.logger       = logger;
     this.dryRunLogger = dryRunLogger;
     this.fileSystem   = fileSystem;
     this.fileMatcher  = fileMatcher;
     this.parser       = parser;
     this.Writer       = writer;
     this.fileSystem   = fileSystem;
     this.fileSystem   = fileSystem;
 }
Ejemplo n.º 11
0
        private void processFile(string filepath)
        {
            var filename = Path.GetFileNameWithoutExtension(filepath);
            var parser   = new FilenameParser(filename);

            vm.metadata       = parser.parse();
            vm.activeFilePath = filepath;
            var seasonPart  = vm.metadata.season != null ? $"S{vm.metadata.season}" : "";
            var episodePart = vm.metadata.episode != null ? $"E{vm.metadata.episode}" : "";
            var groupPart   = !string.IsNullOrEmpty(vm.metadata.group) ? vm.metadata.group : "";

            vm.query = $"{vm.metadata.title} {seasonPart} {episodePart} {groupPart}".Trim();
        }
Ejemplo n.º 12
0
        public void GetPerformers_NameHasAmpersand_ReturnsPerformers()
        {
            string filename       = @"Watchmen - Trent Reznor & Atticus Ross - Little Fear of Lightning (2019-12-05).mkv";
            int    expectedNumber = 2;
            string expectedName1  = "Trent Reznor";
            string expectedName2  = "Atticus Ross";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
        }
Ejemplo n.º 13
0
        public void CanReconstructTheFileName(FilenameParsingFixtureModel test)
        {
            this.parser = this.FilenameParser;
            var parsed = this.parser.Parse(test.Filename);

            var actual = parsed.Reconstruct(this.TestFiles);

            var expectedDate = (test.ExpectedTzOffset, test.ExpectedDateTime) switch
            {
                (null, not null) => DateFormatting.FormatFileName(test.ExpectedDateTime.Value),
                (not null, not null) => DateFormatting.FormatFileName(
                    test.ExpectedDateTime.Value.WithOffset(test.ExpectedTzOffset.Value)),
                (null, null) => string.Empty,
            };
Ejemplo n.º 14
0
        public void GetPerformers_NameHasYearAndSceneAndAmpersands_ReturnsPerformers()
        {
            string filename       = @"The Farewell (2019) - Scene 1. Awkwafina & Nai Nai.mkv";
            int    expectedNumber = 2;
            string expectedName1  = "Awkwafina";
            string expectedName2  = "Nai Nai";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
        }
Ejemplo n.º 15
0
        public void GetPerformers_NameHasYearAndSceneAndCommas_ReturnsPerformers()
        {
            string filename       = @"Hustlers (2019) - Scene 1. Jennifer Lopez, Constance Wu.mkv";
            int    expectedNumber = 2;
            string expectedName1  = "Jennifer Lopez";
            string expectedName2  = "Constance Wu";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
        }
Ejemplo n.º 16
0
        public void GetPerformers_NameHasCommas_ReturnsPerformers()
        {
            string filename       = @"Watchmen - Jean Smart, Jeremy Irons, Regina King - Little Fear of Lightning (2019-12-05).mkv";
            int    expectedNumber = 3;
            string expectedName1  = "Jean Smart";
            string expectedName2  = "Jeremy Irons";
            string expectedName3  = "Regina King";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
            Assert.AreEqual(expectedName3, result[2]);
        }
Ejemplo n.º 17
0
        public void GetPerformers_NameHasAmpersandThenComma_ReturnsPerformers()
        {
            string filename       = @"Succession - Logan Roy & Shiv Roy, Roman Roy - Little Fear of Lightning (2019-12-05).mkv";
            int    expectedNumber = 3;
            string expectedName1  = "Logan Roy";
            string expectedName2  = "Shiv Roy";
            string expectedName3  = "Roman Roy";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
            Assert.AreEqual(expectedName3, result[2]);
        }
Ejemplo n.º 18
0
        public void GetPerformers_NameHasCommasThenAmpersandEndsWithParentheses_ReturnsPerformers()
        {
            string filename       = @"Arrow - Oliver Queen, Laurel Lance & Harbinger (2019-12-05).mkv";
            int    expectedNumber = 3;
            string expectedName1  = "Oliver Queen";
            string expectedName2  = "Laurel Lance";
            string expectedName3  = "Harbinger";

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
            Assert.AreEqual(expectedName3, result[2]);
        }
Ejemplo n.º 19
0
        public void GetPerformers_NameHasSeriesButNoTitleOrDate_ReturnsPerformers()
        {
            string filename       = @"Doctor Who - The Doctor, Amy Pond, Sarah Jane Smith.mp4";
            string expectedName1  = "The Doctor";
            string expectedName2  = "Amy Pond";
            string expectedName3  = "Sarah Jane Smith";
            int    expectedNumber = 3;

            var result       = FilenameParser.GetPerformers(filename);
            int resultNumber = result.Count;

            Assert.AreEqual(expectedNumber, resultNumber);
            Assert.AreEqual(expectedName1, result[0]);
            Assert.AreEqual(expectedName2, result[1]);
            Assert.AreEqual(expectedName3, result[2]);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Updates the File, Folder and Path property using the LocalMedia data
        /// </summary>
        private void updatePropertiesFromLocalMedia()
        {
            if (LocalMedia != null)
            {
                string filenameToParse;
                string parserFilename;

                DirectoryInfo baseFolder = Utility.GetMusicVideoBaseDirectory(LocalMedia[0].File.Directory);
                folder = baseFolder.Name;
                file   = LocalMedia[0].File.Name;
                path   = baseFolder.FullName;

                if (file == "VIDEO_TS.IFO")
                {
                    parserFilename = folder + ".dvd";
                }
                else
                {
                    parserFilename = LocalMedia[0].File.FullName;
                }

                //filenameToParse = LocalMedia[0].File.FullName;
                filenameToParse = parserFilename;
                FilenameParser parser = new FilenameParser(filenameToParse, baseFolder);

                parseResult CurrentParseResult = new parseResult();
                parser.Matches.Add(MusicVideoImporter.cFilename, file);
                parser.Matches.Add(MusicVideoImporter.cExt, LocalMedia[0].File.Extension);
                parser.Matches.Add(MusicVideoImporter.cPath, LocalMedia[0].TrimmedFullPath);
                parser.Matches.Add(MusicVideoImporter.cVolumeLabel, LocalMedia[0].MediaLabel);

                if (!parser.Matches.ContainsKey(MusicVideoImporter.cArtist))
                {
                    CurrentParseResult.failedArtist = true;
                    CurrentParseResult.success      = false;
                    CurrentParseResult.exception    = "Artist is not valid";
                }

                if (!parser.Matches.ContainsKey(MusicVideoImporter.cTrack))
                {
                    CurrentParseResult.failedTrack = true;
                    CurrentParseResult.success     = false;
                    CurrentParseResult.exception   = "Track is not valid";
                }

                if (!parser.Matches.ContainsKey(MusicVideoImporter.cAlbum))
                {
                    CurrentParseResult.failedAlbum = true;
                    CurrentParseResult.success     = true;
                    CurrentParseResult.exception   = "Album is not valid";
                }

                CurrentParseResult.match_filename = LocalMedia[0].TrimmedFullPath;
                CurrentParseResult.full_filename  = LocalMedia[0].File.Name;
                CurrentParseResult.parser         = parser;

                if (!CurrentParseResult.failedArtist)
                {
                    artist = CurrentParseResult.Artist;
                    artist = Regex.Replace(artist, @"\s{2,}", " ").Trim();
                }

                if (!CurrentParseResult.failedAlbum)
                {
                    album = CurrentParseResult.Album;
                    album = Regex.Replace(album, @"\s{2,}", " ").Trim();
                }

                if (!CurrentParseResult.failedTrack)
                {
                    track = CurrentParseResult.Track;
                    track = Regex.Replace(track, @"\s{2,}", " ").Trim();
                }


                logger.Debug(string.Format("Result of Parsing : Artist: {0}    Album: {1}    Track: {2}", artist, album, track));
            }
        }
Ejemplo n.º 21
0
 public void Background()
 {
     $"Given a {nameof(Filenames.FilenameParser)} using the default formats"
     .x(() => this.parser = this.FilenameParser);
 }
Ejemplo n.º 22
0
 public FilenameExtractor(ILogger <FilenameExtractor> logger, IFileSystem fileSystem, FilenameParser parser)
 {
     this.logger     = logger;
     this.fileSystem = fileSystem;
     this.parser     = parser;
 }