Fix watchparty circular imports
This commit is contained in:
parent
fbf2264041
commit
e6ca8531ca
1 changed files with 15 additions and 7 deletions
|
|
@ -7,13 +7,6 @@ from typing import Any
|
||||||
|
|
||||||
from .core import BotRuntime, MediaItem
|
from .core import BotRuntime, MediaItem
|
||||||
from .db import connect_db, initialize_database
|
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 = {
|
WATCH_PARTY_STATUSES = {
|
||||||
"draft",
|
"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]]:
|
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)
|
movies, shows = load_media_library(runtime)
|
||||||
pools = {
|
pools = {
|
||||||
"movie": movies,
|
"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:
|
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)
|
movies, shows = load_media_library(runtime)
|
||||||
for item in [*movies, *shows]:
|
for item in [*movies, *shows]:
|
||||||
if item.source_id and item.source_id == source_id:
|
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]:
|
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()
|
initialize_watchparty_schema()
|
||||||
if not jellyfin_source_id.strip():
|
if not jellyfin_source_id.strip():
|
||||||
raise ValueError("jellyfinSourceId is required")
|
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]:
|
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_payload = get_watch_party_session(session_id)
|
||||||
session = session_payload["session"]
|
session = session_payload["session"]
|
||||||
worker = worker_create_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]:
|
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)
|
queue_entry = first_queued_entry(session_id)
|
||||||
if queue_entry is None:
|
if queue_entry is None:
|
||||||
raise ValueError("No queued items available")
|
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]:
|
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 {})
|
worker = worker_control(session_id=session_id, action=action, data=data or {})
|
||||||
if action == "pause":
|
if action == "pause":
|
||||||
update_watch_party_status(session_id, "paused")
|
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]:
|
def refresh_watch_party_worker(session_id: int) -> dict[str, Any]:
|
||||||
|
from .worker_client import worker_status
|
||||||
|
|
||||||
worker = worker_status(session_id)
|
worker = worker_status(session_id)
|
||||||
result = update_worker_state(
|
result = update_worker_state(
|
||||||
session_id,
|
session_id,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue