Fix: accept last 60 seconds as finished for audiobooks/episodes
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 11 Feb 2025 21:45:55 +0000 (22:45 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 11 Feb 2025 21:45:55 +0000 (22:45 +0100)
music_assistant/controllers/player_queues.py

index 8c553f772f0d8f8cd3a8b29b7274434fc242ccff..cc572a23755e0ceca90306972355b2573b4e20c5 100644 (file)
@@ -1838,7 +1838,16 @@ class PlayerQueuesController(CoreController):
             duration = item_to_report.streamdetails.duration
         else:
             duration = item_to_report.duration or 3600
-        fully_played = seconds_played >= (duration or 3600) - 5
+
+        # determine if item is fully played
+        # for podcasts and audiobooks we account for the last 60 seconds
+        if item_to_report.queue_item_id == prev_item_id and item_to_report.media_type in (
+            MediaType.AUDIOBOOK,
+            MediaType.PODCAST_EPISODE,
+        ):
+            fully_played = seconds_played >= (duration or 3 * 3600) - 60
+        else:
+            fully_played = seconds_played >= (duration or 3600) - 10
 
         self.logger.debug(
             "PlayerQueue %s playing/played item %s - fully_played: %s - progress: %s",