From f146ecdd33322b2b4d6a68d54c1e85914d5d88d7 Mon Sep 17 00:00:00 2001 From: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> Date: Fri, 8 Apr 2022 16:06:24 -0300 Subject: [PATCH] Revert fetch genres on init in Madara-based sources. (#11391) --- .../madara/doujinhentai/src/DoujinHentai.kt | 4 +- .../madara/geceninlordu/src/GeceninLordu.kt | 4 +- .../madara/instamanhwa/src/InstaManhwa.kt | 2 +- .../manhwa18cc/src/Manhwa18CcFactory.kt | 3 +- .../tachiyomi/multisrc/madara/Madara.kt | 46 ++++++++++--------- .../multisrc/madara/MadaraGenerator.kt | 2 +- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt index 859fbe982..6c92730c1 100644 --- a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt +++ b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt @@ -15,11 +15,11 @@ class DoujinHentai : Madara( "DoujinHentai", "https://doujinhentai.net", "es", - SimpleDateFormat("d MMM. yyyy", Locale.ENGLISH), - fetchGenresOnInit = false + SimpleDateFormat("d MMM. yyyy", Locale.ENGLISH) ) { override val useLoadMoreSearch = false + override val fetchGenres = false override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/lista-manga-hentai?orderby=views&page=$page", headers) override fun popularMangaSelector() = "div.col-md-3 a" diff --git a/multisrc/overrides/madara/geceninlordu/src/GeceninLordu.kt b/multisrc/overrides/madara/geceninlordu/src/GeceninLordu.kt index 32abc5287..fbe4744d3 100644 --- a/multisrc/overrides/madara/geceninlordu/src/GeceninLordu.kt +++ b/multisrc/overrides/madara/geceninlordu/src/GeceninLordu.kt @@ -10,11 +10,11 @@ class GeceninLordu : Madara( "Gecenin Lordu", "https://geceninlordu.com/", "tr", - SimpleDateFormat("dd MMM yyyy", Locale("tr")), - fetchGenresOnInit = false + SimpleDateFormat("dd MMM yyyy", Locale("tr")) ) { override val useLoadMoreSearch = false + override val fetchGenres = false override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/?s=$query&post_type=wp-manga") diff --git a/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt b/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt index 7b81ae19c..0b24144ba 100644 --- a/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt +++ b/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt @@ -19,11 +19,11 @@ class InstaManhwa : Madara( "https://www.instamanhwa.com", "en", SimpleDateFormat("dd MMMM, yyyy", Locale.US), - fetchGenresOnInit = false ) { override val supportsLatest: Boolean = false override val useLoadMoreSearch = false + override val fetchGenres = false override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/latest?page=$page", headers) diff --git a/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt index dd92a1932..1812c79c1 100644 --- a/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt +++ b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt @@ -30,9 +30,10 @@ abstract class Manhwa18Cc( override val name: String, override val baseUrl: String, lang: String -) : Madara(name, baseUrl, lang, fetchGenresOnInit = false) { +) : Madara(name, baseUrl, lang) { override val useLoadMoreSearch = false + override val fetchGenres = false override fun popularMangaSelector() = "div.manga-item" override val popularMangaUrlSelector = "div.data > h3 > a" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt index 43177b8e3..09d6ed31f 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt @@ -24,8 +24,6 @@ import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import rx.Observable -import rx.Single -import rx.schedulers.Schedulers import uy.kohesive.injekt.injectLazy import java.text.ParseException import java.text.SimpleDateFormat @@ -39,8 +37,7 @@ abstract class Madara( override val name: String, override val baseUrl: String, final override val lang: String, - private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US), - protected val fetchGenresOnInit: Boolean = true + private val dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US) ) : ParsedHttpSource() { override val supportsLatest = true @@ -67,14 +64,19 @@ abstract class Madara( private var genresList: List = emptyList() /** - * Inner variable to control the genre fetching state. + * Inner variable to control the genre fetching failed state. */ private var fetchGenresFailed: Boolean = false /** * Inner variable to control how much tries the genres request was called. */ - private var fetchGenresCount: Int = 0 + private var fetchGenresAttempts: Int = 0 + + /** + * Disable it if you don't want the genres to be fetched. + */ + protected open val fetchGenres: Boolean = true override fun headersBuilder(): Headers.Builder = Headers.Builder() .add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/78.0$userAgentRandomizer") @@ -83,7 +85,7 @@ abstract class Madara( // Popular Manga override fun popularMangaParse(response: Response): MangasPage { - fetchGenres() + runCatching { fetchGenres() } return super.popularMangaParse(response) } @@ -492,6 +494,11 @@ abstract class Madara( else -> "Genres" } + protected open val genresMissingWarning: String = when (lang) { + "pt-BR" -> "Aperte 'Redefinir' para tentar mostrar os gêneros" + else -> "Press 'Reset' to attempt to show the genres" + } + protected open val showOnlyMangaEntriesLabel: String = when (lang) { "pt-BR" -> "Mostrar somente mangás" else -> "Show only manga entries" @@ -546,6 +553,11 @@ abstract class Madara( GenreConditionFilter(genreConditionFilterTitle, genreConditionFilterOptions), GenreList(genreFilterTitle, genresList) ) + } else if (fetchGenres) { + filters += listOf( + Filter.Separator(), + Filter.Header(genresMissingWarning) + ) } return FilterList(filters) @@ -563,7 +575,7 @@ abstract class Madara( open class Tag(val id: String, name: String) : Filter.CheckBox(name) override fun searchMangaParse(response: Response): MangasPage { - fetchGenres() + runCatching { fetchGenres() } return super.searchMangaParse(response) } @@ -798,7 +810,7 @@ abstract class Madara( // Added "title" alternative chapter.date_upload = select("img:not(.thumb)").firstOrNull()?.attr("alt")?.let { parseRelativeDate(it) } ?: select("span a").firstOrNull()?.attr("title")?.let { parseRelativeDate(it) } - ?: parseChapterDate(select("span.chapter-release-date").firstOrNull()?.text()) + ?: parseChapterDate(select("span.chapter-release-date").firstOrNull()?.text()) } return chapter @@ -968,7 +980,7 @@ abstract class Madara( * Fetch the genres from the source to be used in the filters. */ protected open fun fetchGenres() { - if (fetchGenresCount <= 3 && (genresList.isEmpty() || fetchGenresFailed)) { + if (fetchGenres && fetchGenresAttempts <= 3 && (genresList.isEmpty() || fetchGenresFailed)) { val genres = runCatching { client.newCall(genresRequest()).execute() .use { parseGenres(it.asJsoup()) } @@ -976,7 +988,7 @@ abstract class Madara( fetchGenresFailed = genres.isFailure genresList = genres.getOrNull().orEmpty() - fetchGenresCount++ + fetchGenresAttempts++ } } @@ -984,7 +996,7 @@ abstract class Madara( * The request to the search page (or another one) that have the genres list. */ protected open fun genresRequest(): Request { - return GET("$baseUrl/?s=&post_type=wp-manga", headers) + return GET("$baseUrl/?s=genre&post_type=wp-manga", headers) } /** @@ -1004,16 +1016,6 @@ abstract class Madara( } } - init { - if (fetchGenresOnInit) { - Single - .fromCallable { fetchGenres() } - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe() - } - } - companion object { const val URL_SEARCH_PREFIX = "slug:" } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index c367c8793..1b32a9583 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -10,7 +10,7 @@ class MadaraGenerator : ThemeSourceGenerator { override val themeClass = "Madara" - override val baseVersionCode: Int = 19 + override val baseVersionCode: Int = 20 override val sources = listOf( MultiLang("Leviatan Scans", "https://leviatanscans.com", listOf("en", "es"), className = "LeviatanScansFactory", overrideVersionCode = 9),