From 52d3c5068af3ab3ce262beeed6c40dc401f0a1a7 Mon Sep 17 00:00:00 2001 From: Mater Yoda <95184073+Thorodinson1@users.noreply.github.com> Date: Wed, 12 Jul 2023 20:36:35 +0530 Subject: [PATCH] Update StreamoUpload.kt --- .../cloudstream3/extractors/StreamoUpload.kt | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt index fb43141d..83d2dfa8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamoUpload.kt @@ -1,11 +1,11 @@ -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.M3u8Helper +import java.util.regex.Matcher +import java.util.regex.Pattern class StreamoUpload1 : StreamoUpload() { override val mainUrl = "https://streamoupload.xyz" @@ -18,25 +18,27 @@ open class StreamoUpload : ExtractorApi() { override suspend fun getUrl(url: String, referer: String?): List { val sources = mutableListOf() - app.get(url, referer = referer).document.select("script").map { script -> - if (script.data().contains("jwplayer(\"vplayer\").setup(")) { - val data = script.data().substringAfter("sources: [") - .substringBefore("],").replace("file", "\"file\"").trim() - tryParseJson(data)?.let { - M3u8Helper.generateM3u8( - name, - it.file, - "$mainUrl/", - ).forEach { m3uData -> sources.add(m3uData) } - } + val response = app.get(url, referer = referer) + val scriptPattern: Pattern = Pattern.compile("jwplayer\\(\"vplayer\"\\)\\.setup\\((.*?)\\);", Pattern.DOTALL) + val filePattern: Pattern = Pattern.compile("\"file\"\\s*:\\s*\"(.*?)\"") + + val scriptMatcher: Matcher = scriptPattern.matcher(response.body) + + while (scriptMatcher.find()) { + val scriptData = scriptMatcher.group(1) + val fileMatcher: Matcher = filePattern.matcher(scriptData) + + while (fileMatcher.find()) { + val fileUrl = fileMatcher.group(1) + val videoUrl = "$mainUrl$fileUrl" + sources.add(ExtractorLink(videoUrl)) } } + return sources } private data class File( @JsonProperty("file") val file: String, ) - - }