prevent urls being parsed as uris
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 7 Apr 2022 09:14:39 +0000 (11:14 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 7 Apr 2022 09:14:39 +0000 (11:14 +0200)
music_assistant/controllers/music/__init__.py
music_assistant/helpers/typing.py
music_assistant/models/player_queue.py

index a757ed358a0ce89768da4fcede3783b643138549..f5378034a713a5ab9b289e6152877665a29eb3a1 100755 (executable)
@@ -157,6 +157,8 @@ class MusicController:
         self, uri: str, force_refresh: bool = False, lazy: bool = True
     ) -> MediaItemType:
         """Fetch MediaItem by uri."""
+        if uri.startswith("http://") or uri.startswith("https://"):
+            raise MusicAssistantError(f"Not a valid Music Assistant uri: {uri}")
         if "://" in uri:
             provider = uri.split("://")[0]
             item_id = uri.split("/")[-1]
@@ -165,6 +167,8 @@ class MusicController:
             # spotify new-style uri
             provider, media_type, item_id = uri.split(":")
             media_type = MediaType(media_type)
+        if media_type == MediaType.UNKNOWN:
+            raise MusicAssistantError(f"Not a valid Music Assistant uri: {uri}")
         return await self.get_item(
             item_id, provider, media_type, force_refresh=force_refresh, lazy=lazy
         )
index c5337216ade2c243a4de1f9dce94c92a65260984..578ca3d69b4c2b7cbfe34028ee43078a1af362e5 100644 (file)
@@ -11,7 +11,8 @@ if TYPE_CHECKING:
         MusicAssistant,
     )
     from music_assistant.models.media_items import MediaType
-    from music_assistant.models.player import Player, PlayerQueue, QueueItem
+    from music_assistant.models.player import Player
+    from music_assistant.models.player_queue import PlayerQueue, QueueItem
 
 else:
     MusicAssistant = "MusicAssistant"
index ec1a14f856b42111dc41e43a8826b6b95b52b1e2..0e15bfba336a5d401b7a47f7d42017b3c2b4b8ca 100644 (file)
@@ -42,6 +42,7 @@ class QueueItem(DataClassDictMixin):
     item_id: str = ""
     sort_index: int = 0
     streamdetails: Optional[StreamDetails] = None
+    media_type: MediaType = MediaType.UNKNOWN
     is_media_item: bool = False
 
     def __post_init__(self):
@@ -58,6 +59,7 @@ class QueueItem(DataClassDictMixin):
             uri=media_item.uri,
             name=media_item.name,
             duration=media_item.duration,
+            media_type=media_item.media_type,
             is_media_item=True,
         )