diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt new file mode 100644 index 00000000..7fafe05b --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt @@ -0,0 +1,42 @@ +package com.lagradost.cloudstream3.extractors + +import com.fasterxml.jackson.annotation.JsonProperty +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.getAndUnpack +import com.lagradost.cloudstream3.utils.Qualities +import com.lagradost.cloudstream3.utils.M3u8Helper + +open class StreamoUpload : ExtractorApi() { + override val name = "StreamoUpload" + override val mainUrl = "https://streamoupload.xyz" + override val requiresReferer = true + + override suspend fun getUrl(url: String, referer: String?): List { + val sources = mutableListOf() + val response = app.get(url, referer = referer) + val scriptElements = response.document.select("script").map { script -> + if (script.data().contains("eval(function(p,a,c,k,e,d)")) { + val data = getAndUnpack(script.data()) + .substringAfter("sources:[") + .substringBefore("],") + .replace("file", "\"file\"") + .trim() + tryParseJson(data)?.let { + M3u8Helper.generateM3u8( + name, + it.file, + "$mainUrl/", + ).forEach { m3uData -> sources.add(m3uData) } + } + } + } + return sources + } + + private data class File( + @JsonProperty("file") val file: String, + ) +} diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt index f6f76fe7..6a5a665a 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -399,6 +399,7 @@ val extractorApis: MutableList = arrayListOf( Moviehab(), MoviehabNet(), Jeniusplay(), + StreamoUpload(), Gdriveplayerapi(), Gdriveplayerapp(), @@ -548,4 +549,4 @@ abstract class ExtractorApi { open fun getExtractorUrl(id: String): String { return id } -} +} \ No newline at end of file