mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Clean up when TTS base URL is applied (#70835)
This commit is contained in:
parent
c4e85b78ba
commit
56000c0378
@ -203,55 +203,28 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
language = service.data.get(ATTR_LANGUAGE)
|
language = service.data.get(ATTR_LANGUAGE)
|
||||||
options = service.data.get(ATTR_OPTIONS)
|
options = service.data.get(ATTR_OPTIONS)
|
||||||
|
|
||||||
if tts.base_url is None or tts.base_url == get_url(hass):
|
tts.process_options(p_type, language, options)
|
||||||
tts.process_options(p_type, language, options)
|
params = {
|
||||||
params = {
|
"message": message,
|
||||||
"message": message,
|
|
||||||
}
|
|
||||||
if cache is not None:
|
|
||||||
params["cache"] = "true" if cache else "false"
|
|
||||||
if language is not None:
|
|
||||||
params["language"] = language
|
|
||||||
if options is not None:
|
|
||||||
params.update(options)
|
|
||||||
|
|
||||||
await hass.services.async_call(
|
|
||||||
DOMAIN_MP,
|
|
||||||
SERVICE_PLAY_MEDIA,
|
|
||||||
{
|
|
||||||
ATTR_ENTITY_ID: entity_ids,
|
|
||||||
ATTR_MEDIA_CONTENT_ID: generate_media_source_id(
|
|
||||||
DOMAIN,
|
|
||||||
str(yarl.URL.build(path=p_type, query=params)),
|
|
||||||
),
|
|
||||||
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
|
||||||
},
|
|
||||||
blocking=True,
|
|
||||||
context=service.context,
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
url = await tts.async_get_url_path(
|
|
||||||
p_type, message, cache=cache, language=language, options=options
|
|
||||||
)
|
|
||||||
except HomeAssistantError as err:
|
|
||||||
_LOGGER.error("Error on init TTS: %s", err)
|
|
||||||
return
|
|
||||||
|
|
||||||
base = tts.base_url or get_url(hass)
|
|
||||||
url = base + url
|
|
||||||
|
|
||||||
data = {
|
|
||||||
ATTR_MEDIA_CONTENT_ID: url,
|
|
||||||
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
|
||||||
ATTR_ENTITY_ID: entity_ids,
|
|
||||||
}
|
}
|
||||||
|
if cache is not None:
|
||||||
|
params["cache"] = "true" if cache else "false"
|
||||||
|
if language is not None:
|
||||||
|
params["language"] = language
|
||||||
|
if options is not None:
|
||||||
|
params.update(options)
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
DOMAIN_MP,
|
DOMAIN_MP,
|
||||||
SERVICE_PLAY_MEDIA,
|
SERVICE_PLAY_MEDIA,
|
||||||
data,
|
{
|
||||||
|
ATTR_ENTITY_ID: entity_ids,
|
||||||
|
ATTR_MEDIA_CONTENT_ID: generate_media_source_id(
|
||||||
|
DOMAIN,
|
||||||
|
str(yarl.URL.build(path=p_type, query=params)),
|
||||||
|
),
|
||||||
|
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
||||||
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
context=service.context,
|
context=service.context,
|
||||||
)
|
)
|
||||||
|
@ -17,6 +17,7 @@ from homeassistant.components.media_source.models import (
|
|||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
from homeassistant.helpers.network import get_url
|
||||||
|
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
|
|
||||||
@ -64,6 +65,9 @@ class TTSMediaSource(MediaSource):
|
|||||||
|
|
||||||
mime_type = mimetypes.guess_type(url)[0] or "audio/mpeg"
|
mime_type = mimetypes.guess_type(url)[0] or "audio/mpeg"
|
||||||
|
|
||||||
|
if manager.base_url and manager.base_url != get_url(self.hass):
|
||||||
|
url = f"{manager.base_url}{url}"
|
||||||
|
|
||||||
return PlayMedia(url, mime_type)
|
return PlayMedia(url, mime_type)
|
||||||
|
|
||||||
async def async_browse_media(
|
async def async_browse_media(
|
||||||
|
@ -366,7 +366,8 @@ async def test_setup_component_and_test_service_with_base_url_set(hass):
|
|||||||
assert len(calls) == 1
|
assert len(calls) == 1
|
||||||
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
|
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
|
||||||
assert (
|
assert (
|
||||||
calls[0].data[ATTR_MEDIA_CONTENT_ID] == "http://fnord"
|
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
|
||||||
|
== "http://fnord"
|
||||||
"/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491"
|
"/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491"
|
||||||
"_en_-_demo.mp3"
|
"_en_-_demo.mp3"
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user