From 82e76ac418216a284991ed6ab046dfc9e03f58c3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 17 Apr 2025 22:47:48 -1000 Subject: [PATCH 1/2] Make unknown media source exception translatable --- homeassistant/components/media_source/__init__.py | 8 ++++++-- homeassistant/components/media_source/error.py | 4 ++++ homeassistant/components/media_source/strings.json | 7 +++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 homeassistant/components/media_source/strings.json diff --git a/homeassistant/components/media_source/__init__.py b/homeassistant/components/media_source/__init__.py index 5c6165a3477..676569485b7 100644 --- a/homeassistant/components/media_source/__init__.py +++ b/homeassistant/components/media_source/__init__.py @@ -33,7 +33,7 @@ from .const import ( URI_SCHEME, URI_SCHEME_REGEX, ) -from .error import MediaSourceError, Unresolvable +from .error import MediaSourceError, UnknownMediaSource, Unresolvable from .models import BrowseMediaSource, MediaSource, MediaSourceItem, PlayMedia __all__ = [ @@ -113,7 +113,11 @@ def _get_media_item( return MediaSourceItem(hass, domain, "", target_media_player) if item.domain is not None and item.domain not in hass.data[DOMAIN]: - raise ValueError("Unknown media source") + raise UnknownMediaSource( + translation_domain=DOMAIN, + translation_key="unknown_media_source", + translation_placeholders={"domain": item.domain}, + ) return item diff --git a/homeassistant/components/media_source/error.py b/homeassistant/components/media_source/error.py index 120e7583e23..66e8842e08a 100644 --- a/homeassistant/components/media_source/error.py +++ b/homeassistant/components/media_source/error.py @@ -9,3 +9,7 @@ class MediaSourceError(HomeAssistantError): class Unresolvable(MediaSourceError): """When media ID is not resolvable.""" + + +class UnknownMediaSource(MediaSourceError, ValueError): + """When media source is unknown.""" diff --git a/homeassistant/components/media_source/strings.json b/homeassistant/components/media_source/strings.json new file mode 100644 index 00000000000..2a630fda532 --- /dev/null +++ b/homeassistant/components/media_source/strings.json @@ -0,0 +1,7 @@ +{ + "exceptions": { + "unknown_media_source": { + "message": "Unknown media source: {domain}" + } + } +} From 79cfb05f04be290e1a224977c529a482f8c34859 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 17 Apr 2025 23:34:51 -1000 Subject: [PATCH 2/2] one more --- homeassistant/components/media_source/__init__.py | 9 ++++++++- homeassistant/components/media_source/strings.json | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_source/__init__.py b/homeassistant/components/media_source/__init__.py index 676569485b7..ce02b994e9d 100644 --- a/homeassistant/components/media_source/__init__.py +++ b/homeassistant/components/media_source/__init__.py @@ -136,7 +136,14 @@ async def async_browse_media( try: item = await _get_media_item(hass, media_content_id, None).async_browse() except ValueError as err: - raise BrowseError(str(err)) from err + raise BrowseError( + translation_domain=DOMAIN, + translation_key="browse_media_failed", + translation_placeholders={ + "media_content_id": str(media_content_id), + "error": str(err), + }, + ) from err if content_filter is None or item.children is None: return item diff --git a/homeassistant/components/media_source/strings.json b/homeassistant/components/media_source/strings.json index 2a630fda532..e855737b165 100644 --- a/homeassistant/components/media_source/strings.json +++ b/homeassistant/components/media_source/strings.json @@ -1,5 +1,8 @@ { "exceptions": { + "browse_media_failed": { + "message": "Failed to browse media with content id {media_content_id}: {error}" + }, "unknown_media_source": { "message": "Unknown media source: {domain}" }