From d5bb853103df2ffb24552f6093d07f9884de6d24 Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 22 Nov 2023 02:33:27 +0700 Subject: [PATCH] fixed Gmovies --- .../src/main/kotlin/com/hexated/Extractors.kt | 41 +++++++++++++++++++ .../main/kotlin/com/hexated/SoraExtractor.kt | 16 ++------ .../src/main/kotlin/com/hexated/SoraStream.kt | 1 + .../kotlin/com/hexated/SoraStreamPlugin.kt | 1 + 4 files changed, 46 insertions(+), 13 deletions(-) diff --git a/SoraStream/src/main/kotlin/com/hexated/Extractors.kt b/SoraStream/src/main/kotlin/com/hexated/Extractors.kt index 70dc82f3..917351ca 100644 --- a/SoraStream/src/main/kotlin/com/hexated/Extractors.kt +++ b/SoraStream/src/main/kotlin/com/hexated/Extractors.kt @@ -349,6 +349,47 @@ open class Streamruby : ExtractorApi() { } +open class Uploadever : ExtractorApi() { + override val name = "Uploadever" + override val mainUrl = "https://uploadever.in" + override val requiresReferer = true + + override suspend fun getUrl( + url: String, + referer: String?, + subtitleCallback: (SubtitleFile) -> Unit, + callback: (ExtractorLink) -> Unit + ) { + var res = app.get(url, referer = referer).document + val formUrl = res.select("form").attr("action") + var formData = res.select("form input").associate { it.attr("name") to it.attr("value") }.filterKeys { it != "go" } + .toMutableMap() + val formReq = app.post(formUrl, data = formData) + + res = formReq.document + val captchaKey = res.select("script[src*=https://www.google.com/recaptcha/api.js?render=]").attr("src").substringAfter("render=") + val token = getCaptchaToken(url, captchaKey, referer = "$mainUrl/") + formData = res.select("form#down input").associate { it.attr("name") to it.attr("value") }.toMutableMap() + formData["adblock_detected"] = "0" + formData["referer"] = url + res = app.post(formReq.url, data = formData + mapOf("g-recaptcha-response" to "$token"), cookies = formReq.cookies).document + val video = res.select("div.download-button a.btn.btn-dow.recaptchav2").attr("href") + + callback.invoke( + ExtractorLink( + this.name, + this.name, + video, + "", + Qualities.Unknown.value, + INFER_TYPE + ) + ) + + } + +} + class Streamwish : Filesim() { override val name = "Streamwish" override var mainUrl = "https://streamwish.to" diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index db1c6798..640c5db3 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -1178,6 +1178,7 @@ object SoraExtractor : SoraStream() { year: Int? = null, season: Int? = null, episode: Int? = null, + subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ) { val fixTitle = title.createSlug() @@ -1201,23 +1202,12 @@ object SoraExtractor : SoraStream() { it.select("a").attr("href") to it.text() } })?.filter { - it.first.contains("gdtot") && it.second.contains(Regex("(?i)(4k|1080p)")) + it.second.contains(Regex("(?i)(4k|1080p)")) } ?: return iframe.apmap { (iframeLink, title) -> val size = Regex("(?i)\\s(\\S+gb|mb)").find(title)?.groupValues?.getOrNull(1) - val gdBotLink = extractGdbot(iframeLink) - val videoLink = extractGdflix(gdBotLink ?: return@apmap null) - - callback.invoke( - ExtractorLink( - "GMovies", - "GMovies [$size]", - videoLink ?: return@apmap null, - "", - getGMoviesQuality(title) - ) - ) + loadCustomTagExtractor("[$size]",iframeLink, "$gMoviesAPI/", subtitleCallback, callback, getIndexQuality(title)) } } diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index b1c3879c..104c3b90 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -466,6 +466,7 @@ open class SoraStream : TmdbProvider() { res.year, res.season, res.episode, + subtitleCallback, callback ) }, diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStreamPlugin.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStreamPlugin.kt index 8ca15ddd..d8d2431a 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStreamPlugin.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStreamPlugin.kt @@ -27,5 +27,6 @@ class SoraStreamPlugin: Plugin() { registerExtractorAPI(FilelionsTo()) registerExtractorAPI(Embedwish()) registerExtractorAPI(Wishfast()) + registerExtractorAPI(Uploadever()) } } \ No newline at end of file