"""Jellyfin service definition.""" from __future__ import annotations from media_library_viewer_api.integrations.base import ( SecretField, ServiceConfigBase, ServiceDefinition, WidgetConfigBase, widget_kind, ) class JellyfinConfig(ServiceConfigBase): """Non-secret Jellyfin connection config.""" base_url: str user_id: str = "" timeout_seconds: int = 10 class JellyfinActivityWidgetConfig(WidgetConfigBase): """Live Jellyfin session activity.""" # No user-overridable fields; the service record carries user_id. pass DEFINITION = ServiceDefinition( service_type="jellyfin", name="Jellyfin", description="Media server with live session activity.", config_model=JellyfinConfig, secret_fields=[ SecretField(key="api_key", label="API key", required=True), ], widget_kinds=[ widget_kind( kind="activity", name="Activity", description="Live sessions and idle users.", model_cls=JellyfinActivityWidgetConfig, default_config={}, refresh_interval_ms=30_000, ), ], )