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'
pkgNameSuffix = 'all.nhentai'
extClass = '.NHFactory'
extVersionCode = 23
extVersionCode = 24
libVersion = '1.2'
}

View File

@ -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