package com.lagradost import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.metaproviders.TmdbLink import com.lagradost.cloudstream3.metaproviders.TmdbProvider import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.loadExtractor import kotlinx.coroutines.delay import org.json.JSONArray import org.json.JSONObject class SuperembedProvider : TmdbProvider() { override var mainUrl = "https://seapi.link" override val apiName = "Superembed" override var name = "Superembed" override val instantLinkLoading = true override val useMetaLoadResponse = true override val supportedTypes = setOf(TvType.TvSeries, TvType.Movie) override suspend fun loadLinks( data: String, isCasting: Boolean, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ): Boolean { val mappedData = tryParseJson(data) ?: return false val tmdbId = mappedData?.tmdbID ?: return false val document = app.get( if (mappedData.season == null || mappedData.episode == null) "https://seapi.link/?type=tmdb&id=${tmdbId}&max_results=1" else "https://seapi.link/?type=tmdb&id=${tmdbId}&season=${mappedData.season}&episode=${mappedData.episode}&max_results=1" ).text val response = tryParseJson(document) ?: return false response.results.forEach { it.getIframeContents()?.let { it1 -> loadExtractor(it1, subtitleCallback, callback) } } return true } private data class ApiResponse( val results: List ) private data class ApiResultItem( val server: String, val title: String, val quality: String, val size: Int, val url: String ) { suspend fun getIframeContents(): String? { val document = app.get(url) val regex = "(res) for (i in 1..5) { delay(500L) val document = app.post("https://hf.space/embed/njgroene/age-gender-profilepic/api/queue/status/", json=request).text val status = tryParseJson(document) if (status?.get("status") != "COMPLETE") continue val pred = (((status.get("data") as? JSONObject?) ?.get("data") as? JSONArray?) ?.get(0) as? String?) ?: return null return if ("Male" in pred) Gender.Male else if ("Female" in pred) Gender.Female else null } } private data class HFRequest( val data: List, val action: String = "predict", val fn_index: Int = 0, val session_hash: String = "aaaaaaaaaaa" ) }*/ }