From c6f89db48a9d8e509dba8b9449a5a39b146a4d4b Mon Sep 17 00:00:00 2001 From: hexated Date: Mon, 11 Sep 2023 18:34:11 +0700 Subject: [PATCH] fix #263 --- SoraStream/build.gradle.kts | 2 +- .../src/main/kotlin/com/hexated/SoraExtractor.kt | 2 ++ SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/SoraStream/build.gradle.kts b/SoraStream/build.gradle.kts index 129c982d..82fa01b5 100644 --- a/SoraStream/build.gradle.kts +++ b/SoraStream/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.konan.properties.Properties // use an integer for version numbers -version = 166 +version = 167 android { defaultConfig { diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index 5b80bdfd..5f6e72f0 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -1100,7 +1100,9 @@ object SoraExtractor : SoraStream() { val driveReq = app.get(driveLink) val driveRes = driveReq.document val bitLink = driveRes.select("a.btn.btn-outline-success").attr("href") + val insLink = driveRes.select("a.btn.btn-danger:contains(Instant Download)").attr("href") val downloadLink = when { + insLink.isNotEmpty() -> extractInstantUHD(insLink) driveRes.select("button.btn.btn-success").text() .contains("Direct Download", true) -> extractDirectUHD(driveLink, driveReq) bitLink.isNullOrEmpty() -> { diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt index 09f6f822..5895b637 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt @@ -163,6 +163,18 @@ suspend fun extractMirrorUHD(url: String, ref: String): String? { ) } +suspend fun extractInstantUHD(url: String): String? { + val host = getBaseUrl(url) + val body = FormBody.Builder() + .addEncoded("keys", url.substringAfter("url=")) + .build() + return app.post( + "$host/api", requestBody = body, headers = mapOf( + "x-token" to "${url.toUri().host}" + ), referer = "$host/" + ).parsedSafe>()?.get("url") +} + suspend fun extractDirectUHD(url: String, niceResponse: NiceResponse): String? { val document = niceResponse.document val script = document.selectFirst("script:containsData(cf_token)")?.data() ?: return null