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
)