From: Marcel van der Veldt Date: Tue, 16 Apr 2024 09:59:16 +0000 (+0200) Subject: fix images for YTM X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=bdb8b3936296c2d700ab383d15be5d1406b17840;p=music-assistant-server.git fix images for YTM --- diff --git a/music_assistant/server/providers/ytmusic/__init__.py b/music_assistant/server/providers/ytmusic/__init__.py index 9c341e3a..607a70a8 100644 --- a/music_assistant/server/providers/ytmusic/__init__.py +++ b/music_assistant/server/providers/ytmusic/__init__.py @@ -872,16 +872,30 @@ class YoutubeMusicProvider(MusicProvider): return self._get_item_mapping(MediaType.ARTIST, artist_id, artist_obj.get("name")) async def _parse_thumbnails(self, thumbnails_obj: dict) -> list[MediaItemImage]: - """Parse and sort a list of thumbnails and return the highest quality.""" - thumb = sorted(thumbnails_obj, key=itemgetter("width"), reverse=True)[0] - return [ - MediaItemImage( - type=ImageType.THUMB, - path=thumb["url"], - provider=self.instance_id, - remotely_accessible=True, + """Parse and YTM thumbnails to MediaItemImage.""" + result: list[MediaItemImage] = [] + processed_images = set() + for img in thumbnails_obj: + url: str = img["url"] + url_base = url.split("=w")[0] + if url_base in processed_images: + continue + width: int = img["width"] + if "=w" not in url and width < 500: + continue + processed_images.add(url_base) + # if the size is in the url, we can actually request a higher thumb + if "=w" in url: + url = f"{url_base}=w600-h600-p" + result.append( + MediaItemImage( + type=ImageType.THUMB, + path=url, + provider=self.instance_id, + remotely_accessible=True, + ) ) - ] + return result @classmethod async def _parse_stream_format(cls, track_obj: dict) -> dict: