diff --git a/src/all/ehentai/build.gradle b/src/all/ehentai/build.gradle index 0f6b71bca..49574bf47 100644 --- a/src/all/ehentai/build.gradle +++ b/src/all/ehentai/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'E-Hentai' pkgNameSuffix = 'all.ehentai' extClass = '.EHFactory' - extVersionCode = 16 + extVersionCode = 17 isNsfw = true } diff --git a/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/EHentai.kt b/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/EHentai.kt index 5270b69ed..2a057f5af 100644 --- a/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/EHentai.kt +++ b/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/EHentai.kt @@ -48,12 +48,14 @@ abstract class EHentai( override val supportsLatest = true + private var lastMangaId = "" + // true if lang is a "natural human language" private fun isLangNatural(): Boolean = lang !in listOf("none", "other") private fun genericMangaParse(response: Response): MangasPage { val doc = response.asJsoup() - val parsedMangas = doc.select("table.itg td.glname") + val mangaElements = doc.select("table.itg td.glname") .let { elements -> if (isLangNatural() && getEnforceLanguagePref()) { elements.filter { element -> @@ -65,12 +67,17 @@ abstract class EHentai( elements } } - .map { + val parsedMangas: MutableList = mutableListOf() + for (i in mangaElements.indices) { + val manga = mangaElements[i].let { SManga.create().apply { // Get title it.select("a")?.first()?.apply { title = this.select(".glink").text() url = ExGalleryMetadata.normalizeUrl(attr("href")) + if (i == mangaElements.lastIndex) { + lastMangaId = ExGalleryMetadata.galleryId(attr("href")) + } } // Get image it.parent().select(".glthumb img")?.first().apply { @@ -79,6 +86,8 @@ abstract class EHentai( } } } + parsedMangas.add(manga) + } // Add to page if required val hasNextPage = doc.select("a[onclick=return false]").last()?.text() == ">" @@ -159,6 +168,9 @@ abstract class EHentai( filters.forEach { 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) } diff --git a/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/ExGalleryMetadata.kt b/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/ExGalleryMetadata.kt index f209cb9bb..5730a33a3 100644 --- a/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/ExGalleryMetadata.kt +++ b/src/all/ehentai/src/eu/kanade/tachiyomi/extension/all/ehentai/ExGalleryMetadata.kt @@ -41,7 +41,7 @@ class ExGalleryMetadata { 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]