diff --git a/multisrc/overrides/dooplay/cinevision/src/CineVision.kt b/multisrc/overrides/dooplay/cinevision/src/CineVision.kt index ab297d188..3f1df75fd 100644 --- a/multisrc/overrides/dooplay/cinevision/src/CineVision.kt +++ b/multisrc/overrides/dooplay/cinevision/src/CineVision.kt @@ -13,7 +13,7 @@ import uy.kohesive.injekt.api.get class CineVision : DooPlay( "pt-BR", "CineVision", - "https://cinevisionv6.net", + "https://cinevision.vc", ) { // ============================== Popular =============================== override fun popularAnimeSelector(): String = "article.w_item_b > a" diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/dooplay/DooPlay.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/dooplay/DooPlay.kt index a619c1bfa..e734fee68 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/dooplay/DooPlay.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/dooplay/DooPlay.kt @@ -199,10 +199,16 @@ abstract class DooPlay( override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { return when { query.isBlank() -> { - val genreUri = filters.asUriPart() - var url = "$baseUrl/$genreUri" - if (page > 1) url += "/page/$page" - GET(url, headers) + filters + .firstOrNull { it.state != 0 } + ?.let { + val filter = it as UriPartFilter + val filterUrl = buildString { + append("$baseUrl/${filter.toUriPart()}") + if (page > 1) append("/page/$page") + } + GET(filterUrl, headers) + } ?: popularAnimeRequest(page) } else -> GET("$baseUrl/page/$page/?s=$query", headers) } @@ -318,13 +324,13 @@ abstract class DooPlay( /** * Automatically fetched genres from the source to be used in the filters. */ - protected open lateinit var genresListFilter: AnimeFilter<*> + protected open lateinit var genresArray: FilterItems override fun getFilterList(): AnimeFilterList { - return if (this::genresListFilter.isInitialized) { + return if (this::genresArray.isInitialized) { AnimeFilterList( AnimeFilter.Header(genreFilterHeader), - genresListFilter, + FetchedGenresFilter(genresListMessage, genresArray), ) } else if (fetchGenres) { AnimeFilterList(AnimeFilter.Header(genresMissingWarning)) @@ -337,15 +343,17 @@ abstract class DooPlay( * Fetch the genres from the source to be used in the filters. */ protected open fun fetchGenresList() { - if (!this::genresListFilter.isInitialized && fetchGenres) { + if (!this::genresArray.isInitialized && fetchGenres) { runCatching { - val filter = client.newCall(genresListRequest()) + client.newCall(genresListRequest()) .execute() .asJsoup() .let(::genresListParse) - if ((filter as AnimeFilter.Select<*>).values.size > 0) { - genresListFilter = filter - } + .let { items -> + if (items.isNotEmpty()) { + genresArray = items + } + } }.onFailure { it.printStackTrace() } } } @@ -358,13 +366,23 @@ abstract class DooPlay( /** * Get the genres from the document. */ - protected open fun genresListParse(document: Document): AnimeFilter<*> { + protected open fun genresListParse(document: Document): FilterItems { val items = document.select(genresListSelector()).map { val name = it.text() val value = it.attr("href").substringAfter("$baseUrl/") Pair(name, value) }.toTypedArray() - return UriPartFilter(genresListMessage, items) + + return if (items.isEmpty()) { + items + } else { + arrayOf(Pair(selectFilterText, "")) + items + } + } + + protected open val selectFilterText = when (lang) { + "pt-BR" -> "" + else -> "