EHentai: Fix page filter looping (#12707)
This commit is contained in:
parent
5add0416b0
commit
680dd09892
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'E-Hentai'
|
extName = 'E-Hentai'
|
||||||
pkgNameSuffix = 'all.ehentai'
|
pkgNameSuffix = 'all.ehentai'
|
||||||
extClass = '.EHFactory'
|
extClass = '.EHFactory'
|
||||||
extVersionCode = 16
|
extVersionCode = 17
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,12 +48,14 @@ abstract class EHentai(
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
private var lastMangaId = ""
|
||||||
|
|
||||||
// true if lang is a "natural human language"
|
// true if lang is a "natural human language"
|
||||||
private fun isLangNatural(): Boolean = lang !in listOf("none", "other")
|
private fun isLangNatural(): Boolean = lang !in listOf("none", "other")
|
||||||
|
|
||||||
private fun genericMangaParse(response: Response): MangasPage {
|
private fun genericMangaParse(response: Response): MangasPage {
|
||||||
val doc = response.asJsoup()
|
val doc = response.asJsoup()
|
||||||
val parsedMangas = doc.select("table.itg td.glname")
|
val mangaElements = doc.select("table.itg td.glname")
|
||||||
.let { elements ->
|
.let { elements ->
|
||||||
if (isLangNatural() && getEnforceLanguagePref()) {
|
if (isLangNatural() && getEnforceLanguagePref()) {
|
||||||
elements.filter { element ->
|
elements.filter { element ->
|
||||||
|
@ -65,12 +67,17 @@ abstract class EHentai(
|
||||||
elements
|
elements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map {
|
val parsedMangas: MutableList<SManga> = mutableListOf()
|
||||||
|
for (i in mangaElements.indices) {
|
||||||
|
val manga = mangaElements[i].let {
|
||||||
SManga.create().apply {
|
SManga.create().apply {
|
||||||
// Get title
|
// Get title
|
||||||
it.select("a")?.first()?.apply {
|
it.select("a")?.first()?.apply {
|
||||||
title = this.select(".glink").text()
|
title = this.select(".glink").text()
|
||||||
url = ExGalleryMetadata.normalizeUrl(attr("href"))
|
url = ExGalleryMetadata.normalizeUrl(attr("href"))
|
||||||
|
if (i == mangaElements.lastIndex) {
|
||||||
|
lastMangaId = ExGalleryMetadata.galleryId(attr("href"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Get image
|
// Get image
|
||||||
it.parent().select(".glthumb img")?.first().apply {
|
it.parent().select(".glthumb img")?.first().apply {
|
||||||
|
@ -79,6 +86,8 @@ abstract class EHentai(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
parsedMangas.add(manga)
|
||||||
|
}
|
||||||
|
|
||||||
// Add to page if required
|
// Add to page if required
|
||||||
val hasNextPage = doc.select("a[onclick=return false]").last()?.text() == ">"
|
val hasNextPage = doc.select("a[onclick=return false]").last()?.text() == ">"
|
||||||
|
@ -159,6 +168,9 @@ abstract class EHentai(
|
||||||
filters.forEach {
|
filters.forEach {
|
||||||
if (it is UriFilter) it.addToUri(uri)
|
if (it is UriFilter) it.addToUri(uri)
|
||||||
}
|
}
|
||||||
|
if (uri.toString().contains("f_spf") || uri.toString().contains("f_spt")) {
|
||||||
|
if (page > 1) uri.appendQueryParameter("from", lastMangaId)
|
||||||
|
}
|
||||||
return exGet(uri.toString(), page)
|
return exGet(uri.toString(), page)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ class ExGalleryMetadata {
|
||||||
pathSegments.filterNot(String::isNullOrBlank)
|
pathSegments.filterNot(String::isNullOrBlank)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun galleryId(url: String) = splitGalleryUrl(url)[1]
|
fun galleryId(url: String) = splitGalleryUrl(url)[1]
|
||||||
|
|
||||||
private fun galleryToken(url: String) = splitGalleryUrl(url)[2]
|
private fun galleryToken(url: String) = splitGalleryUrl(url)[2]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue