From fcdccf91554168126024a67a1ef86d6d0ef5b353 Mon Sep 17 00:00:00 2001 From: hexated Date: Thu, 2 Feb 2023 12:17:58 +0700 Subject: [PATCH] [Sora] filter low quality from index site --- SoraStream/build.gradle.kts | 2 +- .../src/main/kotlin/com/hexated/SoraExtractor.kt | 2 ++ SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/SoraStream/build.gradle.kts b/SoraStream/build.gradle.kts index 812009e9..07add4ff 100644 --- a/SoraStream/build.gradle.kts +++ b/SoraStream/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 81 +version = 82 cloudstream { diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index 413d6b4d..555d5b8c 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -2102,6 +2102,7 @@ object SoraExtractor : SoraStream() { val worker = getConfig().workers.randomOrNull() ?: return@apmap null val link = "https://api.$worker.workers.dev/download.aspx?file=$encryptedId&expiry=$encryptedExpiry&mac=$hmacSign" + if(!app.get(link).isSuccessful) return@apmap null val size = file.size?.toDouble() ?: return@apmap null val sizeFile = "%.2f GB".format(bytesToGigaBytes(size)) val tags = Regex("\\d{3,4}[pP]\\.?(.*?)\\.(mkv|mp4)").find( @@ -2228,6 +2229,7 @@ object SoraExtractor : SoraStream() { }).text.let { fixUrl(it, apiUrl) }.encodeUrl() + if(!app.get(path).isSuccessful) return@apmap null val size = file.size?.toDouble() ?: return@apmap null val sizeFile = "%.2f GB".format(bytesToGigaBytes(size)) val quality = diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt index e33bfa1c..77de8efa 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraUtils.kt @@ -642,7 +642,7 @@ fun searchIndex( "video/mp4", "video/x-msvideo" ) - return tryParseJson(response)?.data?.files?.filter { media -> + val files = tryParseJson(response)?.data?.files?.filter { media -> (if (season == null) { media.name?.contains("$year") == true } else { @@ -659,7 +659,14 @@ fun searchIndex( "-", " " ).contains("$spaceSlug", true)) - }?.distinctBy { it.name } + }?.distinctBy { it.name }?.sortedByDescending { it.size?.toLongOrNull() ?: 0 } ?: return null + + return files.let { file -> + listOfNotNull( + file.find { it.name?.contains("2160p", true) == true }, + file.find { it.name?.contains("1080p", true) == true } + ) + } } suspend fun getConfig(): BaymoviesConfig {