From df1d5446a08f7b7e99a8ca571f9ae15e315ece81 Mon Sep 17 00:00:00 2001 From: coxju Date: Sat, 20 Jan 2024 10:33:38 +0530 Subject: [PATCH] feat: added xtreamestream extractor --- .../cloudstream3/extractors/Xtremestream.kt | 39 +++++++++++++++++++ .../cloudstream3/utils/ExtractorApi.kt | 4 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/lagradost/cloudstream3/extractors/Xtremestream.kt diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Xtremestream.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Xtremestream.kt new file mode 100644 index 00000000..c76658e4 --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Xtremestream.kt @@ -0,0 +1,39 @@ +package com.lagradost.cloudstream3.extractors + +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.M3u8Helper + +open class Xtremestream : ExtractorApi() { + override var name = "Xtremestream" + override var mainUrl = "xtremestream.co" + override val requiresReferer = false + + override suspend fun getUrl(url: String, referer: String?): List? { + val response = app.get( + url, referer = "https://${url.substringAfter("//").substringBefore("/")}/", + ) + val playerScript = + response.document.selectXpath("//script[contains(text(),'var video_id')]") + .html() + + val sources = mutableListOf() + if (playerScript.isNotBlank()) { + val videoId = playerScript.substringAfter("var video_id = `").substringBefore("`;") + val m3u8LoaderUrl = + playerScript.substringAfter("var m3u8_loader_url = `").substringBefore("`;") + + if (videoId.isNotBlank() && m3u8LoaderUrl.isNotBlank()) { + M3u8Helper.generateM3u8( + name, + "$m3u8LoaderUrl/$videoId", + "$m3u8LoaderUrl/$videoId" + ).forEach { link -> + sources.add(link) + } + } + } + return sources + } +} \ No newline at end of file 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 f47e4ccc..ec186f21 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -204,6 +204,7 @@ import com.lagradost.cloudstream3.extractors.Watchx import com.lagradost.cloudstream3.extractors.WcoStream import com.lagradost.cloudstream3.extractors.Wibufile import com.lagradost.cloudstream3.extractors.XStreamCdn +import com.lagradost.cloudstream3.extractors.Xtremestream import com.lagradost.cloudstream3.extractors.YourUpload import com.lagradost.cloudstream3.extractors.YoutubeExtractor import com.lagradost.cloudstream3.extractors.YoutubeMobileExtractor @@ -858,7 +859,8 @@ val extractorApis: MutableList = arrayListOf( Megacloud(), VidhideExtractor(), StreamWishExtractor(), - EmturbovidExtractor() + EmturbovidExtractor(), + Xtremestream() )