dont standardize qualities for everything
This commit is contained in:
parent
dd28b05f01
commit
9b326d583c
2 changed files with 11 additions and 11 deletions
|
@ -10,7 +10,6 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.internal.commonEmptyHeaders
|
import okhttp3.internal.commonEmptyHeaders
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.math.abs
|
|
||||||
|
|
||||||
class PlaylistUtils(private val client: OkHttpClient, private val headers: Headers = commonEmptyHeaders) {
|
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=")
|
val resolution = it.substringAfter("RESOLUTION=")
|
||||||
.substringBefore("\n")
|
.substringBefore("\n")
|
||||||
.substringAfter("x")
|
.substringAfter("x")
|
||||||
.substringBefore(",").let(::stnQuality)
|
.substringBefore(",")
|
||||||
|
|
||||||
val videoUrl = it.substringAfter("\n").substringBefore("\n").let { url ->
|
val videoUrl = it.substringAfter("\n").substringBefore("\n").let { url ->
|
||||||
getAbsoluteUrl(url, playlistUrl, masterUrlBasePath)?.trimEnd()
|
getAbsoluteUrl(url, playlistUrl, masterUrlBasePath)?.trimEnd()
|
||||||
|
@ -337,13 +336,6 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
|
||||||
|
|
||||||
// ============================= Utilities ==============================
|
// ============================= 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 {
|
private fun cleanSubtitleData(matchResult: MatchResult): String {
|
||||||
val lineCount = matchResult.groupValues[1].count { it == '\n' }
|
val lineCount = matchResult.groupValues[1].count { it == '\n' }
|
||||||
return "\n" + " \n".repeat(lineCount - 1)
|
return "\n" + " \n".repeat(lineCount - 1)
|
||||||
|
|
|
@ -18,6 +18,7 @@ import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
import kotlin.math.abs
|
||||||
|
|
||||||
class UniversalExtractor(private val client: OkHttpClient) {
|
class UniversalExtractor(private val client: OkHttpClient) {
|
||||||
private val context: Application by injectLazy()
|
private val context: Application by injectLazy()
|
||||||
|
@ -73,7 +74,7 @@ class UniversalExtractor(private val client: OkHttpClient) {
|
||||||
|
|
||||||
for (quality in qualities) {
|
for (quality in qualities) {
|
||||||
val modifiedUrl = resultUrl.replace("M3U8_AUTO_360", "M3U8_AUTO_$quality")
|
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()) {
|
if (videos.isNotEmpty()) {
|
||||||
allVideos.addAll(videos)
|
allVideos.addAll(videos)
|
||||||
|
@ -89,7 +90,7 @@ class UniversalExtractor(private val client: OkHttpClient) {
|
||||||
return when {
|
return when {
|
||||||
"m3u8" in resultUrl -> {
|
"m3u8" in resultUrl -> {
|
||||||
Log.d("UniversalExtractor", "m3u8 URL: $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 -> {
|
"mpd" in resultUrl -> {
|
||||||
Log.d("UniversalExtractor", "mpd URL: $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 {
|
private fun String.proper(): String {
|
||||||
return this.replaceFirstChar { if (it.isLowerCase()) it.titlecase(
|
return this.replaceFirstChar { if (it.isLowerCase()) it.titlecase(
|
||||||
Locale.getDefault()) else it.toString() }
|
Locale.getDefault()) else it.toString() }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue