mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Include relative path in tts get url (#45623)
* Include relative path in tts get url * Always cal get_url when requested
This commit is contained in:
parent
7673f57248
commit
92e084cee1
@ -27,7 +27,6 @@ from homeassistant.const import (
|
|||||||
CONF_PLATFORM,
|
CONF_PLATFORM,
|
||||||
HTTP_BAD_REQUEST,
|
HTTP_BAD_REQUEST,
|
||||||
HTTP_NOT_FOUND,
|
HTTP_NOT_FOUND,
|
||||||
HTTP_OK,
|
|
||||||
)
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
@ -117,7 +116,7 @@ async def async_setup(hass, config):
|
|||||||
use_cache = conf.get(CONF_CACHE, DEFAULT_CACHE)
|
use_cache = conf.get(CONF_CACHE, DEFAULT_CACHE)
|
||||||
cache_dir = conf.get(CONF_CACHE_DIR, DEFAULT_CACHE_DIR)
|
cache_dir = conf.get(CONF_CACHE_DIR, DEFAULT_CACHE_DIR)
|
||||||
time_memory = conf.get(CONF_TIME_MEMORY, DEFAULT_TIME_MEMORY)
|
time_memory = conf.get(CONF_TIME_MEMORY, DEFAULT_TIME_MEMORY)
|
||||||
base_url = conf.get(CONF_BASE_URL) or get_url(hass)
|
base_url = conf.get(CONF_BASE_URL)
|
||||||
hass.data[BASE_URL_KEY] = base_url
|
hass.data[BASE_URL_KEY] = base_url
|
||||||
|
|
||||||
await tts.async_init_cache(use_cache, cache_dir, time_memory, base_url)
|
await tts.async_init_cache(use_cache, cache_dir, time_memory, base_url)
|
||||||
@ -165,13 +164,16 @@ async def async_setup(hass, config):
|
|||||||
options = service.data.get(ATTR_OPTIONS)
|
options = service.data.get(ATTR_OPTIONS)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
url = await tts.async_get_url(
|
url = await tts.async_get_url_path(
|
||||||
p_type, message, cache=cache, language=language, options=options
|
p_type, message, cache=cache, language=language, options=options
|
||||||
)
|
)
|
||||||
except HomeAssistantError as err:
|
except HomeAssistantError as err:
|
||||||
_LOGGER.error("Error on init TTS: %s", err)
|
_LOGGER.error("Error on init TTS: %s", err)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
base = tts.base_url or get_url(hass)
|
||||||
|
url = base + url
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
ATTR_MEDIA_CONTENT_ID: url,
|
ATTR_MEDIA_CONTENT_ID: url,
|
||||||
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
|
||||||
@ -290,7 +292,7 @@ class SpeechManager:
|
|||||||
provider.name = engine
|
provider.name = engine
|
||||||
self.providers[engine] = provider
|
self.providers[engine] = provider
|
||||||
|
|
||||||
async def async_get_url(
|
async def async_get_url_path(
|
||||||
self, engine, message, cache=None, language=None, options=None
|
self, engine, message, cache=None, language=None, options=None
|
||||||
):
|
):
|
||||||
"""Get URL for play message.
|
"""Get URL for play message.
|
||||||
@ -342,7 +344,7 @@ class SpeechManager:
|
|||||||
engine, key, message, use_cache, language, options
|
engine, key, message, use_cache, language, options
|
||||||
)
|
)
|
||||||
|
|
||||||
return f"{self.base_url}/api/tts_proxy/{filename}"
|
return f"/api/tts_proxy/{filename}"
|
||||||
|
|
||||||
async def async_get_tts_audio(self, engine, key, message, cache, language, options):
|
async def async_get_tts_audio(self, engine, key, message, cache, language, options):
|
||||||
"""Receive TTS and store for view in cache.
|
"""Receive TTS and store for view in cache.
|
||||||
@ -579,15 +581,17 @@ class TextToSpeechUrlView(HomeAssistantView):
|
|||||||
options = data.get(ATTR_OPTIONS)
|
options = data.get(ATTR_OPTIONS)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
url = await self.tts.async_get_url(
|
path = await self.tts.async_get_url_path(
|
||||||
p_type, message, cache=cache, language=language, options=options
|
p_type, message, cache=cache, language=language, options=options
|
||||||
)
|
)
|
||||||
resp = self.json({"url": url}, HTTP_OK)
|
|
||||||
except HomeAssistantError as err:
|
except HomeAssistantError as err:
|
||||||
_LOGGER.error("Error on init tts: %s", err)
|
_LOGGER.error("Error on init tts: %s", err)
|
||||||
resp = self.json({"error": err}, HTTP_BAD_REQUEST)
|
return self.json({"error": err}, HTTP_BAD_REQUEST)
|
||||||
|
|
||||||
return resp
|
base = self.tts.base_url or get_url(self.tts.hass)
|
||||||
|
url = base + path
|
||||||
|
|
||||||
|
return self.json({"url": url, "path": path})
|
||||||
|
|
||||||
|
|
||||||
class TextToSpeechView(HomeAssistantView):
|
class TextToSpeechView(HomeAssistantView):
|
||||||
@ -595,7 +599,7 @@ class TextToSpeechView(HomeAssistantView):
|
|||||||
|
|
||||||
requires_auth = False
|
requires_auth = False
|
||||||
url = "/api/tts_proxy/{filename}"
|
url = "/api/tts_proxy/{filename}"
|
||||||
name = "api:tts:speech"
|
name = "api:tts_speech"
|
||||||
|
|
||||||
def __init__(self, tts):
|
def __init__(self, tts):
|
||||||
"""Initialize a tts view."""
|
"""Initialize a tts view."""
|
||||||
@ -614,4 +618,4 @@ class TextToSpeechView(HomeAssistantView):
|
|||||||
|
|
||||||
def get_base_url(hass):
|
def get_base_url(hass):
|
||||||
"""Get base URL."""
|
"""Get base URL."""
|
||||||
return hass.data[BASE_URL_KEY]
|
return hass.data[BASE_URL_KEY] or get_url(hass)
|
||||||
|
@ -699,9 +699,10 @@ async def test_setup_component_and_web_get_url(hass, hass_client):
|
|||||||
req = await client.post(url, json=data)
|
req = await client.post(url, json=data)
|
||||||
assert req.status == 200
|
assert req.status == 200
|
||||||
response = await req.json()
|
response = await req.json()
|
||||||
assert response.get("url") == (
|
assert response == {
|
||||||
"http://example.local:8123/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3"
|
"url": "http://example.local:8123/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3",
|
||||||
)
|
"path": "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_component_and_web_get_url_bad_config(hass, hass_client):
|
async def test_setup_component_and_web_get_url_bad_config(hass, hass_client):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user