From 5724c894ca0fccfc2b906d90a4f899e594cc7c4a Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sat, 18 Jun 2022 17:18:25 +0200 Subject: [PATCH 1/2] Fixed online subs resetting progress --- .../cloudstream3/ui/player/CS3IPlayer.kt | 16 ++++++++++------ .../cloudstream3/ui/player/GeneratorPlayer.kt | 3 +-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt index 06a2c3a3..a5260e73 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt @@ -206,12 +206,15 @@ class CS3IPlayer : IPlayer { ) } else { when (subtitleHelper.subtitleStatus(subtitle)) { - SubtitleStatus.REQUIRES_RELOAD -> { - Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") - return@let true - // reloadPlayer(context) - } - SubtitleStatus.IS_ACTIVE -> { + + // Uncommenting this will lead to online subtitles resetting player to 00:00 on reload + +// SubtitleStatus.REQUIRES_RELOAD -> { +// Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") +// return@let true +// // reloadPlayer(context) +// } + SubtitleStatus.IS_ACTIVE, SubtitleStatus.REQUIRES_RELOAD -> { Log.i(TAG, "setPreferredSubtitles IS_ACTIVE") trackSelector.setParameters( @@ -519,6 +522,7 @@ class CS3IPlayer : IPlayer { mediaItem ) + println("PLAYBACK POS $playbackPosition") return exoPlayerBuilder.build().apply { setPlayWhenReady(playWhenReady) seekTo(currentWindow, playbackPosition) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt index d0d278f9..9691eec7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt @@ -375,8 +375,7 @@ class GeneratorPlayer : FullScreenPlayer() { setSubtitles(subtitleData) // this is used instead of observe, because observe is too slow - val subs = currentSubs.toMutableSet() - subs.add(subtitleData) + val subs = currentSubs + subtitleData player.setActiveSubtitles(subs) player.reloadPlayer(ctx) From cc7d7ec478a866e3f9de14605d5c05db2a33a801 Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sat, 18 Jun 2022 19:10:32 +0200 Subject: [PATCH 2/2] Fixed online subs resetting progress (for real this time) --- .../cloudstream3/ui/player/CS3IPlayer.kt | 20 +++++++++---------- .../cloudstream3/ui/player/GeneratorPlayer.kt | 6 +++++- .../cloudstream3/ui/player/IPlayer.kt | 2 ++ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt index d667006d..03af78e3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt @@ -187,6 +187,9 @@ class CS3IPlayer : IPlayer { } var currentSubtitles: SubtitleData? = null + /** + * @return True if the player should be reloaded + * */ override fun setPreferredSubtitles(subtitle: SubtitleData?): Boolean { Log.i(TAG, "setPreferredSubtitles init $subtitle") currentSubtitles = subtitle @@ -199,15 +202,11 @@ class CS3IPlayer : IPlayer { ) } else { when (subtitleHelper.subtitleStatus(subtitle)) { - - // Uncommenting this will lead to online subtitles resetting player to 00:00 on reload - -// SubtitleStatus.REQUIRES_RELOAD -> { -// Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") -// return@let true -// // reloadPlayer(context) -// } - SubtitleStatus.IS_ACTIVE, SubtitleStatus.REQUIRES_RELOAD -> { + SubtitleStatus.REQUIRES_RELOAD -> { + Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") + return@let true + } + SubtitleStatus.IS_ACTIVE -> { Log.i(TAG, "setPreferredSubtitles IS_ACTIVE") trackSelector.setParameters( @@ -230,7 +229,6 @@ class CS3IPlayer : IPlayer { //} } SubtitleStatus.NOT_FOUND -> { - // not found Log.i(TAG, "setPreferredSubtitles NOT_FOUND") return@let true } @@ -272,7 +270,7 @@ class CS3IPlayer : IPlayer { subtitleHelper.setSubStyle(style) } - private fun saveData() { + override fun saveData() { Log.i(TAG, "saveData") updatedTime() diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt index 9691eec7..506a9cbe 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt @@ -376,6 +376,9 @@ class GeneratorPlayer : FullScreenPlayer() { // this is used instead of observe, because observe is too slow val subs = currentSubs + subtitleData + + // Save current time as to not reset player to 00:00 + player.saveData() player.setActiveSubtitles(subs) player.reloadPlayer(ctx) @@ -773,11 +776,11 @@ class GeneratorPlayer : FullScreenPlayer() { private fun autoSelectFromSettings(): Boolean { // auto select subtitle based of settings val langCode = preferredAutoSelectSubtitles - if (!langCode.isNullOrEmpty() && player.getCurrentPreferredSubtitle() == null) { getAutoSelectSubtitle(currentSubs, settings = true, downloads = false)?.let { sub -> context?.let { ctx -> if (setSubtitles(sub)) { + player.saveData() player.reloadPlayer(ctx) player.handleEvent(CSPlayerEvent.Play) return true @@ -793,6 +796,7 @@ class GeneratorPlayer : FullScreenPlayer() { getAutoSelectSubtitle(currentSubs, settings = false, downloads = true)?.let { sub -> context?.let { ctx -> if (setSubtitles(sub)) { + player.saveData() player.reloadPlayer(ctx) player.handleEvent(CSPlayerEvent.Play) return true diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt index 5dd05399..aa93c104 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt @@ -90,6 +90,8 @@ interface IPlayer { ) fun updateSubtitleStyle(style: SaveCaptionStyle) + fun saveData() + fun loadPlayer( context: Context, sameEpisode: Boolean,