From 6d4d4d42d6d7531ed45dba6339cd045aa248afcf Mon Sep 17 00:00:00 2001 From: Rob Sonke Date: Wed, 5 Mar 2025 23:43:06 +0100 Subject: [PATCH] iBroadcast: Correct disc numbers in case the album has a disc number provided (#2000) fix: Correct disc numbers in case the album has a disc number provided --- .../providers/ibroadcast/__init__.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/music_assistant/providers/ibroadcast/__init__.py b/music_assistant/providers/ibroadcast/__init__.py index 2a3a11bc..855ab03f 100644 --- a/music_assistant/providers/ibroadcast/__init__.py +++ b/music_assistant/providers/ibroadcast/__init__.py @@ -372,14 +372,22 @@ class IBroadcastProvider(MusicProvider): ) }, ) + if track_obj["album_id"]: + album = await self._client.get_album(track_obj["album_id"]) + if "rating" in track_obj and track_obj["rating"] == 5: track.favorite = True if "length" in track_obj and str(track_obj["length"]).isdigit(): track.duration = track_obj["length"] - # track number looks like 201, meaning, disc 2, track 1 - if track_obj["track"] > 99: + # use the disc number if available + if album and album["disc"] > 0: + track.disc_number = album["disc"] + track.track_number = int(track_obj["track"]) + # otherwise, track number might look like 201, meaning, disc 2, track 1 + elif track_obj["track"] > 99: track.disc_number = int(str(track_obj["track"])[:1]) track.track_number = int(str(track_obj["track"])[1:]) + # or just the track number and no disc number else: track.track_number = int(track_obj["track"]) # Track artists @@ -419,12 +427,11 @@ class IBroadcastProvider(MusicProvider): if track_obj["genres_additional"]: genres.add(track_obj["genres_additional"]) track.metadata.genres = genres - if track_obj["album_id"]: - album = await self._client.get_album(track_obj["album_id"]) - if album: - track.album = self._get_item_mapping( - MediaType.ALBUM, track_obj["album_id"], album["name"] - ) + # album info + if album: + track.album = self._get_item_mapping( + MediaType.ALBUM, track_obj["album_id"], album["name"] + ) return track async def _parse_playlist(self, playlist_obj: dict[str, Any]) -> Playlist: -- 2.34.1