53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
"""Support for FFmpeg."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.const import ATTR_ENTITY_ID
|
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
|
from homeassistant.helpers import config_validation as cv
|
|
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
|
|
|
from .const import (
|
|
DOMAIN,
|
|
SIGNAL_FFMPEG_RESTART,
|
|
SIGNAL_FFMPEG_START,
|
|
SIGNAL_FFMPEG_STOP,
|
|
)
|
|
|
|
SERVICE_START = "start"
|
|
SERVICE_STOP = "stop"
|
|
SERVICE_RESTART = "restart"
|
|
|
|
SERVICE_FFMPEG_SCHEMA = vol.Schema({vol.Optional(ATTR_ENTITY_ID): cv.entity_ids})
|
|
|
|
|
|
async def _async_service_handle(service: ServiceCall) -> None:
|
|
"""Handle service ffmpeg process."""
|
|
entity_ids: list[str] | None = service.data.get(ATTR_ENTITY_ID)
|
|
|
|
if service.service == SERVICE_START:
|
|
async_dispatcher_send(service.hass, SIGNAL_FFMPEG_START, entity_ids)
|
|
elif service.service == SERVICE_STOP:
|
|
async_dispatcher_send(service.hass, SIGNAL_FFMPEG_STOP, entity_ids)
|
|
else:
|
|
async_dispatcher_send(service.hass, SIGNAL_FFMPEG_RESTART, entity_ids)
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Register FFmpeg services."""
|
|
|
|
hass.services.async_register(
|
|
DOMAIN, SERVICE_START, _async_service_handle, schema=SERVICE_FFMPEG_SCHEMA
|
|
)
|
|
|
|
hass.services.async_register(
|
|
DOMAIN, SERVICE_STOP, _async_service_handle, schema=SERVICE_FFMPEG_SCHEMA
|
|
)
|
|
|
|
hass.services.async_register(
|
|
DOMAIN, SERVICE_RESTART, _async_service_handle, schema=SERVICE_FFMPEG_SCHEMA
|
|
)
|