PDF Metadata Support (#3552)

Co-authored-by: Matthias Neeracher <microtherion@gmail.com>
This commit is contained in:
Joe Milazzo 2025-02-16 15:10:15 -06:00 committed by GitHub
parent 56108eb373
commit f76de42b28
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 1949 additions and 57 deletions

View file

@ -81,4 +81,47 @@ public class BookServiceTests
Assert.Equal("Accel World", comicInfo.Series);
}
[Fact]
public void ShouldHaveComicInfoForPdf()
{
var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/BookService");
var document = Path.Join(testDirectory, "test.pdf");
var comicInfo = _bookService.GetComicInfo(document);
Assert.NotNull(comicInfo);
Assert.Equal("Variations Chromatiques de concert", comicInfo.Title);
Assert.Equal("Georges Bizet \\(1838-1875\\)", comicInfo.Writer);
}
// TODO: Get the file from microtherion
// [Fact]
// public void ShouldUsePdfInfoDict()
// {
// var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService/Library/Books/PDFs");
// var document = Path.Join(testDirectory, "Rollo at Work SP01.pdf");
// var comicInfo = _bookService.GetComicInfo(document);
// Assert.NotNull(comicInfo);
// Assert.Equal("Rollo at Work", comicInfo.Title);
// Assert.Equal("Jacob Abbott", comicInfo.Writer);
// Assert.Equal(2008, comicInfo.Year);
// }
[Fact]
public void ShouldHandleIndirectPdfObjects()
{
var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/BookService");
var document = Path.Join(testDirectory, "indirect.pdf");
var comicInfo = _bookService.GetComicInfo(document);
Assert.NotNull(comicInfo);
Assert.Equal(2018, comicInfo.Year);
Assert.Equal(8, comicInfo.Month);
}
[Fact]
public void FailGracefullyWithEncryptedPdf()
{
var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/BookService");
var document = Path.Join(testDirectory, "encrypted.pdf");
var comicInfo = _bookService.GetComicInfo(document);
Assert.Null(comicInfo);
}
}

View file

@ -101,7 +101,22 @@ public class ScannerServiceTests : AbstractDbTest
[Fact]
public async Task ScanLibrary_FlatSeriesWithSpecialFolder()
{
var testcase = "Flat Series with Specials Folder - Manga.json";
var testcase = "Flat Series with Specials Folder Alt Naming - Manga.json";
var library = await _scannerHelper.GenerateScannerData(testcase);
var scanner = _scannerHelper.CreateServices();
await scanner.ScanLibrary(library.Id);
var postLib = await _unitOfWork.LibraryRepository.GetLibraryForIdAsync(library.Id, LibraryIncludes.Series);
Assert.NotNull(postLib);
Assert.Single(postLib.Series);
Assert.Equal(4, postLib.Series.First().Volumes.Count);
Assert.NotNull(postLib.Series.First().Volumes.FirstOrDefault(v => v.Chapters.FirstOrDefault(c => c.IsSpecial) != null));
}
[Fact]
public async Task ScanLibrary_FlatSeriesWithSpecialFolder_AlternativeNaming()
{
var testcase = "Flat Series with Specials Folder Alt Naming - Manga.json";
var library = await _scannerHelper.GenerateScannerData(testcase);
var scanner = _scannerHelper.CreateServices();
await scanner.ScanLibrary(library.Id);

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,6 @@
[
"My Dress-Up Darling/My Dress-Up Darling v01.cbz",
"My Dress-Up Darling/My Dress-Up Darling v02.cbz",
"My Dress-Up Darling/My Dress-Up Darling ch 10.cbz",
"My Dress-Up Darling/Specials/My Dress-Up Darling - Omakes SP01.cbz"
]