"""Pre-rendered showcase broadcasts.""" from __future__ import annotations import json from dataclasses import dataclass from pathlib import Path ROOT = Path(__file__).resolve().parents[2] SHOWCASE_DIR = ROOT / "assets" / "showcases" @dataclass(frozen=True) class Showcase: id: str label: str audio_path: Path script_path: Path SHOWCASES = [ Showcase( id="phone_booth", label="The Case of A Phone Booth That Rings Under", audio_path=SHOWCASE_DIR / "the-case-of-a-phone-booth-that-rings-under.crude.wav", script_path=SHOWCASE_DIR / "the-case-of-a-phone-booth-that-rings-under.json", ), Showcase( id="lighthouse", label="The Case of Two Rival Lighthouse Keepers One Light", audio_path=SHOWCASE_DIR / "the-case-of-two-rival-lighthouse-keepers-one-light.crude.wav", script_path=SHOWCASE_DIR / "the-case-of-two-rival-lighthouse-keepers-one-light.json", ), Showcase( id="wrong_bride", label="The Case of A Wedding Where Every Guest Recognizes", audio_path=SHOWCASE_DIR / "the-case-of-a-wedding-where-every-guest-recognizes.crude.wav", script_path=SHOWCASE_DIR / "the-case-of-a-wedding-where-every-guest-recognizes.json", ), ] def default_showcase() -> tuple[str | None, str]: """Return the default showcase audio path and pretty script JSON.""" return load_showcase(SHOWCASES[0].label) def showcase_labels() -> list[str]: return [showcase.label for showcase in SHOWCASES] def load_showcase(label: str) -> tuple[str | None, str]: showcase = _find_showcase(label) if showcase is None or not showcase.audio_path.exists() or not showcase.script_path.exists(): return None, "{}" payload = json.loads(showcase.script_path.read_text(encoding="utf-8")) return str(showcase.audio_path), json.dumps(payload, indent=2) def _find_showcase(label: str) -> Showcase | None: for showcase in SHOWCASES: if showcase.label == label: return showcase return None