mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-06-23 15:30:34 -04:00
Clean up and fixed a parsing case.
This commit is contained in:
parent
aaedb11836
commit
a501e50c98
@ -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 12", "Kedouin Makoto - Corpse Party Musume")]
|
||||||
[InlineData("Kedouin Makoto - Corpse Party Musume, Chapter 09", "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 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)
|
public void ParseSeriesTest(string filename, string expected)
|
||||||
{
|
{
|
||||||
Assert.Equal(expected, ParseSeries(filename));
|
Assert.Equal(expected, ParseSeries(filename));
|
||||||
@ -294,6 +295,14 @@ namespace API.Tests
|
|||||||
FullFilePath = filepath
|
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
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,42 +59,42 @@ namespace API.Tests.Services
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
// [Fact]
|
||||||
public void ExistingOrDefault_Should_BeFromLibrary()
|
// public void ExistingOrDefault_Should_BeFromLibrary()
|
||||||
{
|
// {
|
||||||
var allSeries = new List<Series>()
|
// var allSeries = new List<Series>()
|
||||||
{
|
// {
|
||||||
new Series() {Id = 2, Name = "Darker Than Black"},
|
// new Series() {Id = 2, Name = "Darker Than Black"},
|
||||||
new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
// new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
||||||
new Series() {Id = 4, Name = "Akame Ga Kill"},
|
// 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);
|
||||||
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]
|
// [Fact]
|
||||||
public void ExistingOrDefault_Should_BeFromAllSeries()
|
// public void ExistingOrDefault_Should_BeFromAllSeries()
|
||||||
{
|
// {
|
||||||
var allSeries = new List<Series>()
|
// var allSeries = new List<Series>()
|
||||||
{
|
// {
|
||||||
new Series() {Id = 2, Name = "Darker Than Black"},
|
// new Series() {Id = 2, Name = "Darker Than Black"},
|
||||||
new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
// new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
||||||
new Series() {Id = 4, Name = "Akame Ga Kill"},
|
// new Series() {Id = 4, Name = "Akame Ga Kill"},
|
||||||
};
|
// };
|
||||||
Assert.Equal(3, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black - Some Extension").Id);
|
// Assert.Equal(3, ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Darker Than Black - Some Extension").Id);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
[Fact]
|
// [Fact]
|
||||||
public void ExistingOrDefault_Should_BeNull()
|
// public void ExistingOrDefault_Should_BeNull()
|
||||||
{
|
// {
|
||||||
var allSeries = new List<Series>()
|
// var allSeries = new List<Series>()
|
||||||
{
|
// {
|
||||||
new Series() {Id = 2, Name = "Darker Than Black"},
|
// new Series() {Id = 2, Name = "Darker Than Black"},
|
||||||
new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
// new Series() {Id = 3, Name = "Darker Than Black - Some Extension"},
|
||||||
new Series() {Id = 4, Name = "Akame Ga Kill"},
|
// new Series() {Id = 4, Name = "Akame Ga Kill"},
|
||||||
};
|
// };
|
||||||
Assert.Null(ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Non existing series"));
|
// Assert.Null(ScannerService.ExistingOrDefault(_libraryMock, allSeries, "Non existing series"));
|
||||||
}
|
// }
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Should_CreateSeries_Test()
|
public void Should_CreateSeries_Test()
|
||||||
|
@ -79,6 +79,10 @@ namespace API.Parser
|
|||||||
new Regex(
|
new Regex(
|
||||||
@"(?<Series>.*)(?:, Chapter )(?<Chapter>\d+)",
|
@"(?<Series>.*)(?:, Chapter )(?<Chapter>\d+)",
|
||||||
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||||
|
// Goblin Slayer - Brand New Day 006.5 (2019) (Digital) (danke-Empire)
|
||||||
|
new Regex(
|
||||||
|
@"(?<Series>.*) (?<Chapter>\d+(?:.\d+|-\d+)?) \(\d{4}\)",
|
||||||
|
RegexOptions.IgnoreCase | RegexOptions.Compiled),
|
||||||
// Akame ga KILL! ZERO (2016-2019) (Digital) (LuCaZ)
|
// Akame ga KILL! ZERO (2016-2019) (Digital) (LuCaZ)
|
||||||
new Regex(
|
new Regex(
|
||||||
@"(?<Series>.*)\(\d",
|
@"(?<Series>.*)\(\d",
|
||||||
|
@ -335,7 +335,7 @@ namespace API.Services
|
|||||||
|
|
||||||
if (info == null)
|
if (info == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Could not parse from {Path}", path);
|
_logger.LogWarning("Could not parse series from {Path}", path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,18 +373,5 @@ namespace API.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Volume ExistingOrDefault(IList<Volume> existingVolumes, ICollection<Volume> volumes, string volumeName)
|
|
||||||
{
|
|
||||||
return volumes.SingleOrDefault(v => v.Name == volumeName) ?? existingVolumes.SingleOrDefault(v => v.Name == volumeName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Series ExistingOrDefault(Library library, IEnumerable<Series> allSeries, string seriesName)
|
|
||||||
{
|
|
||||||
var name = Parser.Parser.Normalize(seriesName);
|
|
||||||
library.Series ??= new List<Series>();
|
|
||||||
return library.Series.SingleOrDefault(s => Parser.Parser.Normalize(s.Name) == name) ??
|
|
||||||
allSeries.SingleOrDefault(s => Parser.Parser.Normalize(s.Name) == name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user