Fix watchparty circular imports

This commit is contained in:
MiTHRAL 2026-05-26 15:27:00 -04:00
parent fbf2264041
commit e6ca8531ca

View file

@ -7,13 +7,6 @@ from typing import Any
from .core import BotRuntime, MediaItem
from .db import connect_db, initialize_database
from .media import (
catalog_item_for_source_id,
load_media_library,
media_item_card_payload,
resolve_jellyfin_playback_source,
)
from .worker_client import worker_control, worker_create_session, worker_status, worker_play
WATCH_PARTY_STATUSES = {
"draft",
@ -203,6 +196,8 @@ def log_watch_party_event(connection: Any, session_id: int, event_type: str, pay
def list_media_candidates(runtime: BotRuntime, *, media_type: str = "all", search: str = "", limit: int = 25) -> list[dict[str, Any]]:
from .media import load_media_library, media_item_card_payload
movies, shows = load_media_library(runtime)
pools = {
"movie": movies,
@ -222,6 +217,8 @@ def list_media_candidates(runtime: BotRuntime, *, media_type: str = "all", searc
def find_media_item_by_source_id(runtime: BotRuntime, source_id: str) -> MediaItem | None:
from .media import load_media_library
movies, shows = load_media_library(runtime)
for item in [*movies, *shows]:
if item.source_id and item.source_id == source_id:
@ -362,6 +359,8 @@ def next_queue_position(connection: Any, session_id: int) -> int:
def add_watch_party_queue_item(runtime: BotRuntime, session_id: int, jellyfin_source_id: str) -> dict[str, Any]:
from .media import media_item_card_payload
initialize_watchparty_schema()
if not jellyfin_source_id.strip():
raise ValueError("jellyfinSourceId is required")
@ -546,6 +545,8 @@ def first_queued_entry(session_id: int) -> dict[str, Any] | None:
def start_watch_party_worker(session_id: int) -> dict[str, Any]:
from .worker_client import worker_create_session
session_payload = get_watch_party_session(session_id)
session = session_payload["session"]
worker = worker_create_session(
@ -573,6 +574,9 @@ def start_watch_party_worker(session_id: int) -> dict[str, Any]:
def play_next_watch_party_item(runtime: BotRuntime, session_id: int) -> dict[str, Any]:
from .media import catalog_item_for_source_id, resolve_jellyfin_playback_source
from .worker_client import worker_play
queue_entry = first_queued_entry(session_id)
if queue_entry is None:
raise ValueError("No queued items available")
@ -607,6 +611,8 @@ def play_next_watch_party_item(runtime: BotRuntime, session_id: int) -> dict[str
def control_watch_party_worker(session_id: int, action: str, data: dict[str, Any] | None = None) -> dict[str, Any]:
from .worker_client import worker_control
worker = worker_control(session_id=session_id, action=action, data=data or {})
if action == "pause":
update_watch_party_status(session_id, "paused")
@ -627,6 +633,8 @@ def control_watch_party_worker(session_id: int, action: str, data: dict[str, Any
def refresh_watch_party_worker(session_id: int) -> dict[str, Any]:
from .worker_client import worker_status
worker = worker_status(session_id)
result = update_worker_state(
session_id,