diff --git a/src/all/kavita/build.gradle b/src/all/kavita/build.gradle index f8c6ef71b..97c599b3b 100644 --- a/src/all/kavita/build.gradle +++ b/src/all/kavita/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Kavita' pkgNameSuffix = 'all.kavita' extClass = '.KavitaFactory' - extVersionCode = 15 + extVersionCode = 16 } dependencies { diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt index f3ca25c7e..cbf56edd4 100644 --- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt +++ b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt @@ -513,11 +513,14 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou * Fetches the "url" of each page from the chapter * **/ override fun pageListRequest(chapter: SChapter): Request { - return GET("$apiUrl/${chapter.url}", headersBuilder().build()) + // remove potential _ chapter salt + val chapterId = chapter.url.substringBefore("_") + return GET("$apiUrl/$chapterId", headersBuilder().build()) } override fun fetchPageList(chapter: SChapter): Observable> { - val chapterId = chapter.url + // remove potential _ chapter salt + val chapterId = chapter.url.substringBefore("_") val numPages = chapter.scanlator?.replace(" pages", "")?.toInt() val numPages2 = "$numPages".toInt() - 1 val pages = mutableListOf() diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt index 77b6b68e2..fc2e59ad5 100644 --- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt +++ b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt @@ -98,6 +98,13 @@ class KavitaHelper { } url = chapter.id.toString() + + if (chapter.fileCount > 1) { + // salt/offset to recognize chapters with new merged part-chapters as new and hence unread + chapter_number += 0.001f * chapter.fileCount + url = "${url}_${chapter.fileCount}" + } + date_upload = parseDate(chapter.created) scanlator = "${chapter.pages} pages" } diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt index 19fb7bcfc..36d218631 100644 --- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt +++ b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt @@ -123,4 +123,13 @@ data class ChapterDto( val coverImageLocked: Boolean, val volumeId: Int, val created: String, + val files: List? = null, +) { + val fileCount: Int + get() = files?.size ?: 0 +} + +@Serializable +data class FileDto( + val id: Int, )