From 4669e71ceef5552f0eb918df9acd673a2ede317a Mon Sep 17 00:00:00 2001 From: Francesco <66080458+chicco-carone@users.noreply.github.com> Date: Wed, 2 Jul 2025 12:04:40 +0200 Subject: [PATCH] Implement pagination for plex provider (#2253) --- music_assistant/providers/plex/__init__.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/music_assistant/providers/plex/__init__.py b/music_assistant/providers/plex/__init__.py index e997da59..3af9d08d 100644 --- a/music_assistant/providers/plex/__init__.py +++ b/music_assistant/providers/plex/__init__.py @@ -827,9 +827,23 @@ class PlexProvider(MusicProvider): async def get_library_tracks(self) -> AsyncGenerator[Track, None]: """Retrieve library tracks from Plex Music.""" - tracks_obj = await self._search_track(None, limit=99999) - for track in tracks_obj: - yield await self._parse_track(track) + page_size = 500 + offset = 0 + while True: + batch = cast( + "list[PlexTrack]", + await self._run_async( + self._plex_library.searchTracks, + title=None, + limit=page_size, + offset=offset, + ), + ) + if not batch: + break + for plex_track in batch: + yield await self._parse_track(plex_track) + offset += page_size async def get_album(self, prov_album_id: str) -> Album: """Get full album details by id.""" -- 2.34.1