From 46109f5c4c73d4eadbc63579d85e7c16706d2f8e Mon Sep 17 00:00:00 2001 From: Stormunblessed <86633626+Stormunblessed@users.noreply.github.com> Date: Sun, 30 Jan 2022 18:25:38 +0000 Subject: [PATCH] Fixes on providers (#535) * Fixes on providers * small fix * fixes --- .../movieproviders/CinecalidadProvider.kt | 84 ++++++++----------- .../movieproviders/PeliSmartProvider.kt | 2 + 2 files changed, 37 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CinecalidadProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CinecalidadProvider.kt index 239271a1..f5c5d970 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CinecalidadProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CinecalidadProvider.kt @@ -1,13 +1,17 @@ package com.lagradost.cloudstream3.movieproviders import com.lagradost.cloudstream3.* -import com.lagradost.cloudstream3.utils.ExtractorLink -import com.lagradost.cloudstream3.utils.extractorApis +import com.lagradost.cloudstream3.extractors.Evoload +import com.lagradost.cloudstream3.extractors.FEmbed +import com.lagradost.cloudstream3.extractors.StreamTape +import com.lagradost.cloudstream3.utils.* import java.util.* -class CinecalidadProvider : MainAPI() { - override val mainUrl = "https://cinecalidad.lol" - override val name = "Cinecalidad" +class CinecalidadProvider:MainAPI() { + override val mainUrl: String + get() = "https://cinecalidad.lol" + override val name: String + get() = "Cinecalidad" override val lang = "es" override val hasMainPage = true override val hasChromecastSupport = true @@ -16,31 +20,16 @@ class CinecalidadProvider : MainAPI() { TvType.Movie, TvType.TvSeries, ) + override val vpnStatus = VPNStatus.MightBeNeeded //Due to evoload sometimes not loading override suspend fun getMainPage(): HomePageResponse { val items = ArrayList() val urls = listOf( + Pair("$mainUrl/ver-serie/", "Series"), Pair("$mainUrl/", "Peliculas"), Pair("$mainUrl/genero-de-la-pelicula/peliculas-en-calidad-4k/", "4K UHD"), ) - items.add( - HomePageList( - "Series", - app.get("$mainUrl/ver-serie/").document.select(".item.tvshows").map { - val title = it.selectFirst("div.in_title").text() - TvSeriesSearchResponse( - title, - it.selectFirst("a").attr("href"), - this.name, - TvType.TvSeries, - it.selectFirst(".poster.custom img").attr("data-src"), - null, - null, - ) - }) - ) - for (i in urls) { try { val soup = app.get(i.first).document @@ -69,7 +58,7 @@ class CinecalidadProvider : MainAPI() { } override suspend fun search(query: String): List { - val url = "$mainUrl/buscar/?s=${query}" + val url = "$mainUrl/?s=${query}" val document = app.get(url).document return document.select("article").map { @@ -106,13 +95,12 @@ class CinecalidadProvider : MainAPI() { val soup = app.get(url, timeout = 120).document val title = soup.selectFirst(".single_left h1").text() - val description = - soup.selectFirst(".single_left > table:nth-child(3) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > p") - ?.text()?.trim() + val description = soup.selectFirst("div.single_left table tbody tr td p")?.text()?.trim() val poster: String? = soup.selectFirst(".alignnone").attr("data-src") val episodes = soup.select("div.se-c div.se-a ul.episodios li").map { li -> val href = li.selectFirst("a").attr("href") - val epThumb = li.selectFirst("div.imagen img").attr("data-src") + val epThumb = li.selectFirst("div.imagen img").attr("data-src") ?: li.selectFirst("div.imagen img").attr("src") + val name = li.selectFirst(".episodiotitle a").text() TvSeriesEpisode( name, @@ -122,8 +110,7 @@ class CinecalidadProvider : MainAPI() { epThumb ) } - return when (val tvType = - if (url.contains("/ver-pelicula/")) TvType.Movie else TvType.TvSeries) { + return when (val tvType = if (url.contains("/ver-pelicula/")) TvType.Movie else TvType.TvSeries) { TvType.TvSeries -> { TvSeriesLoadResponse( title, @@ -152,33 +139,32 @@ class CinecalidadProvider : MainAPI() { } } - override suspend fun loadLinks( data: String, isCasting: Boolean, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ): Boolean { - app.get(data).document.select(".ajax_mode .dooplay_player_option").forEach { - val movieID = it.attr("data-post") - val serverID = it.attr("data-nume") - val url = "$mainUrl/wp-json/dooplayer/v2/$movieID/movie/$serverID" - val urlserver = app.get(url).text - val serverRegex = Regex("(https:.*?\\\")") - val videos = serverRegex.findAll(urlserver).map { - it.value.replace("\\/", "/").replace("\"", "") - }.toList() - val serversRegex = - Regex("(https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&\\/\\/=]*))") - val links = serversRegex.findAll(videos.toString()).map { it.value }.toList() - for (link in links) { - for (extractor in extractorApis) { - if (link.startsWith(extractor.mainUrl)) { - extractor.getSafeUrl(link, data)?.forEach { - callback(it) - } - } + app.get(data).document.select(".dooplay_player_option").apmap { + val url = it.attr("data-option") + if (url.startsWith("https://evoload.io")) { + val extractor = Evoload() + extractor.getSafeUrl(url)?.forEach { link -> + callback.invoke(link) } + } else { + loadExtractor(url, mainUrl, callback) + } + } + if ((app.get(data).text.contains("en castellano"))) app.get("$data?ref=es").document.select(".dooplay_player_option").apmap { + val url = it.attr("data-option") + if (url.startsWith("https://evoload.io")) { + val extractor = Evoload() + extractor.getSafeUrl(url)?.forEach { link -> + callback.invoke(link) + } + } else { + loadExtractor(url, mainUrl, callback) } } return true diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/PeliSmartProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/PeliSmartProvider.kt index 2c327303..67fdf590 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/PeliSmartProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/PeliSmartProvider.kt @@ -16,6 +16,8 @@ class PeliSmartProvider: MainAPI() { TvType.Movie, TvType.TvSeries, ) + override val vpnStatus = VPNStatus.MightBeNeeded //Due to evoload sometimes not loading + override suspend fun getMainPage(): HomePageResponse { val items = ArrayList() val urls = listOf(