From 76f44c98be9c64e751ef7d9dc7bed576f97f4f57 Mon Sep 17 00:00:00 2001 From: palaks-1 Date: Sun, 9 Mar 2025 20:00:31 +0200 Subject: [PATCH] [NHentai.xxx] Fix source --- .../galleryadults/all/NHentaiXxxParser.kt | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) 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" + } + } }