updated streamo

This commit is contained in:
Thorodinson1 2023-07-14 16:50:28 +05:30
parent c41cc4799e
commit a35b48a940

View file

@ -6,6 +6,9 @@ import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
import com.lagradost.cloudstream3.utils.ExtractorApi import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.M3u8Helper import com.lagradost.cloudstream3.utils.M3u8Helper
import java.util.regex.Matcher
import java.util.regex.Pattern
import org.jsoup.select.Elements
class StreamoUpload1 : StreamoUpload() { class StreamoUpload1 : StreamoUpload() {
override val mainUrl = "https://streamoupload.xyz" override val mainUrl = "https://streamoupload.xyz"
@ -18,25 +21,30 @@ open class StreamoUpload : ExtractorApi() {
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink> { override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink> {
val sources = mutableListOf<ExtractorLink>() val sources = mutableListOf<ExtractorLink>()
app.get(url, referer = referer).document.select("script").map { script -> val response = app.get(url, referer = referer)
val scriptElements: Elements = response.document.select("script")
val scriptPattern: Pattern = Pattern.compile("jwplayer\\(\"vplayer\"\\).setup\\((.*?)\\);", Pattern.DOTALL)
val filePattern: Pattern = Pattern.compile("\"file\"\\s*:\\s*\"(.*?)\"")
for (script in scriptElements) {
if (script.data().contains("jwplayer(\"vplayer\").setup(")) { if (script.data().contains("jwplayer(\"vplayer\").setup(")) {
val data = script.data().substringAfter("sources: [") val dataMatcher: Matcher = scriptPattern.matcher(script.data())
.substringBefore("],").replace("file", "\"file\"").trim() if (dataMatcher.find()) {
tryParseJson<File>(data)?.let { val data = dataMatcher.group(1)
M3u8Helper.generateM3u8( val fileMatcher: Matcher = filePattern.matcher(data)
name,
it.file, while (fileMatcher.find()) {
"$mainUrl/", val fileUrl = fileMatcher.group(1)
).forEach { m3uData -> sources.add(m3uData) } sources.add(ExtractorLink(fileUrl))
}
} }
} }
} }
return sources return sources
} }
private data class File( private data class File(
@JsonProperty("file") val file: String, @JsonProperty("file") val file: String,
) )
}
}