From 6339053df1f6c0221187fdd119dab075fe4e4bdc Mon Sep 17 00:00:00 2001 From: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> Date: Tue, 19 Apr 2022 18:55:28 -0300 Subject: [PATCH] Add a migrate to GH message in GS main extension (#11528) * Add a migrate to GH message in GS main extension. * Fix missing override in nullableChapterFromElement. --- .../mmrcms/fallenangels/src/FallenAngels.kt | 14 +----------- .../mmrcms/gekkouscan/src/GekkouScans.kt | 22 +++++++++++++++++++ .../tachiyomi/multisrc/mmrcms/MMRCMS.kt | 2 +- .../multisrc/mmrcms/MMRCMSSources.kt | 2 +- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/multisrc/overrides/mmrcms/fallenangels/src/FallenAngels.kt b/multisrc/overrides/mmrcms/fallenangels/src/FallenAngels.kt index 5180116e3..0e89dae68 100644 --- a/multisrc/overrides/mmrcms/fallenangels/src/FallenAngels.kt +++ b/multisrc/overrides/mmrcms/fallenangels/src/FallenAngels.kt @@ -10,24 +10,12 @@ import java.util.Locale class FallenAngels : MMRCMS("Fallen Angels", "https://manga.fascans.com", "en") { - /** - * Parses the response from the site and returns a list of chapters. - * - * Overriden to allow for null chapters - * - * @param response the response from the site. - */ - override fun chapterListParse(response: Response): List { - val document = response.asJsoup() - return document.select(chapterListSelector()).mapNotNull { nullableChapterFromElement(it) } - } - /** * Returns a chapter from the given element. * * @param element an element obtained from [chapterListSelector]. */ - private fun nullableChapterFromElement(element: Element): SChapter? { + override fun nullableChapterFromElement(element: Element): SChapter? { val chapter = SChapter.create() val titleWrapper = element.select("[class^=chapter-title-rtl]").first() diff --git a/multisrc/overrides/mmrcms/gekkouscan/src/GekkouScans.kt b/multisrc/overrides/mmrcms/gekkouscan/src/GekkouScans.kt index e8f029ee7..df7b5dd86 100644 --- a/multisrc/overrides/mmrcms/gekkouscan/src/GekkouScans.kt +++ b/multisrc/overrides/mmrcms/gekkouscan/src/GekkouScans.kt @@ -4,8 +4,11 @@ import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor import eu.kanade.tachiyomi.multisrc.mmrcms.MMRCMS import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.util.asJsoup import okhttp3.OkHttpClient import okhttp3.Request +import okhttp3.Response import java.util.concurrent.TimeUnit class GekkouScans : MMRCMS( @@ -18,6 +21,22 @@ class GekkouScans : MMRCMS( .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) .build() + override fun chapterListParse(response: Response): List { + val document = response.asJsoup() + val chapters = document.select(chapterListSelector()) + .mapNotNull(::nullableChapterFromElement) + + val isExternal = document + .select("ul.domaintld > li.li:has(a[href*='hentai.gekkouscans.com.br'])") + .firstOrNull() != null + + if (chapters.isEmpty() && isExternal) { + throw Exception(EXTERNAL_SERIES_ERROR) + } + + return chapters + } + override fun chapterListSelector() = "ul.domaintld > li.li:has(a[href^='$baseUrl'])" override fun imageRequest(page: Page): Request { @@ -31,5 +50,8 @@ class GekkouScans : MMRCMS( companion object { private const val ACCEPT_IMAGE = "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + + private const val EXTERNAL_SERIES_ERROR = + "Migre esta série para a extensão Gekkou Hentai para continuar lendo." } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMS.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMS.kt index e56e7f3e9..43504d260 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMS.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMS.kt @@ -358,7 +358,7 @@ abstract class MMRCMS( * * @param element an element obtained from [chapterListSelector]. */ - private fun nullableChapterFromElement(element: Element): SChapter? { + protected open fun nullableChapterFromElement(element: Element): SChapter? { val chapter = SChapter.create() try { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt index 547c5b490..4164b167c 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mmrcms/MMRCMSSources.kt @@ -63,7 +63,7 @@ class MMRCMSSources { SourceData.Single("Op-VF", "https://www.op-vf.com", "fr", className = "OpVF"), SourceData.Single("FR Scan", "https://frscan.cc", "fr", overrideVersionCode = 1), SourceData.Single("Ama Scans", "https://amascan.com", "pt-BR", isNsfw = true, overrideVersionCode = 2), - SourceData.Single("Gekkou Scans", "https://gekkou.com.br", "pt-BR", isNsfw = true, pkgName = "gekkouscan", overrideVersionCode = 11), + SourceData.Single("Gekkou Scans", "https://gekkou.com.br", "pt-BR", isNsfw = true, pkgName = "gekkouscan", overrideVersionCode = 12), SourceData.Single("Gekkou Hentai", "https://hentai.gekkouscans.com.br", "pt-BR", isNsfw = true), SourceData.Single("White Cloud Pavilion", "https://whitecloudpavilion.com/manga/patreon", "en"), // NOTE: THIS SOURCE CONTAINS A CUSTOM LANGUAGE SYSTEM (which will be ignored)!