mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 07:37:34 +00:00
Put access to ffmpeg hass.data behind a method (#62570)
* Put access to ffmpeg hass.data behind a method Move all callers of `hass.data[DATA_FFMPEG]` to a new function that returns the FFMpegManager. * Update homeassistant/components/ffmpeg/__init__.py Co-authored-by: Martin Hjelmare <marhje52@gmail.com> * Remove unnecessary async_ prefix Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
ce9abdb520
commit
14e4216e29
@ -15,7 +15,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components.camera import SUPPORT_ON_OFF, SUPPORT_STREAM, Camera
|
||||
from homeassistant.components.camera.const import DOMAIN as CAMERA_DOMAIN
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG, FFmpegManager
|
||||
from homeassistant.components.ffmpeg import FFmpegManager, get_ffmpeg_manager
|
||||
from homeassistant.const import ATTR_ENTITY_ID, CONF_NAME, STATE_OFF, STATE_ON
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry
|
||||
@ -136,7 +136,7 @@ async def async_setup_platform(
|
||||
|
||||
name = discovery_info[CONF_NAME]
|
||||
device = hass.data[DATA_AMCREST][DEVICES][name]
|
||||
entity = AmcrestCam(name, device, hass.data[DATA_FFMPEG])
|
||||
entity = AmcrestCam(name, device, get_ffmpeg_manager(hass))
|
||||
|
||||
# 2021.9.0 introduced unique id's for the camera entity, but these were not
|
||||
# unique for different resolution streams. If any cameras were configured
|
||||
|
@ -7,7 +7,7 @@ from haffmpeg.camera import CameraMjpeg
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.const import ATTR_BATTERY_LEVEL
|
||||
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
@ -59,7 +59,7 @@ class ArloCam(Camera):
|
||||
self._camera = camera
|
||||
self._attr_name = camera.name
|
||||
self._motion_status = False
|
||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||
self._ffmpeg_arguments = device_info.get(CONF_FFMPEG_ARGUMENTS)
|
||||
self._last_refresh = None
|
||||
self.attrs = {}
|
||||
|
@ -15,7 +15,7 @@ from homeassistant.components.camera import (
|
||||
PLATFORM_SCHEMA as PARENT_PLATFORM_SCHEMA,
|
||||
Camera,
|
||||
)
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG, FFmpegManager
|
||||
from homeassistant.components.ffmpeg import FFmpegManager, get_ffmpeg_manager
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
@ -94,7 +94,7 @@ class CanaryCamera(CoordinatorEntity, Camera):
|
||||
"""Initialize a Canary security camera."""
|
||||
super().__init__(coordinator)
|
||||
Camera.__init__(self)
|
||||
self._ffmpeg: FFmpegManager = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg: FFmpegManager = get_ffmpeg_manager(hass)
|
||||
self._ffmpeg_arguments = ffmpeg_args
|
||||
self._location_id = location_id
|
||||
self._device = device
|
||||
|
@ -8,7 +8,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components import ffmpeg
|
||||
from homeassistant.components.camera import PLATFORM_SCHEMA, SUPPORT_STREAM, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.config_entries import (
|
||||
SOURCE_DISCOVERY,
|
||||
SOURCE_IGNORE,
|
||||
@ -249,7 +249,7 @@ class EzvizCamera(EzvizEntity, Camera):
|
||||
self._rtsp_stream = camera_rtsp_stream
|
||||
self._local_rtsp_port = local_rtsp_port
|
||||
self._ffmpeg_arguments = ffmpeg_arguments
|
||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||
self._attr_unique_id = serial
|
||||
self._attr_name = self.data["name"]
|
||||
|
||||
|
@ -90,6 +90,14 @@ async def async_setup(hass, config):
|
||||
return True
|
||||
|
||||
|
||||
@bind_hass
|
||||
def get_ffmpeg_manager(hass: HomeAssistant) -> FFmpegManager:
|
||||
"""Return the FFmpegManager."""
|
||||
if DATA_FFMPEG not in hass.data:
|
||||
raise ValueError("ffmpeg component not initialized")
|
||||
return hass.data[DATA_FFMPEG]
|
||||
|
||||
|
||||
@bind_hass
|
||||
async def async_get_image(
|
||||
hass: HomeAssistant,
|
||||
|
@ -11,8 +11,8 @@ from homeassistant.components.ffmpeg import (
|
||||
CONF_EXTRA_ARGUMENTS,
|
||||
CONF_INITIAL_STATE,
|
||||
CONF_INPUT,
|
||||
DATA_FFMPEG,
|
||||
FFmpegBase,
|
||||
get_ffmpeg_manager,
|
||||
)
|
||||
from homeassistant.const import CONF_NAME, CONF_REPEAT
|
||||
from homeassistant.core import callback
|
||||
@ -49,7 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
|
||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||
"""Set up the FFmpeg binary motion sensor."""
|
||||
manager = hass.data[DATA_FFMPEG]
|
||||
manager = get_ffmpeg_manager(hass)
|
||||
entity = FFmpegMotion(hass, manager, config)
|
||||
async_add_entities([entity])
|
||||
|
||||
|
@ -11,7 +11,7 @@ from homeassistant.components.ffmpeg import (
|
||||
CONF_INITIAL_STATE,
|
||||
CONF_INPUT,
|
||||
CONF_OUTPUT,
|
||||
DATA_FFMPEG,
|
||||
get_ffmpeg_manager,
|
||||
)
|
||||
from homeassistant.components.ffmpeg_motion.binary_sensor import FFmpegBinarySensor
|
||||
from homeassistant.const import CONF_NAME
|
||||
@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
|
||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||
"""Set up the FFmpeg noise binary sensor."""
|
||||
manager = hass.data[DATA_FFMPEG]
|
||||
manager = get_ffmpeg_manager(hass)
|
||||
entity = FFmpegNoise(hass, manager, config)
|
||||
async_add_entities([entity])
|
||||
|
||||
|
@ -11,7 +11,7 @@ from pyhap.camera import (
|
||||
)
|
||||
from pyhap.const import CATEGORY_CAMERA
|
||||
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.const import STATE_ON
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers.event import (
|
||||
@ -139,7 +139,7 @@ class Camera(HomeAccessory, PyhapCamera):
|
||||
|
||||
def __init__(self, hass, driver, name, entity_id, aid, config):
|
||||
"""Initialize a Camera accessory object."""
|
||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg = get_ffmpeg_manager(hass)
|
||||
for config_key, conf in CONFIG_DEFAULTS.items():
|
||||
if config_key not in config:
|
||||
config[config_key] = conf
|
||||
|
@ -5,7 +5,7 @@ from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from homeassistant.components.camera import ATTR_ENTITY_ID, SUPPORT_ON_OFF, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.const import (
|
||||
ATTR_ATTRIBUTION,
|
||||
ATTR_BATTERY_CHARGING,
|
||||
@ -40,7 +40,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
||||
async def async_setup_entry(hass, entry, async_add_entities):
|
||||
"""Set up a Logi Circle Camera based on a config entry."""
|
||||
devices = await hass.data[LOGI_CIRCLE_DOMAIN].cameras
|
||||
ffmpeg = hass.data[DATA_FFMPEG]
|
||||
ffmpeg = get_ffmpeg_manager(hass)
|
||||
|
||||
cameras = [LogiCam(device, entry, ffmpeg) for device in devices]
|
||||
|
||||
|
@ -8,7 +8,7 @@ from yarl import URL
|
||||
|
||||
from homeassistant.components import ffmpeg
|
||||
from homeassistant.components.camera import SUPPORT_STREAM, Camera
|
||||
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS, DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS, get_ffmpeg_manager
|
||||
from homeassistant.const import HTTP_BASIC_AUTHENTICATION
|
||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||
from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream
|
||||
@ -153,7 +153,7 @@ class ONVIFCameraEntity(ONVIFBaseEntity, Camera):
|
||||
"""Generate an HTTP MJPEG stream from the camera."""
|
||||
LOGGER.debug("Handling mjpeg stream from camera '%s'", self.device.name)
|
||||
|
||||
ffmpeg_manager = self.hass.data[DATA_FFMPEG]
|
||||
ffmpeg_manager = get_ffmpeg_manager(self.hass)
|
||||
stream = CameraMjpeg(ffmpeg_manager.binary)
|
||||
|
||||
await stream.open_camera(
|
||||
|
@ -9,7 +9,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components import ffmpeg
|
||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.const import (
|
||||
CONF_HOST,
|
||||
CONF_NAME,
|
||||
@ -65,7 +65,7 @@ class XiaomiCamera(Camera):
|
||||
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
||||
self._last_image = None
|
||||
self._last_url = None
|
||||
self._manager = hass.data[DATA_FFMPEG]
|
||||
self._manager = get_ffmpeg_manager(hass)
|
||||
self._name = config[CONF_NAME]
|
||||
self.host = config[CONF_HOST]
|
||||
self.host.hass = hass
|
||||
|
@ -9,7 +9,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components import ffmpeg
|
||||
from homeassistant.components.camera import PLATFORM_SCHEMA, Camera
|
||||
from homeassistant.components.ffmpeg import DATA_FFMPEG
|
||||
from homeassistant.components.ffmpeg import get_ffmpeg_manager
|
||||
from homeassistant.const import (
|
||||
CONF_HOST,
|
||||
CONF_NAME,
|
||||
@ -60,7 +60,7 @@ class YiCamera(Camera):
|
||||
self._extra_arguments = config.get(CONF_FFMPEG_ARGUMENTS)
|
||||
self._last_image = None
|
||||
self._last_url = None
|
||||
self._manager = hass.data[DATA_FFMPEG]
|
||||
self._manager = get_ffmpeg_manager(hass)
|
||||
self._name = config[CONF_NAME]
|
||||
self._is_on = True
|
||||
self.host = config[CONF_HOST]
|
||||
|
Loading…
x
Reference in New Issue
Block a user