From: Marvin Schenkel Date: Sat, 16 Mar 2024 01:05:21 +0000 (+0100) Subject: YTMusic fixes (#1145) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=f6b49c5052574ce20a8adf40e0943064c930ded5;p=music-assistant-server.git YTMusic fixes (#1145) * Add guard while adding playlist + use discnumber from YTMusic for album songs * Change log message to positional arguments * Change log message to positional arguments * Change log message to positional arguments * Change log message to positional arguments --- diff --git a/music_assistant/server/providers/slimproto/manifest.json b/music_assistant/server/providers/slimproto/manifest.json index 179c3256..47ad2341 100644 --- a/music_assistant/server/providers/slimproto/manifest.json +++ b/music_assistant/server/providers/slimproto/manifest.json @@ -13,4 +13,4 @@ "multi_instance": false, "builtin": false, "load_by_default": false -} \ No newline at end of file +} diff --git a/music_assistant/server/providers/ytmusic/__init__.py b/music_assistant/server/providers/ytmusic/__init__.py index 159478df..dec528f8 100644 --- a/music_assistant/server/providers/ytmusic/__init__.py +++ b/music_assistant/server/providers/ytmusic/__init__.py @@ -299,7 +299,7 @@ class YoutubeMusicProvider(MusicProvider): tracks = [] for idx, track_obj in enumerate(album_obj["tracks"], 1): track_obj["disc_number"] = 0 - track_obj["track_number"] = idx + track_obj["track_number"] = track_obj.get("trackNumber", idx) try: track = await self._parse_track(track_obj=track_obj) except InvalidDataError: @@ -346,7 +346,14 @@ class YoutubeMusicProvider(MusicProvider): # Grab the playlist id from the full url in case of personal playlists if YT_PLAYLIST_ID_DELIMITER in prov_playlist_id: prov_playlist_id = prov_playlist_id.split(YT_PLAYLIST_ID_DELIMITER)[0] - playlist_obj = await get_playlist(prov_playlist_id=prov_playlist_id, headers=self._headers) + # Add a try to prevent MA from stopping syncing whenever we fail a single playlist + try: + playlist_obj = await get_playlist( + prov_playlist_id=prov_playlist_id, headers=self._headers + ) + except KeyError as ke: + self.logger.warning("Could not load playlist: %s: %s", prov_playlist_id, ke) + return if "tracks" not in playlist_obj: return for index, track_obj in enumerate(playlist_obj["tracks"]):