From: Marcel van der Veldt Date: Wed, 3 Aug 2022 09:04:56 +0000 (+0200) Subject: fix queue index calculation on stream error X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=237c75aa13d11b8e4671099a3959d2483dd43471;p=music-assistant-server.git fix queue index calculation on stream error --- diff --git a/music_assistant/helpers/audio.py b/music_assistant/helpers/audio.py index 58eb98ef..9ee9e2ca 100644 --- a/music_assistant/helpers/audio.py +++ b/music_assistant/helpers/audio.py @@ -232,8 +232,8 @@ async def get_stream_details( streamdetails = None if queue_item.streamdetails and (time() < queue_item.streamdetails.expires): # we already have fresh streamdetails, use these - queue_item.streamdetails.seconds_skipped = 0 - queue_item.streamdetails.seconds_streamed = 0 + queue_item.streamdetails.seconds_skipped = None + queue_item.streamdetails.seconds_streamed = None streamdetails = queue_item.streamdetails else: # fetch streamdetails from provider diff --git a/music_assistant/models/media_items.py b/music_assistant/models/media_items.py index 5f1221f8..17137d80 100755 --- a/music_assistant/models/media_items.py +++ b/music_assistant/models/media_items.py @@ -451,8 +451,8 @@ class StreamDetails(DataClassDictMixin): # the fields below will be set/controlled by the streamcontroller queue_id: Optional[str] = None - seconds_streamed: int = 0 - seconds_skipped: int = 0 + seconds_streamed: Optional[float] = None + seconds_skipped: Optional[float] = None gain_correct: Optional[float] = None loudness: Optional[float] = None diff --git a/music_assistant/models/player_queue.py b/music_assistant/models/player_queue.py index 43f1640b..d4c43da2 100644 --- a/music_assistant/models/player_queue.py +++ b/music_assistant/models/player_queue.py @@ -840,17 +840,14 @@ class PlayerQueue: if not queue_track.streamdetails: track_time = elapsed_time_queue - total_time break - duration = ( - queue_track.streamdetails.seconds_streamed - or queue_track.duration - or FALLBACK_DURATION - ) - if duration is not None and elapsed_time_queue > ( - duration + total_time - ): + if queue_track.streamdetails.seconds_streamed is not None: + track_duration = queue_track.streamdetails.seconds_streamed + else: + track_duration = queue_track.duration or FALLBACK_DURATION + if elapsed_time_queue > (track_duration + total_time): # total elapsed time is more than (streamed) track duration # move index one up - total_time += duration + total_time += track_duration queue_index += 1 else: # no more seconds left to divide, this is our track