From 847957362f498c7801ff3d92c4e2a914d3202a11 Mon Sep 17 00:00:00 2001 From: Sofie <117321707+Sofie99@users.noreply.github.com> Date: Mon, 10 Jul 2023 06:52:03 +0700 Subject: [PATCH] Extractor: added Pixeldrain, Wibufile and fix some extractors (#502) Co-authored-by: Sofie99 --- .../cloudstream3/extractors/DoodExtractor.kt | 4 ++ .../cloudstream3/extractors/Filesim.kt | 19 +++++++++- .../cloudstream3/extractors/Pixeldrain.kt | 30 +++++++++++++++ .../cloudstream3/extractors/StreamSB.kt | 25 +++++++++++++ .../cloudstream3/extractors/Wibufile.kt | 37 +++++++++++++++++++ .../cloudstream3/utils/ExtractorApi.kt | 11 ++++++ 6 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/lagradost/cloudstream3/extractors/Pixeldrain.kt create mode 100644 app/src/main/java/com/lagradost/cloudstream3/extractors/Wibufile.kt diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/DoodExtractor.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/DoodExtractor.kt index 24495a40..8dcfb859 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/DoodExtractor.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/DoodExtractor.kt @@ -7,6 +7,10 @@ import com.lagradost.cloudstream3.utils.Qualities import com.lagradost.cloudstream3.utils.getQualityFromName import kotlinx.coroutines.delay +class Dooood : DoodLaExtractor() { + override var mainUrl = "https://dooood.com" +} + class DoodWfExtractor : DoodLaExtractor() { override var mainUrl = "https://dood.wf" } diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt index 4c1791a8..be0efd0c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt @@ -5,6 +5,16 @@ import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8 +class Guccihide : Filesim() { + override val name = "Guccihide" + override var mainUrl = "https://guccihide.com" +} + +class Ahvsh : Filesim() { + override val name = "Ahvsh" + override var mainUrl = "https://ahvsh.com" +} + class Moviesm4u : Filesim() { override val mainUrl = "https://moviesm4u.com" override val name = "Moviesm4u" @@ -15,6 +25,11 @@ class FileMoonIn : Filesim() { override val name = "FileMoon" } +class StreamhideTo : Filesim() { + override val mainUrl = "https://streamhide.to" + override val name = "Streamhide" +} + class StreamhideCom : Filesim() { override var name: String = "Streamhide" override var mainUrl: String = "https://streamhide.com" @@ -42,7 +57,7 @@ class FileMoonSx : Filesim() { open class Filesim : ExtractorApi() { override val name = "Filesim" override val mainUrl = "https://files.im" - override val requiresReferer = false + override val requiresReferer = true override suspend fun getUrl( url: String, @@ -50,7 +65,7 @@ open class Filesim : ExtractorApi() { subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ) { - val response = app.get(url, referer = mainUrl).document + val response = app.get(url, referer = referer).document response.select("script[type=text/javascript]").map { script -> if (script.data().contains(Regex("eval\\(function\\(p,a,c,k,e,[rd]"))) { val unpackedscript = getAndUnpack(script.data()) diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Pixeldrain.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Pixeldrain.kt new file mode 100644 index 00000000..9b481240 --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Pixeldrain.kt @@ -0,0 +1,30 @@ +package com.lagradost.cloudstream3.extractors + +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.Qualities + +open class Pixeldrain : ExtractorApi() { + override val name = "Pixeldrain" + override val mainUrl = "https://pixeldrain.com" + override val requiresReferer = false + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { + val mId = Regex("/([ul]/[\\da-zA-Z\\-]+)").find(url)?.groupValues?.get(1)?.split("/") + callback.invoke( + ExtractorLink( + this.name, + this.name, + "$mainUrl/api/file/${mId?.last() ?: return}?download", + url, + Qualities.Unknown.value, + ) + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt index 3d2a81b7..df050cf3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt @@ -8,6 +8,31 @@ import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.M3u8Helper import kotlin.random.Random +class Sblona : StreamSB() { + override var name = "Sblona" + override var mainUrl = "https://sblona.com" +} + +class Lvturbo : StreamSB() { + override var name = "Lvturbo" + override var mainUrl = "https://lvturbo.com" +} + +class Sbrapid : StreamSB() { + override var name = "Sbrapid" + override var mainUrl = "https://sbrapid.com" +} + +class Sbface : StreamSB() { + override var name = "Sbface" + override var mainUrl = "https://sbface.com" +} + +class Sbsonic : StreamSB() { + override var name = "Sbsonic" + override var mainUrl = "https://sbsonic.com" +} + class Vidgomunimesb : StreamSB() { override var mainUrl = "https://vidgomunimesb.xyz" } diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Wibufile.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Wibufile.kt new file mode 100644 index 00000000..ae1e872a --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Wibufile.kt @@ -0,0 +1,37 @@ +package com.lagradost.cloudstream3.extractors + +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.utils.ExtractorApi +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.Qualities +import java.net.URI + +open class Wibufile : ExtractorApi() { + override val name: String = "Wibufile" + override val mainUrl: String = "https://wibufile.com" + override val requiresReferer = false + + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { + val res = app.get(url).text + val video = Regex("src: ['\"](.*?)['\"]").find(res)?.groupValues?.get(1) + + callback.invoke( + ExtractorLink( + name, + name, + video ?: return, + "$mainUrl/", + Qualities.Unknown.value, + URI(url).path.endsWith(".m3u8") + ) + ) + + } + +} \ 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 f6373dce..f0c1ea3b 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -244,6 +244,7 @@ val extractorApis: MutableList = arrayListOf( XStreamCdn(), StreamSB(), + Sblona(), Vidgomunimesb(), StreamSB1(), StreamSB2(), @@ -265,6 +266,10 @@ val extractorApis: MutableList = arrayListOf( Sbflix(), Streamsss(), Sbspeed(), + Sbsonic(), + Sbface(), + Sbrapid(), + Lvturbo(), Fastream(), @@ -300,6 +305,7 @@ val extractorApis: MutableList = arrayListOf( DoodToExtractor(), DoodSoExtractor(), DoodLaExtractor(), + Dooood(), DoodWsExtractor(), DoodShExtractor(), DoodWatchExtractor(), @@ -366,9 +372,14 @@ val extractorApis: MutableList = arrayListOf( Movhide(), StreamhideCom(), + StreamhideTo(), + Pixeldrain(), + Wibufile(), FileMoonIn(), Moviesm4u(), Filesim(), + Ahvsh(), + Guccihide(), FileMoon(), FileMoonSx(), Vido(),