diff --git a/custom_components/alexa_media/const.py b/custom_components/alexa_media/const.py index adccb6d2..2b177630 100644 --- a/custom_components/alexa_media/const.py +++ b/custom_components/alexa_media/const.py @@ -110,6 +110,14 @@ ATTR_MESSAGE = "message" ATTR_EMAIL = "email" ATTR_NUM_ENTRIES = "entries" +STREAMING_ERROR_MESSAGE = ( + "Sorry folks! Amazon doesn't allow streaming music like this. " + "Please take it up with them!" +) +PUBLIC_URL_ERROR_MESSAGE = ( + "To send TTS, please set the public URL in integration configuration." +) +ANNOUNCE_ERROR_MESSAGE = "To send TTS, please set Announce=true." STARTUP = f""" ------------------------------------------------------------------- {DOMAIN} diff --git a/custom_components/alexa_media/media_player.py b/custom_components/alexa_media/media_player.py index c0ab56cb..42fc597d 100644 --- a/custom_components/alexa_media/media_player.py +++ b/custom_components/alexa_media/media_player.py @@ -41,11 +41,14 @@ ) from .alexa_media import AlexaMedia from .const import ( + ANNOUNCE_ERROR_MESSAGE, DEPENDENT_ALEXA_COMPONENTS, MIN_TIME_BETWEEN_FORCED_SCANS, MIN_TIME_BETWEEN_SCANS, MODEL_IDS, PLAY_SCAN_INTERVAL, + PUBLIC_URL_ERROR_MESSAGE, + STREAMING_ERROR_MESSAGE, UPLOAD_PATH, ) from .helpers import _catch_login_errors, add_devices @@ -1375,7 +1378,9 @@ async def async_send_dropin_notification(self, message, **kwargs): ) @_catch_login_errors - async def async_play_tts_cloud_say(self, public_url, media_id, **kwargs): + async def async_play_tts_cloud_say( + self, media_type, public_url, media_id, **kwargs + ): file_name = media_id if media_source.is_media_source_id(media_id): media = await media_source.async_resolve_media( @@ -1384,6 +1389,12 @@ async def async_play_tts_cloud_say(self, public_url, media_id, **kwargs): file_name = media.url[media.url.rindex("/") : media.url.rindex(".")] media_id = async_process_play_media_url(self.hass, media.url) + if media_type == "music": + # Log and notify for Amazon restriction on streaming music + _LOGGER.warning(STREAMING_ERROR_MESSAGE) + await self.async_send_tts(STREAMING_ERROR_MESSAGE) + return + if kwargs.get(ATTR_MEDIA_ANNOUNCE): input_file_path = self.hass.config.path( f"{UPLOAD_PATH}{file_name}_input.mp3" @@ -1430,12 +1441,8 @@ async def async_play_tts_cloud_say(self, public_url, media_id, **kwargs): f"