From 481b3ec71b8d320364447b4e0585d542e0094092 Mon Sep 17 00:00:00 2001 From: crackededed <90209774+crackededed@users.noreply.github.com> Date: Wed, 3 Jul 2024 16:33:58 +0300 Subject: [PATCH] fix detecting end on stream downloads (cherry picked from commit b3f4fdc4fcf37ddf69e572887d288dd2b8650f66) --- app/build.gradle.kts | 2 +- .../andreyasadchy/xtra/ui/download/StreamDownloadWorker.kt | 7 +++++-- .../github/andreyasadchy/xtra/util/m3u8/MediaPlaylist.kt | 3 ++- .../github/andreyasadchy/xtra/util/m3u8/PlaylistUtils.kt | 6 +++++- gradle/libs.versions.toml | 4 ++-- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 93efec356..ab587da32 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -28,7 +28,7 @@ android { minSdk = 16 targetSdk = 34 versionCode = 121 - versionName = "2.33.0" + versionName = "2.33.1" } buildTypes { diff --git a/app/src/main/java/com/github/andreyasadchy/xtra/ui/download/StreamDownloadWorker.kt b/app/src/main/java/com/github/andreyasadchy/xtra/ui/download/StreamDownloadWorker.kt index 89b9c6934..285df6b12 100644 --- a/app/src/main/java/com/github/andreyasadchy/xtra/ui/download/StreamDownloadWorker.kt +++ b/app/src/main/java/com/github/andreyasadchy/xtra/ui/download/StreamDownloadWorker.kt @@ -447,11 +447,14 @@ class StreamDownloadWorker @AssistedInject constructor( } jobs.awaitAll() collector.cancel() + if (playlist.end) { + return@withContext true + } } else { - return@withContext false + return@withContext true } } else { - return@withContext false + return@withContext true } } val timeTaken = System.currentTimeMillis() - startTime diff --git a/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/MediaPlaylist.kt b/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/MediaPlaylist.kt index 1695280b2..287a6bb36 100644 --- a/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/MediaPlaylist.kt +++ b/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/MediaPlaylist.kt @@ -4,5 +4,6 @@ data class MediaPlaylist( val targetDuration: Int, val dateRanges: List, val initSegmentUri: String?, - val segments: List + val segments: List, + val end: Boolean ) \ No newline at end of file diff --git a/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/PlaylistUtils.kt b/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/PlaylistUtils.kt index 279c2de6b..e0db21b06 100644 --- a/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/PlaylistUtils.kt +++ b/app/src/main/java/com/github/andreyasadchy/xtra/util/m3u8/PlaylistUtils.kt @@ -12,6 +12,7 @@ object PlaylistUtils { var initSegmentUri: String? = null val segments = mutableListOf() var segmentInfo: Pair? = null + var end = false input.bufferedReader().forEachLine { line -> if (line.isNotBlank()) { if (line.startsWith('#')) { @@ -58,6 +59,9 @@ object PlaylistUtils { } } } + line.startsWith("#EXT-X-ENDLIST") -> { + end = true + } } } else { segmentInfo?.let { @@ -67,7 +71,7 @@ object PlaylistUtils { } } } - return MediaPlaylist(targetDuration, dateRanges, initSegmentUri, segments) + return MediaPlaylist(targetDuration, dateRanges, initSegmentUri, segments, end) } fun writeMediaPlaylist(playlist: MediaPlaylist, output: OutputStream) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bacac94c8..6be4a338b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ android-gradle-plugin = "8.5.0" apollo = "3.8.4" appcompat = "1.7.0" -checker-qual = "3.44.0" +checker-qual = "3.45.0" coil = "2.6.0" constraintlayout = "2.1.4" core = "1.13.1" @@ -18,7 +18,7 @@ hilt-extension-compiler = "1.2.0" hilt-work = "1.2.0" kotlin = "2.0.0" ksp = "2.0.0-1.0.22" -lifecycle = "2.8.2" +lifecycle = "2.8.3" material = "1.12.0" media3 = "1.3.1" navigation = "2.7.7"