From 8444b4c008bbb70f6e42d2f214897ea69170042f Mon Sep 17 00:00:00 2001 From: arkon <eugcheung94@gmail.com> Date: Wed, 17 Jun 2020 23:00:30 -0400 Subject: [PATCH] NHentai: handle ID searches --- src/all/nhentai/build.gradle | 2 +- .../extension/all/nhentai/NHentai.kt | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/all/nhentai/build.gradle b/src/all/nhentai/build.gradle index f80ecc4fe..df27a7181 100644 --- a/src/all/nhentai/build.gradle +++ b/src/all/nhentai/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: NHentai' pkgNameSuffix = 'all.nhentai' extClass = '.NHFactory' - extVersionCode = 23 + extVersionCode = 24 libVersion = '1.2' } diff --git a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt index 0a96c2587..0e5aff7d1 100644 --- a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt +++ b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt @@ -128,16 +128,28 @@ open class NHentai( override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> { - return if (query.startsWith(PREFIX_ID_SEARCH)) { - val id = query.removePrefix(PREFIX_ID_SEARCH) - client.newCall(searchMangaByIdRequest(id)) - .asObservableSuccess() - .map { response -> searchMangaByIdParse(response, id) } - } else { - return super.fetchSearchManga(page, query, filters) + return when { + query.startsWith(PREFIX_ID_SEARCH) -> { + val id = query.removePrefix(PREFIX_ID_SEARCH) + client.newCall(searchMangaByIdRequest(id)) + .asObservableSuccess() + .map { response -> searchMangaByIdParse(response, id) } + } + query.isQueryIdNumbers() -> { + client.newCall(searchMangaByIdRequest(query)) + .asObservableSuccess() + .map { response -> searchMangaByIdParse(response, query) } + } + else -> super.fetchSearchManga(page, query, filters) } } + // The website redirects for any number <= 400000 + private fun String.isQueryIdNumbers(): Boolean { + val int = this.toIntOrNull() ?: return false + return int <= 400000 + } + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val filters = if (filters.isEmpty()) getFilterList() else filters