diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/SeriesMetadataPatch.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/SeriesMetadataPatch.kt index 328a89893..2a925f173 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/SeriesMetadataPatch.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/SeriesMetadataPatch.kt @@ -10,6 +10,7 @@ data class SeriesMetadataPatch( val ageRating: Int?, val language: String?, val genres: Set?, + val totalBookCount: Int?, val collections: List ) diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookMetadataLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookMetadataLifecycle.kt index 12d908c57..7ba17ad0a 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/BookMetadataLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/BookMetadataLifecycle.kt @@ -118,6 +118,7 @@ class BookMetadataLifecycle( logger.debug { "Apply metadata for book: $book" } logger.debug { "Original metadata: $it" } + logger.debug { "Patch: $patch" } val patched = metadataApplier.apply(bPatch, it) logger.debug { "Patched metadata: $patched" } diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/MetadataApplier.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/MetadataApplier.kt index 359d5c2dd..043ab3fcf 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/MetadataApplier.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/MetadataApplier.kt @@ -37,7 +37,8 @@ class MetadataApplier { ageRating = getIfNotLocked(ageRating, patch.ageRating, ageRatingLock), publisher = getIfNotLocked(publisher, patch.publisher, publisherLock), language = getIfNotLocked(language, patch.language, languageLock), - genres = getIfNotLocked(genres, patch.genres, genresLock) + genres = getIfNotLocked(genres, patch.genres, genresLock), + totalBookCount = getIfNotLocked(totalBookCount, patch.totalBookCount, totalBookCountLock) ) } } diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesMetadataLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesMetadataLifecycle.kt index a793f8a17..c11139081 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesMetadataLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesMetadataLifecycle.kt @@ -131,6 +131,7 @@ class SeriesMetadataLifecycle( readingDirection = patches.mostFrequent { it.readingDirection }, ageRating = patches.mapNotNull { it.ageRating }.maxOrNull(), publisher = patches.mostFrequent { it.publisher }, + totalBookCount = patches.mapNotNull { it.totalBookCount }.maxOrNull(), collections = emptyList() ) @@ -145,6 +146,7 @@ class SeriesMetadataLifecycle( logger.debug { "Apply metadata for series: $series" } logger.debug { "Original metadata: $it" } + logger.debug { "Patch: $patch" } val patched = metadataApplier.apply(patch, it) logger.debug { "Patched metadata: $patched" } diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt index 6772b163c..1fa6183ba 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt @@ -114,6 +114,7 @@ class ComicInfoProvider( ageRating = comicInfo.ageRating?.ageRating, language = if (comicInfo.languageISO != null && BCP47TagValidator.isValid(comicInfo.languageISO!!)) comicInfo.languageISO else null, genres = if (!genres.isNullOrEmpty()) genres.toSet() else null, + totalBookCount = comicInfo.count, collections = listOfNotNull(comicInfo.seriesGroup?.ifBlank { null }) ) } diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt index 3d631904f..4b31b359a 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt @@ -120,6 +120,7 @@ class EpubMetadataProvider( summary = null, language = if (language != null && BCP47TagValidator.isValid(language)) language else null, genres = genres, + totalBookCount = null, collections = emptyList() ) } diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt index 9b254d2d8..54123ccc4 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt @@ -47,6 +47,7 @@ class MylarSeriesProvider( ageRating = metadata.ageRating?.ageRating, language = null, genres = null, + totalBookCount = metadata.totalIssues, collections = emptyList(), ) } catch (e: Exception) { diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt index 8d2c6a214..6b949c703 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt @@ -321,6 +321,7 @@ class ComicInfoProviderTest { ageRating = AgeRating.MA_15 manga = Manga.YES_AND_RIGHT_TO_LEFT languageISO = "en" + count = 10 genre = "Action, Adventure" } @@ -337,7 +338,8 @@ class ComicInfoProviderTest { assertThat(ageRating).isEqualTo(15) assertThat(readingDirection).isEqualTo(SeriesMetadata.ReadingDirection.RIGHT_TO_LEFT) assertThat(language).isEqualTo("en") - assertThat(summary).isBlank() + assertThat(summary).isBlank + assertThat(totalBookCount).isEqualTo(10) assertThat(genres).containsExactlyInAnyOrder("Action", "Adventure") } } diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ComicInfoTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ComicInfoTest.kt index 3f85f881d..bee58c20e 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ComicInfoTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ComicInfoTest.kt @@ -23,6 +23,7 @@ class ComicInfoTest { assertThat(notes).isEqualTo("Scraped metadata from Comixology [CMXDB727888], [RELDATE:2018-10-30]") assertThat(publisher).isEqualTo("DC") assertThat(imprint).isEqualTo("Vertigo") + assertThat(count).isEqualTo(10) assertThat(genre).isEqualTo("Fantasy, Supernatural/Occult, Horror, Mature, Superhero, Mythology, Drama") assertThat(pageCount).isEqualTo(237) assertThat(languageISO).isEqualTo("en") @@ -47,6 +48,7 @@ class ComicInfoTest { assertThat(notes).isEqualTo("Scraped metadata from Comixology [CMXDB727888], [RELDATE:2018-10-30]") assertThat(publisher).isEqualTo("DC") assertThat(imprint).isEqualTo("Vertigo") + assertThat(pageCount).isNull() assertThat(genre).isEqualTo("Fantasy, Supernatural/Occult, Horror, Mature, Superhero, Mythology, Drama") assertThat(pageCount).isEqualTo(237) assertThat(languageISO).isEqualTo("en") diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt index 577f43774..283615815 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt @@ -57,6 +57,7 @@ class MylarSeriesProviderTest { assertThat(ageRating).isEqualTo(18) assertThat(language).isNull() assertThat(genres).isNull() + assertThat(totalBookCount).isEqualTo(2) assertThat(collections).isEmpty() } } @@ -96,6 +97,7 @@ class MylarSeriesProviderTest { assertThat(ageRating).isNull() assertThat(language).isNull() assertThat(genres).isNull() + assertThat(totalBookCount).isEqualTo(2) assertThat(collections).isEmpty() } } diff --git a/komga/src/test/resources/comicrack/ComicInfo.xml b/komga/src/test/resources/comicrack/ComicInfo.xml index 8f86275fd..cbad717b8 100644 --- a/komga/src/test/resources/comicrack/ComicInfo.xml +++ b/komga/src/test/resources/comicrack/ComicInfo.xml @@ -23,6 +23,7 @@ Scraped metadata from Comixology [CMXDB727888], [RELDATE:2018-10-30] DC Vertigo + 10 Fantasy, Supernatural/Occult, Horror, Mature, Superhero, Mythology, Drama 237 en