From 38d7d97167ce00e87cdb8cd3cfdc69d6091bb567 Mon Sep 17 00:00:00 2001 From: Naga <94557604+NagaYZ@users.noreply.github.com> Date: Fri, 8 Mar 2024 02:29:59 +0100 Subject: [PATCH] added search by id --- .../site/galleryadults/all/NHentaiParser.kt | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt index f5eb6af8..beaa9ed5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt @@ -35,9 +35,18 @@ internal class NHentaiParser(context: MangaLoaderContext) : when (filter) { is MangaListFilter.Search -> { - append("/search/?q=pages:>0 ") - append(filter.query.urlEncoded()) - append("&") + // Check if the query is all numbers + val numericQuery = filter.query.trim() + if (numericQuery.matches("\\d+".toRegex())) { + val title = fetchMangaTitle("$this/g/$numericQuery/") + append("/search/?q=pages:>0 ") + append(title) + append("&") + } else { + append("/search/?q=pages:>0 ") + append(filter.query.urlEncoded()) + append("&") + } } is MangaListFilter.Advanced -> { @@ -89,6 +98,11 @@ internal class NHentaiParser(context: MangaLoaderContext) : return parseMangaList(webClient.httpGet(url).parseHtml()) } + private suspend fun fetchMangaTitle(url: String): String { + val doc = webClient.httpGet(url).parseHtml() + return doc.selectFirstOrThrow("h1.title").text().trim() + } + override suspend fun getPageUrl(page: MangaPage): String { val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml() val root = doc.body()