mirror of
https://github.com/esphome/esphome.git
synced 2024-11-22 06:58:11 +01:00
[micro_wake_word] Remove duplicated download code (#7401)
This commit is contained in:
parent
71a7f6383f
commit
dc4e60526c
2 changed files with 7 additions and 28 deletions
|
@ -4,8 +4,6 @@ import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from urllib.parse import urljoin
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
from esphome import automation, external_files, git
|
from esphome import automation, external_files, git
|
||||||
from esphome.automation import register_action, register_condition
|
from esphome.automation import register_action, register_condition
|
||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
|
@ -26,7 +24,6 @@ from esphome.const import (
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
TYPE_GIT,
|
TYPE_GIT,
|
||||||
TYPE_LOCAL,
|
TYPE_LOCAL,
|
||||||
__version__,
|
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, HexInt
|
from esphome.core import CORE, HexInt
|
||||||
|
|
||||||
|
@ -179,26 +176,6 @@ def _convert_manifest_v1_to_v2(v1_manifest):
|
||||||
return v2_manifest
|
return v2_manifest
|
||||||
|
|
||||||
|
|
||||||
def _download_file(url: str, path: Path) -> bytes:
|
|
||||||
if not external_files.has_remote_file_changed(url, path):
|
|
||||||
_LOGGER.debug("Remote file has not changed, skipping download")
|
|
||||||
return path.read_bytes()
|
|
||||||
|
|
||||||
try:
|
|
||||||
req = requests.get(
|
|
||||||
url,
|
|
||||||
timeout=external_files.NETWORK_TIMEOUT,
|
|
||||||
headers={"User-agent": f"ESPHome/{__version__} (https://esphome.io)"},
|
|
||||||
)
|
|
||||||
req.raise_for_status()
|
|
||||||
except requests.exceptions.RequestException as e:
|
|
||||||
raise cv.Invalid(f"Could not download file from {url}: {e}") from e
|
|
||||||
|
|
||||||
path.parent.mkdir(parents=True, exist_ok=True)
|
|
||||||
path.write_bytes(req.content)
|
|
||||||
return req.content
|
|
||||||
|
|
||||||
|
|
||||||
def _validate_manifest_version(manifest_data):
|
def _validate_manifest_version(manifest_data):
|
||||||
if manifest_version := manifest_data.get(KEY_VERSION):
|
if manifest_version := manifest_data.get(KEY_VERSION):
|
||||||
if manifest_version == 1:
|
if manifest_version == 1:
|
||||||
|
@ -223,7 +200,7 @@ def _process_http_source(config):
|
||||||
|
|
||||||
json_path = path / "manifest.json"
|
json_path = path / "manifest.json"
|
||||||
|
|
||||||
json_contents = _download_file(url, json_path)
|
json_contents = external_files.download_content(url, json_path)
|
||||||
|
|
||||||
manifest_data = json.loads(json_contents)
|
manifest_data = json.loads(json_contents)
|
||||||
if not isinstance(manifest_data, dict):
|
if not isinstance(manifest_data, dict):
|
||||||
|
@ -234,7 +211,7 @@ def _process_http_source(config):
|
||||||
|
|
||||||
model_path = path / model
|
model_path = path / model
|
||||||
|
|
||||||
_download_file(str(model_url), model_path)
|
external_files.download_content(str(model_url), model_path)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
|
@ -80,10 +80,10 @@ def compute_local_file_dir(domain: str) -> Path:
|
||||||
return base_directory
|
return base_directory
|
||||||
|
|
||||||
|
|
||||||
def download_content(url: str, path: Path, timeout=NETWORK_TIMEOUT) -> None:
|
def download_content(url: str, path: Path, timeout=NETWORK_TIMEOUT) -> bytes:
|
||||||
if not has_remote_file_changed(url, path):
|
if not has_remote_file_changed(url, path):
|
||||||
_LOGGER.debug("Remote file has not changed %s", url)
|
_LOGGER.debug("Remote file has not changed %s", url)
|
||||||
return
|
return path.read_bytes()
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Remote file has changed, downloading from %s to %s",
|
"Remote file has changed, downloading from %s to %s",
|
||||||
|
@ -102,4 +102,6 @@ def download_content(url: str, path: Path, timeout=NETWORK_TIMEOUT) -> None:
|
||||||
raise cv.Invalid(f"Could not download from {url}: {e}")
|
raise cv.Invalid(f"Could not download from {url}: {e}")
|
||||||
|
|
||||||
path.parent.mkdir(parents=True, exist_ok=True)
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
path.write_bytes(req.content)
|
data = req.content
|
||||||
|
path.write_bytes(data)
|
||||||
|
return data
|
||||||
|
|
Loading…
Reference in a new issue