nhentai: Fix favourites selector and add offset filter (#12746)

This commit is contained in:
MatchaSoba 2022-07-27 00:43:41 +08:00 committed by GitHub
parent 3728e2990c
commit 991004a098
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'NHentai'
pkgNameSuffix = 'all.nhentai'
extClass = '.NHFactory'
extVersionCode = 34
extVersionCode = 35
isNsfw = true
}

View File

@ -84,7 +84,7 @@ open class NHentai(
override fun latestUpdatesRequest(page: Int) = GET(if (nhLang.isBlank()) "$baseUrl/?page=$page" else "$baseUrl/language/$nhLang/?page=$page", headers)
override fun latestUpdatesSelector() = "#content .index-container:not(.index-popular) .gallery"
override fun latestUpdatesSelector() = "#content .container:not(.index-popular) .gallery"
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
setUrlWithoutDomain(element.select("a").attr("href"))
@ -130,17 +130,19 @@ open class NHentai(
val advQuery = combineQuery(filterList)
val favoriteFilter = filterList.findInstance<FavoriteFilter>()
val isOkayToSort = filterList.findInstance<UploadedFilter>()?.state?.isBlank() ?: true
val offsetPage =
filterList.findInstance<OffsetPageFilter>()?.state?.toIntOrNull()?.plus(page) ?: page
if (favoriteFilter?.state == true) {
val url = "$baseUrl/favorites".toHttpUrlOrNull()!!.newBuilder()
.addQueryParameter("q", "$fixedQuery $advQuery")
.addQueryParameter("page", page.toString())
.addQueryParameter("page", offsetPage.toString())
return GET(url.toString(), headers)
} else {
val url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder()
.addQueryParameter("q", "$fixedQuery $nhLangSearch$advQuery")
.addQueryParameter("page", page.toString())
.addQueryParameter("page", offsetPage.toString())
if (isOkayToSort) {
filterList.findInstance<SortFilter>()?.let { f ->
@ -262,6 +264,7 @@ open class NHentai(
Filter.Separator(),
SortFilter(),
OffsetPageFilter(),
Filter.Header("Sort is ignored if favorites only"),
FavoriteFilter()
)
@ -276,6 +279,8 @@ open class NHentai(
class PagesFilter : AdvSearchEntryFilter("Pages")
open class AdvSearchEntryFilter(name: String) : Filter.Text(name)
class OffsetPageFilter : Filter.Text("Offset results by # pages")
override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used")
private class FavoriteFilter : Filter.CheckBox("Show favorites only", false)