diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt index d6c047363..ebea9bc94 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt @@ -98,9 +98,7 @@ class RemangaRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposito } val branchId = content.getJSONArray("branches").optJSONObject(0) ?.getLong("id") ?: throw ParseException("No branches found") - val chapters = loaderContext.httpGet( - url = "https://api.$domain/api/titles/chapters/?branch_id=$branchId" - ).parseJson().getJSONArray("content") + val chapters = grabChapters(domain, branchId) val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US) return manga.copy( description = content.getString("description"), @@ -123,7 +121,7 @@ class RemangaRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposito MangaChapter( id = generateUid(id), url = "/api/titles/chapters/$id/", - number = chapters.length() - i, + number = chapters.size - i, name = buildString { append("Том ") append(jo.optString("tome", "0")) @@ -211,6 +209,26 @@ class RemangaRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposito source = source, ) + private suspend fun grabChapters(domain: String, branchId: Long): List { + val result = ArrayList(100) + var page = 1 + while (true) { + val content = loaderContext.httpGet( + "https://api.$domain/api/titles/chapters/?branch_id=$branchId&page=$page&count=100" + ).parseJson().getJSONArray("content") + val len = content.length() + if (len == 0) { + break + } + result.ensureCapacity(result.size + len) + for (i in 0 until len) { + result.add(content.getJSONObject(i)) + } + page++ + } + return result + } + private companion object { const val PAGE_SIZE = 30