diff --git a/API.Tests/ParserTest.cs b/API.Tests/ParserTest.cs index 9d96da833..895cca89a 100644 --- a/API.Tests/ParserTest.cs +++ b/API.Tests/ParserTest.cs @@ -100,6 +100,7 @@ namespace API.Tests [InlineData("Kedouin Makoto - Corpse Party Musume, Chapter 12", "Kedouin Makoto - Corpse Party Musume")] [InlineData("Kedouin Makoto - Corpse Party Musume, Chapter 09", "Kedouin Makoto - Corpse Party Musume")] [InlineData("Goblin Slayer Side Story - Year One 025.5", "Goblin Slayer Side Story - Year One")] + [InlineData("Goblin Slayer - Brand New Day 006.5 (2019) (Digital) (danke-Empire)", "Goblin Slayer - Brand New Day")] public void ParseSeriesTest(string filename, string expected) { Assert.Equal(expected, ParseSeries(filename)); @@ -294,6 +295,14 @@ namespace API.Tests FullFilePath = filepath }); + filepath = @"E:\Manga\Goblin Slayer\Goblin Slayer - Brand New Day 006.5 (2019) (Digital) (danke-Empire).cbz"; + expected.Add(filepath, new ParserInfo + { + Series = "Goblin Slayer - Brand New Day", Volumes = "0", Edition = "", + Chapters = "6.5", Filename = "Goblin Slayer - Brand New Day 006.5 (2019) (Digital) (danke-Empire).cbz", Format = MangaFormat.Archive, + FullFilePath = filepath + }); + diff --git a/API.Tests/Services/ScannerServiceTests.cs b/API.Tests/Services/ScannerServiceTests.cs index f795f9169..96abd7b36 100644 --- a/API.Tests/Services/ScannerServiceTests.cs +++ b/API.Tests/Services/ScannerServiceTests.cs @@ -59,42 +59,42 @@ namespace API.Tests.Services } - [Fact] - public void ExistingOrDefault_Should_BeFromLibrary() - { - var allSeries = new List() - { - new Series() {Id = 2, Name = "Darker Than Black"}, - new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, - new Series() {Id = 4, Name = "Akame Ga Kill"}, - }; - Assert.Equal(_libraryMock.Series.ElementAt(0).Id, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black").Id); - Assert.Equal(_libraryMock.Series.ElementAt(0).Id, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker than Black").Id); - } - - [Fact] - public void ExistingOrDefault_Should_BeFromAllSeries() - { - var allSeries = new List() - { - new Series() {Id = 2, Name = "Darker Than Black"}, - new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, - new Series() {Id = 4, Name = "Akame Ga Kill"}, - }; - Assert.Equal(3, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black - Some Extension").Id); - } - - [Fact] - public void ExistingOrDefault_Should_BeNull() - { - var allSeries = new List() - { - new Series() {Id = 2, Name = "Darker Than Black"}, - new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, - new Series() {Id = 4, Name = "Akame Ga Kill"}, - }; - Assert.Null(ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Non existing series")); - } + // [Fact] + // public void ExistingOrDefault_Should_BeFromLibrary() + // { + // var allSeries = new List() + // { + // new Series() {Id = 2, Name = "Darker Than Black"}, + // new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, + // new Series() {Id = 4, Name = "Akame Ga Kill"}, + // }; + // Assert.Equal(_libraryMock.Series.ElementAt(0).Id, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black").Id); + // Assert.Equal(_libraryMock.Series.ElementAt(0).Id, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker than Black").Id); + // } + // + // [Fact] + // public void ExistingOrDefault_Should_BeFromAllSeries() + // { + // var allSeries = new List() + // { + // new Series() {Id = 2, Name = "Darker Than Black"}, + // new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, + // new Series() {Id = 4, Name = "Akame Ga Kill"}, + // }; + // Assert.Equal(3, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black - Some Extension").Id); + // } + // + // [Fact] + // public void ExistingOrDefault_Should_BeNull() + // { + // var allSeries = new List() + // { + // new Series() {Id = 2, Name = "Darker Than Black"}, + // new Series() {Id = 3, Name = "Darker Than Black - Some Extension"}, + // new Series() {Id = 4, Name = "Akame Ga Kill"}, + // }; + // Assert.Null(ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Non existing series")); + // } [Fact] public void Should_CreateSeries_Test() diff --git a/API/Parser/Parser.cs b/API/Parser/Parser.cs index 7b7b31645..cc2ac7b5e 100644 --- a/API/Parser/Parser.cs +++ b/API/Parser/Parser.cs @@ -79,6 +79,10 @@ namespace API.Parser new Regex( @"(?.*)(?:, Chapter )(?\d+)", RegexOptions.IgnoreCase | RegexOptions.Compiled), + // Goblin Slayer - Brand New Day 006.5 (2019) (Digital) (danke-Empire) + new Regex( + @"(?.*) (?\d+(?:.\d+|-\d+)?) \(\d{4}\)", + RegexOptions.IgnoreCase | RegexOptions.Compiled), // Akame ga KILL! ZERO (2016-2019) (Digital) (LuCaZ) new Regex( @"(?.*)\(\d", diff --git a/API/Services/ScannerService.cs b/API/Services/ScannerService.cs index f6541465d..83a2bf6d7 100644 --- a/API/Services/ScannerService.cs +++ b/API/Services/ScannerService.cs @@ -335,7 +335,7 @@ namespace API.Services if (info == null) { - _logger.LogWarning("Could not parse from {Path}", path); + _logger.LogWarning("Could not parse series from {Path}", path); return; } @@ -373,18 +373,5 @@ namespace API.Services } } } - - public static Volume ExistingOrDefault(IList existingVolumes, ICollection volumes, string volumeName) - { - return volumes.SingleOrDefault(v => v.Name == volumeName) ?? existingVolumes.SingleOrDefault(v => v.Name == volumeName); - } - - public static Series ExistingOrDefault(Library library, IEnumerable allSeries, string seriesName) - { - var name = Parser.Parser.Normalize(seriesName); - library.Series ??= new List(); - return library.Series.SingleOrDefault(s => Parser.Parser.Normalize(s.Name) == name) ?? - allSeries.SingleOrDefault(s => Parser.Parser.Normalize(s.Name) == name); - } } } \ No newline at end of file