From ed3c2f87c6102a7d40c8a19abee02c105d5b2f17 Mon Sep 17 00:00:00 2001 From: hexated Date: Wed, 22 Feb 2023 21:20:48 +0700 Subject: [PATCH] sora: fixed Gmovies [temp] --- .../main/kotlin/com/hexated/SoraExtractor.kt | 4 +++ .../src/main/kotlin/com/hexated/SoraUtils.kt | 35 +++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index 64def63b..075c5538 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -2918,4 +2918,8 @@ data class TgarMedia( data class TgarData( @JsonProperty("results") val results: ArrayList? = arrayListOf(), +) + +data class Gdflix( + @JsonProperty("url") val url: String ) \ No newline at end of file diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt index ef4ef7b1..4d38f60a 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt @@ -249,14 +249,37 @@ suspend fun extractGdflix(url: String): String? { ?.attr("href") ?: return null val base = getBaseUrl(iframeGdflix) - val gdfDoc = app.get(iframeGdflix).document.selectFirst("script:containsData(replace)")?.data() + val req = app.get(iframeGdflix).document.selectFirst("script:containsData(replace)")?.data() ?.substringAfter("replace(\"") ?.substringBefore("\")")?.let { - app.get(fixUrl(it, base)).document - } - val iframeDrivebot2 = gdfDoc?.selectFirst("a.btn.btn-outline-warning")?.attr("href") + app.get(fixUrl(it, base)) + } ?: return null + +// Drivebot dead +// val iframeDrivebot2 = gdfDoc?.selectFirst("a.btn.btn-outline-warning")?.attr("href") +// return getDrivebotLink(iframeDrivebot2) + + val reqUrl = req.url + val ssid = req.cookies["PHPSESSID"] + val script = req.document.selectFirst("script:containsData(formData =)")?.data() + val key = Regex("append\\(\"key\", \"(\\S+?)\"\\);").find(script ?: return null)?.groupValues?.get(1) + + val body = FormBody.Builder() + .addEncoded("action", "direct") + .addEncoded("key", "$key") + .addEncoded("action_token", "cf_token") + .build() + + val gdriveUrl = app.post( + reqUrl, requestBody = body, + cookies = mapOf("PHPSESSID" to "$ssid"), + headers = mapOf( + "x-token" to URI(reqUrl).host + ) + ).parsedSafe()?.url + + return getDirectGdrive(gdriveUrl ?: return null) - return getDrivebotLink(iframeDrivebot2) } suspend fun getDrivebotLink(url: String?): String? { @@ -342,7 +365,7 @@ suspend fun getDirectGdrive(url: String): String { url } else { "https://drive.google.com/uc?id=${ - url.substringAfter("/d/").substringBefore("/") + Regex("(?:\\?id=|/d/)(\\S+)/").find("$url/")?.groupValues?.get(1) }&export=download" }