From 675b76f0b1ea3b4c3d87c05d9d582069c53586d8 Mon Sep 17 00:00:00 2001 From: Fabian Munkes <105975993+fmunkes@users.noreply.github.com> Date: Wed, 2 Apr 2025 01:52:43 +0200 Subject: [PATCH] fix: abs - recommendation, series handling (#2093) fix: series shelf might be ShelfBook --- .../providers/audiobookshelf/__init__.py | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/music_assistant/providers/audiobookshelf/__init__.py b/music_assistant/providers/audiobookshelf/__init__.py index 261247d8..44642f01 100644 --- a/music_assistant/providers/audiobookshelf/__init__.py +++ b/music_assistant/providers/audiobookshelf/__init__.py @@ -729,25 +729,36 @@ class Audiobookshelf(MusicProvider): if item is not None: items.append(item) case AbsShelfId.RECENT_SERIES | AbsShelfId.CONTINUE_SERIES: - # we jump into a browse folder here, set path up as if browse function - # used. - for entity in shelf.entities: - assert isinstance(entity, SeriesShelf) - if len(entity.books) == 0: - continue - path = ( - f"{self.instance_id}://" - f"{AbsBrowsePaths.LIBRARIES_BOOK} {library_id}/" - f"{AbsBrowsePaths.SERIES}/{entity.id_}" - ) - items.append( - BrowseFolder( + # We jump into a browse folder here if we have SeriesShelf, set path up as if + # browse function used. + if isinstance(shelf, ShelfSeries): + for entity in shelf.entities: + assert isinstance(entity, SeriesShelf) + if len(entity.books) == 0: + continue + path = ( + f"{self.instance_id}://" + f"{AbsBrowsePaths.LIBRARIES_BOOK} {library_id}/" + f"{AbsBrowsePaths.SERIES}/{entity.id_}" + ) + items.append( + BrowseFolder( + item_id=entity.id_, + name=entity.name, + provider=self.lookup_key, + path=path, + ) + ) + elif isinstance(shelf, ShelfBook) and media_type == MediaType.AUDIOBOOK: + # Single books, must be audiobooks + for entity in shelf.entities: + item = await self.mass.music.get_library_item_by_prov_id( + media_type=media_type, + provider_instance_id_or_domain=self.instance_id, item_id=entity.id_, - name=entity.name, - provider=self.lookup_key, - path=path, ) - ) + if item is not None: + items.append(item) case AbsShelfId.NEWEST_AUTHORS: # same as for series, use a folder for entity in shelf.entities: -- 2.34.1