Fix: Order not respected when playing an entire album (#1248)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 23 Apr 2024 17:00:09 +0000 (19:00 +0200)
committerGitHub <noreply@github.com>
Tue, 23 Apr 2024 17:00:09 +0000 (19:00 +0200)
music_assistant/server/controllers/media/albums.py

index b1eb67c8c878f313191a7e14d445659a44c8352d..2d722fba2d810357370cc864e9f329e561e3868f 100644 (file)
@@ -302,7 +302,7 @@ class AlbumsController(MediaControllerBase[Album]):
         )
         if full_album.provider == "library" and in_library_only:
             # return in-library items only
-            return db_items
+            return sorted(db_items, key=lambda x: (x.disc_number, x.track_number))
         # return all (unique) items from all providers
         result: list[AlbumTrack] = [*db_items]
         unique_ids: set[str] = set()
@@ -331,7 +331,9 @@ class AlbumsController(MediaControllerBase[Album]):
                     )
                 elif not in_library_only and provider_track not in result:
                     result.append(AlbumTrack.from_track(provider_track, full_album))
-        return result
+        # NOTE: we need to return the results sorted on disc/track here
+        # to ensure the correct order at playback
+        return sorted(result, key=lambda x: (x.disc_number, x.track_number))
 
     async def versions(
         self,