NHentai: handle ID searches

This commit is contained in:
arkon 2020-06-17 23:00:30 -04:00
parent b6e6a9abc0
commit 8444b4c008
2 changed files with 20 additions and 8 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: NHentai' appName = 'Tachiyomi: NHentai'
pkgNameSuffix = 'all.nhentai' pkgNameSuffix = 'all.nhentai'
extClass = '.NHFactory' extClass = '.NHFactory'
extVersionCode = 23 extVersionCode = 24
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -128,16 +128,28 @@ open class NHentai(
override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector()
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> { override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
return if (query.startsWith(PREFIX_ID_SEARCH)) { return when {
val id = query.removePrefix(PREFIX_ID_SEARCH) query.startsWith(PREFIX_ID_SEARCH) -> {
client.newCall(searchMangaByIdRequest(id)) val id = query.removePrefix(PREFIX_ID_SEARCH)
.asObservableSuccess() client.newCall(searchMangaByIdRequest(id))
.map { response -> searchMangaByIdParse(response, id) } .asObservableSuccess()
} else { .map { response -> searchMangaByIdParse(response, id) }
return super.fetchSearchManga(page, query, filters) }
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 { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val filters = if (filters.isEmpty()) getFilterList() else filters val filters = if (filters.isEmpty()) getFilterList() else filters