diff --git a/komga/src/main/kotlin/org/gotson/komga/application/service/MetadataLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/application/service/MetadataLifecycle.kt index 66f51e634..0cd9ecf5a 100644 --- a/komga/src/main/kotlin/org/gotson/komga/application/service/MetadataLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/application/service/MetadataLifecycle.kt @@ -27,19 +27,17 @@ class MetadataLifecycle( logger.info { "Refresh metadata for book: $book" } val loadedBook = bookRepository.findByIdOrNull(book.id) - loadedBook?.let { b -> - val patch = comicInfoProvider.getBookMetadataFromBook(b) + loadedBook?.let { bookToPatch -> + val patch = comicInfoProvider.getBookMetadataFromBook(bookToPatch) - patch?.let { - metadataApplier.apply(it, b) - bookRepository.save(b) - } + patch?.let { bPatch -> + metadataApplier.apply(bPatch, bookToPatch) + bookRepository.save(bookToPatch) - val seriesPatch = comicInfoProvider.getSeriesMetadataFromBook(b) - - seriesPatch?.let { - metadataApplier.apply(it, b.series) - seriesRepository.save(b.series) + bPatch.series?.let { sPatch -> + metadataApplier.apply(sPatch, bookToPatch.series) + seriesRepository.save(bookToPatch.series) + } } } } diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadataPatch.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadataPatch.kt index dc4117c13..98299c35f 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadataPatch.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadataPatch.kt @@ -11,5 +11,6 @@ class BookMetadataPatch( val publisher: String?, val ageRating: Int?, val releaseDate: LocalDate?, - val authors: List? + val authors: List?, + val series: SeriesMetadataPatch? ) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/SeriesMetadataProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/SeriesMetadataProvider.kt deleted file mode 100644 index 62b12cef6..000000000 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/SeriesMetadataProvider.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.gotson.komga.infrastructure.metadata - -import org.gotson.komga.domain.model.Book -import org.gotson.komga.domain.model.SeriesMetadataPatch - -interface SeriesMetadataProvider { - fun getSeriesMetadataFromBook(book: Book): SeriesMetadataPatch? -} diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProvider.kt index b1e6282e7..ae0bc4677 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProvider.kt @@ -9,7 +9,6 @@ import org.gotson.komga.domain.model.BookMetadataPatch import org.gotson.komga.domain.model.SeriesMetadataPatch import org.gotson.komga.domain.service.BookAnalyzer import org.gotson.komga.infrastructure.metadata.BookMetadataProvider -import org.gotson.komga.infrastructure.metadata.SeriesMetadataProvider import org.gotson.komga.infrastructure.metadata.comicinfo.dto.ComicInfo import org.gotson.komga.infrastructure.metadata.comicinfo.dto.Manga import org.springframework.beans.factory.annotation.Autowired @@ -24,7 +23,7 @@ private const val COMIC_INFO = "ComicInfo.xml" class ComicInfoProvider( @Autowired(required = false) private val mapper: XmlMapper = XmlMapper(), private val bookAnalyzer: BookAnalyzer -) : BookMetadataProvider, SeriesMetadataProvider { +) : BookMetadataProvider { override fun getBookMetadataFromBook(book: Book): BookMetadataPatch? { getComicInfo(book)?.let { comicInfo -> @@ -56,18 +55,12 @@ class ComicInfoProvider( comicInfo.publisher, comicInfo.ageRating?.ageRating, releaseDate, - if (authors.isEmpty()) null else authors - ) - } - return null - } - - override fun getSeriesMetadataFromBook(book: Book): SeriesMetadataPatch? { - getComicInfo(book)?.let { comicInfo -> - return SeriesMetadataPatch( - comicInfo.series, - comicInfo.series, - null + if (authors.isEmpty()) null else authors, + SeriesMetadataPatch( + comicInfo.series, + comicInfo.series, + null + ) ) } return null @@ -76,7 +69,7 @@ class ComicInfoProvider( private fun getComicInfo(book: Book): ComicInfo? { try { if (book.media.files.none { it == COMIC_INFO }) { - logger.debug { "Book does not contain any $COMIC_INFO file: ${book.url}" } + logger.debug { "Book does not contain any $COMIC_INFO file: $book" } return null } diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProviderTest.kt index bd4e3c84f..0634971f4 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicinfo/ComicInfoProviderTest.kt @@ -158,7 +158,7 @@ class ComicInfoProviderTest { every { mockMapper.readValue(any(), ComicInfo::class.java) } returns comicInfo - val patch = comicInfoProvider.getSeriesMetadataFromBook(book) + val patch = comicInfoProvider.getBookMetadataFromBook(book)!!.series with(patch!!) { assertThat(title).isEqualTo("series")