1 """Support for Jellyfin remote commands."""
3 from __future__
import annotations
5 from collections.abc
import Iterable
19 from .
import JellyfinConfigEntry
20 from .const
import LOGGER
21 from .coordinator
import JellyfinDataUpdateCoordinator
22 from .entity
import JellyfinClientEntity
27 entry: JellyfinConfigEntry,
28 async_add_entities: AddEntitiesCallback,
30 """Set up Jellyfin remote from a config entry."""
31 coordinator = entry.runtime_data
34 def handle_coordinator_update() -> None:
35 """Add remote per session."""
36 entities: list[RemoteEntity] = []
37 for session_id, session_data
in coordinator.data.items():
39 session_id
not in coordinator.remote_session_ids
40 and session_data[
"SupportsRemoteControl"]
43 LOGGER.debug(
"Creating remote for session: %s", session_id)
44 coordinator.remote_session_ids.add(session_id)
45 entities.append(entity)
48 handle_coordinator_update()
50 entry.async_on_unload(coordinator.async_add_listener(handle_coordinator_update))
54 """Defines a Jellyfin remote entity."""
58 coordinator: JellyfinDataUpdateCoordinator,
61 """Initialize the Jellyfin Remote entity."""
62 super().
__init__(coordinator, session_id)
67 """Return if the client is on."""
70 def send_command(self, command: Iterable[str], **kwargs: Any) ->
None:
71 """Send a command to the client."""
72 num_repeats = kwargs.get(ATTR_NUM_REPEATS, DEFAULT_NUM_REPEATS)
73 delay = kwargs.get(ATTR_DELAY_SECS, DEFAULT_DELAY_SECS)
75 for _
in range(num_repeats):
76 for single_command
in command:
77 self.coordinator.api_client.jellyfin.command(
dict[str, Any] session_data(self)
None send_command(self, Iterable[str] command, **Any kwargs)
None __init__(self, JellyfinDataUpdateCoordinator coordinator, str session_id)
None async_setup_entry(HomeAssistant hass, JellyfinConfigEntry entry, AddEntitiesCallback async_add_entities)