From: Marcel van der Veldt Date: Thu, 7 Apr 2022 09:14:39 +0000 (+0200) Subject: prevent urls being parsed as uris X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=4583563c660a8f25b55cfe3fc3e64bc2820c9383;p=music-assistant-server.git prevent urls being parsed as uris --- diff --git a/music_assistant/controllers/music/__init__.py b/music_assistant/controllers/music/__init__.py index a757ed35..f5378034 100755 --- a/music_assistant/controllers/music/__init__.py +++ b/music_assistant/controllers/music/__init__.py @@ -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 ) diff --git a/music_assistant/helpers/typing.py b/music_assistant/helpers/typing.py index c5337216..578ca3d6 100644 --- a/music_assistant/helpers/typing.py +++ b/music_assistant/helpers/typing.py @@ -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" diff --git a/music_assistant/models/player_queue.py b/music_assistant/models/player_queue.py index ec1a14f8..0e15bfba 100644 --- a/music_assistant/models/player_queue.py +++ b/music_assistant/models/player_queue.py @@ -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, )