forked from recloudstream/cloudstream
		
	
							parent
							
								
									3fe361586e
								
							
						
					
					
						commit
						46109f5c4c
					
				
					 2 changed files with 37 additions and 49 deletions
				
			
		|  | @ -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<HomePageList>() | ||||
|         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<SearchResponse> { | ||||
|         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 | ||||
|  |  | |||
|  | @ -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<HomePageList>() | ||||
|         val urls = listOf( | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue