From 2015df0faa4de869c82420d2bcae574a74f9fd69 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Mon, 9 May 2022 12:14:53 +0200 Subject: [PATCH] improve uri parse helper to give better exception if it fails (#294) --- music_assistant/controllers/music/__init__.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/music_assistant/controllers/music/__init__.py b/music_assistant/controllers/music/__init__.py index efca2e25..abac150f 100755 --- a/music_assistant/controllers/music/__init__.py +++ b/music_assistant/controllers/music/__init__.py @@ -147,18 +147,19 @@ 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] - media_type = MediaType(uri.split("/")[-2]) - else: - # 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}") + try: + if "://" in uri: + provider = uri.split("://")[0] + item_id = uri.split("/")[-1] + media_type = MediaType(uri.split("/")[-2]) + elif "spotify" in uri: + # spotify new-style uri + provider, media_type, item_id = uri.split(":") + media_type = MediaType(media_type) + except (TypeError, AttributeError, ValueError) as err: + raise MusicAssistantError( + f"Not a valid Music Assistant uri: {uri}" + ) from err return await self.get_item( item_id, provider, media_type, force_refresh=force_refresh, lazy=lazy ) -- 2.34.1