[NHentai] fix several bugs about search (#4657)
* [NHentai] fix search * 1. remove `+` before language since they have different semantics (add `+` before means this is not concern as a namespace, that time `+` will be encoded to `%2B`). 2. change fallback value of `fixedQuery` to empty string rather than a quote 3. change search url since there have a redirection. * Update build.gradle * Remove fixed query
This commit is contained in:
parent
dc6189f4c2
commit
abf5f64873
|
@ -1,7 +1,7 @@
|
||||||
ext {
|
ext {
|
||||||
extName = 'NHentai'
|
extName = 'NHentai'
|
||||||
extClass = '.NHFactory'
|
extClass = '.NHFactory'
|
||||||
extVersionCode = 43
|
extVersionCode = 44
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,9 +136,8 @@ open class NHentai(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
val fixedQuery = query.ifEmpty { "\"\"" }
|
|
||||||
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||||
val nhLangSearch = if (nhLang.isBlank()) "" else "+language:$nhLang "
|
val nhLangSearch = if (nhLang.isBlank()) "" else "language:$nhLang "
|
||||||
val advQuery = combineQuery(filterList)
|
val advQuery = combineQuery(filterList)
|
||||||
val favoriteFilter = filterList.findInstance<FavoriteFilter>()
|
val favoriteFilter = filterList.findInstance<FavoriteFilter>()
|
||||||
val isOkayToSort = filterList.findInstance<UploadedFilter>()?.state?.isBlank() ?: true
|
val isOkayToSort = filterList.findInstance<UploadedFilter>()?.state?.isBlank() ?: true
|
||||||
|
@ -146,14 +145,14 @@ open class NHentai(
|
||||||
filterList.findInstance<OffsetPageFilter>()?.state?.toIntOrNull()?.plus(page) ?: page
|
filterList.findInstance<OffsetPageFilter>()?.state?.toIntOrNull()?.plus(page) ?: page
|
||||||
|
|
||||||
if (favoriteFilter?.state == true) {
|
if (favoriteFilter?.state == true) {
|
||||||
val url = "$baseUrl/favorites".toHttpUrl().newBuilder()
|
val url = "$baseUrl/favorites/".toHttpUrl().newBuilder()
|
||||||
.addQueryParameter("q", "$fixedQuery $advQuery")
|
.addQueryParameter("q", "$query $advQuery")
|
||||||
.addQueryParameter("page", offsetPage.toString())
|
.addQueryParameter("page", offsetPage.toString())
|
||||||
|
|
||||||
return GET(url.build(), headers)
|
return GET(url.build(), headers)
|
||||||
} else {
|
} else {
|
||||||
val url = "$baseUrl/search".toHttpUrl().newBuilder()
|
val url = "$baseUrl/search/".toHttpUrl().newBuilder()
|
||||||
.addQueryParameter("q", "$fixedQuery $nhLangSearch$advQuery")
|
.addQueryParameter("q", "$query $nhLangSearch$advQuery")
|
||||||
.addQueryParameter("page", offsetPage.toString())
|
.addQueryParameter("page", offsetPage.toString())
|
||||||
|
|
||||||
if (isOkayToSort) {
|
if (isOkayToSort) {
|
||||||
|
@ -173,7 +172,7 @@ open class NHentai(
|
||||||
.filterNot(String::isBlank)
|
.filterNot(String::isBlank)
|
||||||
.forEach { tag ->
|
.forEach { tag ->
|
||||||
if (tag.startsWith("-")) append("-")
|
if (tag.startsWith("-")) append("-")
|
||||||
append(filter.name, "\"", tag.removePrefix("-"), "\" ")
|
append(filter.name, ":\"", tag.removePrefix("-"), "\" ")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue