Fix URI parsing in play_media call (#317)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 17 May 2022 12:34:36 +0000 (14:34 +0200)
committerGitHub <noreply@github.com>
Tue, 17 May 2022 12:34:36 +0000 (14:34 +0200)
music_assistant/helpers/audio.py
music_assistant/models/player_queue.py

index 8a7bb9463da0bf64dcc6a426ac26bf3de09d84f2..0d5c0836294084c4177948aa668ff92fff6589fd 100644 (file)
@@ -168,7 +168,7 @@ async def analyze_audio(mass: MusicAssistant, streamdetails: StreamDetails) -> N
     stdout, stderr = await proc.communicate(audio_data or None)
     try:
         loudness = float(stdout.decode().strip())
-    except ValueError:  # pylint: disable=broad-except
+    except (ValueError, AttributeError):
         LOGGER.warning(
             "Could not determine integrated loudness of %s/%s - %s %s",
             streamdetails.provider.value,
index 62cb18205fdd07b5d16a0b77eb5b33d41fe41d13..210f21ad86ada4ff8dc77218d847bfe78e862db5 100644 (file)
@@ -398,13 +398,16 @@ class PlayerQueue:
             uris = [uris]
         queue_items = []
         for uri in uris:
-            if uri.startswith("http"):
-                # a plain url was provided
-                queue_items.append(QueueItem(uri))
-                continue
-            media_item = await self.mass.music.get_item_by_uri(uri)
-            if not media_item:
-                raise FileNotFoundError(f"Invalid uri: {uri}")
+            # parse provided uri into a MA MediaItem or Basis QueueItem from URL
+            try:
+                media_item = await self.mass.music.get_item_by_uri(uri)
+            except MediaNotFoundError as err:
+                if uri.startswith("http"):
+                    # a plain url was provided
+                    queue_items.append(QueueItem(uri))
+                    continue
+                raise MediaNotFoundError(f"Invalid uri: {uri}") from err
+
             # collect tracks to play
             if media_item.media_type == MediaType.ARTIST:
                 tracks = await self.mass.music.artists.toptracks(