diff --git a/komga-webui/src/types/komga-readlists.ts b/komga-webui/src/types/komga-readlists.ts index d024595b0..37a8c3ddc 100644 --- a/komga-webui/src/types/komga-readlists.ts +++ b/komga-webui/src/types/komga-readlists.ts @@ -31,5 +31,5 @@ interface ReadListRequestResultBookDto { interface ReadListRequestBookDto { series: string, - number: number, + number: string, } diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/ReadListRequest.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/ReadListRequest.kt index fa8bbcef1..dc525408c 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/ReadListRequest.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/ReadListRequest.kt @@ -10,7 +10,7 @@ data class ReadListRequest( data class ReadListRequestBook( val series: String, - val number: Int, + val number: String, ) data class ReadListRequestResult( diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/ReadListMatcher.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/ReadListMatcher.kt index 3285ed524..5a5bd2bbd 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/ReadListMatcher.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/ReadListMatcher.kt @@ -40,7 +40,7 @@ class ReadListMatcher( val seriesId = seriesMatches.first().id val seriesBooks = bookRepository.findBySeriesId(seriesId) val bookMatches = bookMetadataRepository.findByIds(seriesBooks.map { it.id }) - .filter { it.number.toIntOrNull()?.equals(book.number) ?: false } + .filter { (it.number.trimStart('0') == book.number.trimStart('0')) } .map { it.bookId } when { bookMatches.size > 1 -> unmatchedBooks += ReadListRequestResultBook(book, "ERR_1013") diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProvider.kt index b4a13018a..05b20d6e2 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProvider.kt @@ -28,7 +28,7 @@ class ReadListProvider( val books = readingList.books.mapNotNull { val series = computeSeriesFromSeriesAndVolume(it.series, it.volume) if (!series.isNullOrBlank() && it.number != null) - ReadListRequestBook(series, it.number!!) + ReadListRequestBook(series, it.number!!.trim()) else { logger.warn { "Book is missing series or number, skipping: $it" } null diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/Book.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/Book.kt index 26f4eb0dd..946daefbe 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/Book.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/Book.kt @@ -9,7 +9,7 @@ class Book { var series: String? = null @JsonProperty(value = "Number") - var number: Int? = null + var number: String? = null @JsonProperty(value = "Volume") var volume: Int? = null diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/rest/dto/ReadListRequestResultDto.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/rest/dto/ReadListRequestResultDto.kt index d2aff6733..dc6ce93e9 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/rest/dto/ReadListRequestResultDto.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/rest/dto/ReadListRequestResultDto.kt @@ -6,7 +6,7 @@ import org.gotson.komga.domain.model.ReadListRequestResultBook data class ReadListRequestBookDto( val series: String, - val number: Int, + val number: String, ) data class ReadListRequestResultDto( diff --git a/komga/src/test/kotlin/org/gotson/komga/domain/service/ReadListMatcherTest.kt b/komga/src/test/kotlin/org/gotson/komga/domain/service/ReadListMatcherTest.kt index 21d93542a..3348cb1e3 100644 --- a/komga/src/test/kotlin/org/gotson/komga/domain/service/ReadListMatcherTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/domain/service/ReadListMatcherTest.kt @@ -78,17 +78,17 @@ class ReadListMatcherTest( seriesLifecycle.sortBooks(s) bookMetadataRepository.findById(booksSeries2[0].id).let { - bookMetadataRepository.update(it.copy(number = "025")) + bookMetadataRepository.update(it.copy(number = "0025")) } } val request = ReadListRequest( name = "readlist", books = listOf( - ReadListRequestBook(series = "Batman: White Knight", number = 1), - ReadListRequestBook(series = "joker", number = 2), - ReadListRequestBook(series = "Batman: White Knight", number = 2), - ReadListRequestBook(series = "joker", number = 25), + ReadListRequestBook(series = "Batman: White Knight", number = "1"), + ReadListRequestBook(series = "joker", number = "02"), + ReadListRequestBook(series = "Batman: White Knight", number = "2"), + ReadListRequestBook(series = "joker", number = "25"), ) ) @@ -99,7 +99,7 @@ class ReadListMatcherTest( with(result) { assertThat(readList).isNotNull assertThat(unmatchedBooks).isEmpty() - assertThat(errorCode).isBlank() + assertThat(errorCode).isBlank with(readList!!) { assertThat(name).isEqualTo(request.name) assertThat(bookIds).hasSize(4) @@ -125,10 +125,10 @@ class ReadListMatcherTest( val request = ReadListRequest( name = "my readlist", books = listOf( - ReadListRequestBook(series = "batman: white knight", number = 1), - ReadListRequestBook(series = "joker", number = 2), - ReadListRequestBook(series = "BATMAN: WHITE KNIGHT", number = 2), - ReadListRequestBook(series = "joker", number = 25), + ReadListRequestBook(series = "batman: white knight", number = "1"), + ReadListRequestBook(series = "joker", number = "2"), + ReadListRequestBook(series = "BATMAN: WHITE KNIGHT", number = "2"), + ReadListRequestBook(series = "joker", number = "25"), ) ) @@ -176,10 +176,10 @@ class ReadListMatcherTest( val request = ReadListRequest( name = "readlist", books = listOf( - ReadListRequestBook(series = "tokyo ghost", number = 1), - ReadListRequestBook(series = "batman", number = 3), - ReadListRequestBook(series = "joker", number = 3), - ReadListRequestBook(series = "batman", number = 2), + ReadListRequestBook(series = "tokyo ghost", number = "1"), + ReadListRequestBook(series = "batman", number = "3"), + ReadListRequestBook(series = "joker", number = "3"), + ReadListRequestBook(series = "batman", number = "2"), ) ) diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProviderTest.kt index a3f6b90cc..706aeec45 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ReadListProviderTest.kt @@ -21,12 +21,12 @@ class ReadListProviderTest { books = listOf( Book().apply { series = "series 1" - number = 4 + number = " 4 " volume = 2005 }, Book().apply { series = "series 2" - number = 1 + number = "1" }, ) } @@ -44,12 +44,12 @@ class ReadListProviderTest { with(books[0]) { assertThat(series).isEqualTo("series 1 (2005)") - assertThat(number).isEqualTo(4) + assertThat(number).isEqualTo("4") } with(books[1]) { assertThat(series).isEqualTo("series 2") - assertThat(number).isEqualTo(1) + assertThat(number).isEqualTo("1") } } } @@ -62,12 +62,12 @@ class ReadListProviderTest { books = listOf( Book().apply { series = " " - number = 4 + number = "4" volume = 2005 }, Book().apply { series = null - number = 1 + number = "1" }, Book().apply { series = "Series" @@ -110,12 +110,12 @@ class ReadListProviderTest { books = listOf( Book().apply { series = "series 1" - number = 4 + number = "4" volume = 2005 }, Book().apply { series = "series 2" - number = 1 + number = "1" }, ) } @@ -137,12 +137,12 @@ class ReadListProviderTest { books = listOf( Book().apply { series = "series 1" - number = 4 + number = "4" volume = 2005 }, Book().apply { series = "series 2" - number = 1 + number = "1" }, ) } diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ReadingListTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ReadingListTest.kt index 375140ee6..1584c9b08 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ReadingListTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/dto/ReadingListTest.kt @@ -21,7 +21,7 @@ class ReadingListTest { with(books[0]) { assertThat(series).isEqualTo("Civil War") - assertThat(number).isEqualTo(1) + assertThat(number).isEqualTo("1") assertThat(volume).isEqualTo(2006) assertThat(year).isEqualTo(2006) assertThat(fileName).isEqualTo("Civil War Vol.2006 #01 (July, 2006)") @@ -29,7 +29,7 @@ class ReadingListTest { with(books[1]) { assertThat(series).isEqualTo("Wolverine") - assertThat(number).isEqualTo(42) + assertThat(number).isEqualTo("42") assertThat(volume).isEqualTo(2003) assertThat(year).isEqualTo(2006) assertThat(fileName).isEqualTo("Wolverine Vol.2003 #42 (July, 2006)") @@ -37,7 +37,7 @@ class ReadingListTest { with(books[2]) { assertThat(series).isEqualTo("X-Factor") - assertThat(number).isEqualTo(8) + assertThat(number).isEqualTo("HS") assertThat(volume).isEqualTo(2006) assertThat(year).isEqualTo(2006) assertThat(fileName).isEqualTo("X-Factor Vol.2006 #08 (August, 2006)") diff --git a/komga/src/test/resources/comicrack/ReadingList.xml b/komga/src/test/resources/comicrack/ReadingList.xml index d24d2b0ee..6984ca9e7 100644 --- a/komga/src/test/resources/comicrack/ReadingList.xml +++ b/komga/src/test/resources/comicrack/ReadingList.xml @@ -1,5 +1,5 @@ - + Civil War @@ -10,7 +10,7 @@ 29a69cbf-af64-471d-889c-8fc0f0080f7c Wolverine Vol.2003 #42 (July, 2006) - + ec70e585-5a80-428c-a67e-fd22b668449b X-Factor Vol.2006 #08 (August, 2006)