From 9b326d583cf1bcbdea8b66043300b11bd1d487fa Mon Sep 17 00:00:00 2001 From: V3u47ZoN Date: Sat, 3 May 2025 13:35:23 +0000 Subject: [PATCH] dont standardize qualities for everything --- .../tachiyomi/lib/playlistutils/PlaylistUtils.kt | 10 +--------- .../lib/universalextractor/UniversalExtractor.kt | 12 ++++++++++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt b/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt index 2bf6f1de..a84b7fae 100644 --- a/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt +++ b/lib/playlist-utils/src/main/java/eu/kanade/tachiyomi/lib/playlistutils/PlaylistUtils.kt @@ -10,7 +10,6 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.internal.commonEmptyHeaders import java.io.File -import kotlin.math.abs class PlaylistUtils(private val client: OkHttpClient, private val headers: Headers = commonEmptyHeaders) { @@ -138,7 +137,7 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade val resolution = it.substringAfter("RESOLUTION=") .substringBefore("\n") .substringAfter("x") - .substringBefore(",").let(::stnQuality) + .substringBefore(",") val videoUrl = it.substringAfter("\n").substringBefore("\n").let { url -> getAbsoluteUrl(url, playlistUrl, masterUrlBasePath)?.trimEnd() @@ -337,13 +336,6 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade // ============================= Utilities ============================== - private fun stnQuality(quality: String): String { - val intQuality = quality.trim().toInt() - val standardQualities = listOf(144, 240, 360, 480, 720, 1080) - val result = standardQualities.minByOrNull { abs(it - intQuality) } ?: quality - return "${result}p" - } - private fun cleanSubtitleData(matchResult: MatchResult): String { val lineCount = matchResult.groupValues[1].count { it == '\n' } return "\n" + " \n".repeat(lineCount - 1) diff --git a/lib/universal-extractor/src/main/java/eu/kanade/tachiyomi/lib/universalextractor/UniversalExtractor.kt b/lib/universal-extractor/src/main/java/eu/kanade/tachiyomi/lib/universalextractor/UniversalExtractor.kt index 16408cec..95c38dc3 100644 --- a/lib/universal-extractor/src/main/java/eu/kanade/tachiyomi/lib/universalextractor/UniversalExtractor.kt +++ b/lib/universal-extractor/src/main/java/eu/kanade/tachiyomi/lib/universalextractor/UniversalExtractor.kt @@ -18,6 +18,7 @@ import uy.kohesive.injekt.injectLazy import java.util.Locale import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit +import kotlin.math.abs class UniversalExtractor(private val client: OkHttpClient) { private val context: Application by injectLazy() @@ -73,7 +74,7 @@ class UniversalExtractor(private val client: OkHttpClient) { for (quality in qualities) { val modifiedUrl = resultUrl.replace("M3U8_AUTO_360", "M3U8_AUTO_$quality") - val videos = playlistUtils.extractFromHls(modifiedUrl, origRequestUrl, videoNameGen = { "$prefix - $host: $it $quality" + "p" }) + val videos = playlistUtils.extractFromHls(modifiedUrl, origRequestUrl, videoNameGen = { "$prefix - $host: ${stnQuality(it)} $quality" + "p" }) if (videos.isNotEmpty()) { allVideos.addAll(videos) @@ -89,7 +90,7 @@ class UniversalExtractor(private val client: OkHttpClient) { return when { "m3u8" in resultUrl -> { Log.d("UniversalExtractor", "m3u8 URL: $resultUrl") - playlistUtils.extractFromHls(resultUrl, origRequestUrl, videoNameGen = { "$prefix - $host: $it" }) + playlistUtils.extractFromHls(resultUrl, origRequestUrl, videoNameGen = { "$prefix - $host: ${stnQuality(it)}" }) } "mpd" in resultUrl -> { Log.d("UniversalExtractor", "mpd URL: $resultUrl") @@ -103,6 +104,13 @@ class UniversalExtractor(private val client: OkHttpClient) { } } + private fun stnQuality(quality: String): String { + val intQuality = quality.trim().toInt() + val standardQualities = listOf(144, 240, 360, 480, 720, 1080) + val result = standardQualities.minByOrNull { abs(it - intQuality) } ?: quality + return "${result}p" + } + private fun String.proper(): String { return this.replaceFirstChar { if (it.isLowerCase()) it.titlecase( Locale.getDefault()) else it.toString() }