ignore 404 on search (#15100)

This commit is contained in:
mobi2002 2023-01-25 23:46:35 +05:00 committed by GitHub
parent f35ee5dfaf
commit 3dfc9fdb29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Nana'
pkgNameSuffix = 'en.nana'
extClass = '.Nana'
extVersionCode = 1
extVersionCode = 2
isNsfw = true
}

View File

@ -1,15 +1,19 @@
package eu.kanade.tachiyomi.extension.en.nana
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservable
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Call
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
@ -41,6 +45,13 @@ class Nana : ParsedHttpSource() {
searchMangaNextPageSelector()
// Search
// The search returns 404 when there's no results.
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
return client.newCall(searchMangaRequest(page, query, filters))
.asObservableIgnoreCode(404)
.map(::searchMangaParse)
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val filterList = if (filters.isEmpty()) getFilterList() else filters
val tagsFilter = filterList.find { it is TagsFilter } as TagsFilter
@ -179,6 +190,15 @@ class Nana : ParsedHttpSource() {
}
// Other
private fun Call.asObservableIgnoreCode(code: Int): Observable<Response> {
return asObservable().doOnNext { response ->
if (!response.isSuccessful && response.code != code) {
response.close()
throw Exception("HTTP error ${response.code}")
}
}
}
companion object {
private val PATTERN_PAGES = Regex("Reader\\.pages\\s*=\\s*\\{\\\"pages\\\":\\[([^];\\n]+)]\\}\\.pages;")
}