diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt index 2ec185e0..d76b0e11 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt @@ -21,7 +21,10 @@ open class Gofile : ExtractorApi() { ) { val id = Regex("/(?:\\?c=|d/)([\\da-zA-Z]+)").find(url)?.groupValues?.get(1) val token = app.get("$mainApi/createAccount").parsedSafe()?.data?.get("token") - app.get("$mainApi/getContent?contentId=$id&token=$token&websiteToken=12345") + val websiteToken = app.get("$mainUrl/dist/js/alljs.js").text.let { + Regex("websiteToken\\s*=\\s*\"([^\"]+)").find(it)?.groupValues?.get(1) + } + app.get("$mainApi/getContent?contentId=$id&token=$token&websiteToken=$websiteToken") .parsedSafe()?.data?.contents?.forEach { callback.invoke( ExtractorLink( diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Userscloud.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Userscloud.kt new file mode 100644 index 00000000..e8bd6c57 --- /dev/null +++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Userscloud.kt @@ -0,0 +1,45 @@ +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 + +open class Userscloud : ExtractorApi() { + override val name = "Userscloud" + override val mainUrl = "https://userscloud.com" + override val requiresReferer = false + + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { + val res = app.get(url).document + val video = res.selectFirst("video#vjsplayer source")?.attr("src") + val quality = res.selectFirst("div.innerTB h2 b")?.text() + callback.invoke( + ExtractorLink( + this.name, + this.name, + video ?: return, + "$mainUrl/", + getQuality(quality), + headers = mapOf( + "Accept" to "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5", + "Range" to "bytes=0-", + "Sec-Fetch-Dest" to "video", + "Sec-Fetch-Mode" to "no-cors", + ) + ) + ) + } + + private fun getQuality(str: String?): Int { + return Regex("(\\d{3,4})[pP]").find(str ?: "")?.groupValues?.getOrNull(1)?.toIntOrNull() + ?: Qualities.Unknown.value + } + +} \ 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 6a5a665a..ed190bcc 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -370,6 +370,7 @@ val extractorApis: MutableList = arrayListOf( Gofile(), Vicloud(), Uservideo(), + Userscloud(), Movhide(), StreamhideCom(),