From 75361d0f2fdcb5f13162a7b90fde47a11396de92 Mon Sep 17 00:00:00 2001 From: Marvin Schenkel Date: Thu, 11 Jul 2024 20:38:49 +0200 Subject: [PATCH] Apple Music: (Hopefully) fix time out issues + fix handling of missing artist details (#1489) * Fix timeout issues and added itemmapping in case an Artist cannot be found * Remove debug statement for solved issue. --- .../server/providers/apple_music/__init__.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/music_assistant/server/providers/apple_music/__init__.py b/music_assistant/server/providers/apple_music/__init__.py index 481ae9b6..46d27481 100644 --- a/music_assistant/server/providers/apple_music/__init__.py +++ b/music_assistant/server/providers/apple_music/__init__.py @@ -209,8 +209,8 @@ class AppleMusicProvider(MusicProvider): ) continue song_catalog_ids.append(catalog_id) - # Obtain catalog info per 300 songs - max_limit = 300 + # Obtain catalog info per 200 songs, the documented limit of 300 results in a 504 timeout + max_limit = 200 for i in range(0, len(song_catalog_ids), max_limit): catalog_ids = song_catalog_ids[i : i + max_limit] catalog_endpoint = f"catalog/{self._storefront}/songs" @@ -238,8 +238,6 @@ class AppleMusicProvider(MusicProvider): async def get_album(self, prov_album_id) -> Album: """Get full album details by id.""" - # Debug issue https://github.com/music-assistant/hass-music-assistant/issues/2431 - self.logger.debug("Get album %s", prov_album_id) endpoint = f"catalog/{self._storefront}/albums/{prov_album_id}" response = await self._get_data(endpoint, include="artists") return self._parse_album(response["data"][0]) @@ -384,7 +382,14 @@ class AppleMusicProvider(MusicProvider): attributes = artist_obj["attributes"] else: artist_id = artist_obj["id"] - attributes = {} + self.logger.debug("No attributes found for artist %s", artist_obj) + # No more details available other than the id, return an ItemMapping + return ItemMapping( + media_type=MediaType.ARTIST, + provider=self.instance_id, + item_id=artist_id, + name=artist_id, + ) artist = Artist( item_id=artist_id, name=attributes.get("name"), -- 2.34.1