From 70188290ac5d7aeec91d7352aa92610633b214a1 Mon Sep 17 00:00:00 2001 From: Mioki <22417711+okibcn@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:23:49 -0800 Subject: [PATCH 1/3] Uqload and Vidmoly Fixes --- .../cloudstream3/extractors/Uqload.kt | 41 ++++++++++++++----- .../cloudstream3/utils/ExtractorApi.kt | 8 ++++ 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt index a267c87ee6e..8b8c8894f20 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt @@ -2,6 +2,12 @@ package com.lagradost.cloudstream3.extractors import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.USER_AGENT +import com.lagradost.cloudstream3.newSubtitleFile +import com.lagradost.cloudstream3.utils.* + +// import android.util.Log class Uqload1 : Uqload() { override var mainUrl = "https://uqload.com" @@ -11,27 +17,40 @@ class Uqload2 : Uqload() { override var mainUrl = "https://uqload.co" } +class Uqloadcx : Uqload() { + override var mainUrl = "https://uqload.cx" +} + +class Uqloadbz : Uqload() { + override var mainUrl = "https://uqload.bz" +} + open class Uqload : ExtractorApi() { - override val name: String = "Uqload" - override val mainUrl: String = "https://www.uqload.com" - private val srcRegex = Regex("""sources:.\[(.*?)\]""") // would be possible to use the parse and find src attribute + override var name: String = "Uqload" + override var mainUrl: String = "https://www.uqload.com" override val requiresReferer = true + private val srcRegex = Regex("""sources:.\["(.*?)"\]""") // would be possible to use the parse and find src attribute - override suspend fun getUrl(url: String, referer: String?): List? { + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { with(app.get(url)) { // raised error ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED (3003) is due to the response: "error_nofile" - srcRegex.find(this.text)?.groupValues?.get(1)?.replace("\"", "")?.let { link -> - return listOf( + srcRegex.find(this.text)?.groupValues?.get(1)?.let { link -> + // Log.d("CS3debugUQload","decoded URL: $link") + callback.invoke( newExtractorLink( - name, - name, - link + source = name, + name = name, + url = link ) { - this.referer = url + this.referer = "$mainUrl/" } ) } } - return null } } diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt index bc9eb6df76b..a05479966a7 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -254,6 +254,8 @@ import com.lagradost.cloudstream3.extractors.UpstreamExtractor import com.lagradost.cloudstream3.extractors.Uqload import com.lagradost.cloudstream3.extractors.Uqload1 import com.lagradost.cloudstream3.extractors.Uqload2 +import com.lagradost.cloudstream3.extractors.Uqloadcx +import com.lagradost.cloudstream3.extractors.Uqloadbz import com.lagradost.cloudstream3.extractors.UqloadsXyz import com.lagradost.cloudstream3.extractors.Urochsunloath import com.lagradost.cloudstream3.extractors.Userload @@ -283,6 +285,8 @@ import com.lagradost.cloudstream3.extractors.Vidguardto3 import com.lagradost.cloudstream3.extractors.VidhideExtractor import com.lagradost.cloudstream3.extractors.Vidmoly import com.lagradost.cloudstream3.extractors.Vidmolyme +import com.lagradost.cloudstream3.extractors.Vidmolyto +import com.lagradost.cloudstream3.extractors.Vidmolybiz import com.lagradost.cloudstream3.extractors.Vidnest import com.lagradost.cloudstream3.extractors.Vido import com.lagradost.cloudstream3.extractors.Vidoza @@ -996,6 +1000,8 @@ val extractorApis: MutableList = arrayListOf( Uqload(), Uqload1(), Uqload2(), + Uqloadcx(), + Uqloadbz(), Evoload(), Evoload1(), UpstreamExtractor(), @@ -1129,6 +1135,8 @@ val extractorApis: MutableList = arrayListOf( Streamplay(), Vidmoly(), Vidmolyme(), + Vidmolyto(), + Vidmolybiz(), Voe(), Voe1(), Tubeless(), From 4f9c8aeb6e9884ad69fb5e5e4029a28084ccabef Mon Sep 17 00:00:00 2001 From: Mioki <22417711+okibcn@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:47:05 -0800 Subject: [PATCH 2/3] Updated srcRegex --- .../kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt index 8b8c8894f20..b28144985a1 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt @@ -30,7 +30,7 @@ open class Uqload : ExtractorApi() { override var mainUrl: String = "https://www.uqload.com" override val requiresReferer = true - private val srcRegex = Regex("""sources:.\["(.*?)"\]""") // would be possible to use the parse and find src attribute + private val srcRegex = Regex("""sources:.*"(.*?)".""") // would be possible to use the parse and find src attribute override suspend fun getUrl( url: String, From de3771a7781f8ca28e809bbf6eff831aa405883a Mon Sep 17 00:00:00 2001 From: Mioki <22417711+okibcn@users.noreply.github.com> Date: Tue, 3 Feb 2026 18:41:41 -0800 Subject: [PATCH 3/3] Last improvement to the srcRegex --- .../kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt index b28144985a1..803973ef46c 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Uqload.kt @@ -30,7 +30,7 @@ open class Uqload : ExtractorApi() { override var mainUrl: String = "https://www.uqload.com" override val requiresReferer = true - private val srcRegex = Regex("""sources:.*"(.*?)".""") // would be possible to use the parse and find src attribute + private val srcRegex = Regex("""sources:.*"(.*?)".*""") // would be possible to use the parse and find src attribute override suspend fun getUrl( url: String,