From 2acea5fddc8b5b9cbae7a36b57734a71b4288cc6 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 16 Nov 2022 19:04:47 +0100 Subject: [PATCH] avoid duplicated resolutions --- .../libretube/ui/fragments/PlayerFragment.kt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 2d85bfb7e..a9325f397 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -1087,12 +1087,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { val videoStreams = try { // attempt to sort the qualities, catch if there was an error ih parsing streams.videoStreams?.sortedBy { - it.quality - .toString() - .split("p") - .first() - .replace("p", "") - .toLong() + it.quality?.toLong() ?: 0L }?.reversed() .orEmpty() } catch (_: Exception) { @@ -1102,14 +1097,20 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { for (vid in videoStreams) { // append quality to list if it has the preferred format (e.g. MPEG) val preferredMimeType = "video/${PlayerHelper.videoFormatPreference}" - if (vid.url != null && vid.mimeType == preferredMimeType) { // preferred format + if (vid.url != null && vid.mimeType == preferredMimeType) { + // avoid duplicated resolutions + if (resolutions.any { + it.resolution == vid.quality.toString().split("p").first().toInt() + } + ) continue + resolutions.add( VideoResolution( name = vid.quality!!, resolution = vid.quality.toString().split("p").first().toInt() ) ) - } else if (vid.quality.equals("LBRY") && vid.format.equals("MP4")) { // LBRY MP4 format + } else if (vid.quality.equals("LBRY") && vid.format.equals("MP4")) { resolutions.add( VideoResolution( name = "LBRY MP4",