diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiXxxParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiXxxParser.kt index fa10be68..9bff56af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiXxxParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiXxxParser.kt @@ -110,10 +110,23 @@ internal class NHentaiXxxParser(context: MangaLoaderContext) : } } + override suspend fun getPages(chapter: MangaChapter): List { + val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() + val totalPages = doc.selectFirstOrThrow(selectTotalPage).text().toInt() + val firstPageUrl = doc.requireElementById(idImg).requireSrc() + return (1..totalPages).map { + val url = replacePageNumber(firstPageUrl, it) + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + override suspend fun getPageUrl(page: MangaPage): String { - val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml() - val root = doc.body() - return root.requireElementById(idImg).requireSrc() + return page.url } override fun Element.parseTags() = select("a").mapToSet { @@ -125,4 +138,15 @@ internal class NHentaiXxxParser(context: MangaLoaderContext) : source = source, ) } + + private fun replacePageNumber(url: String, newPageNumber: Int): String { + val lastSegment = url.substringAfterLast("/") + val extension = lastSegment.substringAfterLast(".", "") + + return if (extension.isNotEmpty()) { + url.substringBeforeLast("/") + "/$newPageNumber.$extension" + } else { + url.substringBeforeLast("/") + "/$newPageNumber" + } + } }