soulsync/api/video
BoulderBadgeDad f06728b0a7 video detail: IMDb / Rotten Tomatoes / Metacritic ratings (OMDb)
Next-level: real critic/audience scores beyond the TMDB star. OMDb (free key,
keyed by the imdb_id we already capture) returns IMDb / RT / Metacritic.

- OMDBClient (ratings + test); built as a non-worker 'ratings_client' on the
  engine. _backfill_ratings runs in both lazy detail refreshes (overwrites, since
  ratings are dynamic). schema v6: imdb_rating / rt_rating / metacritic on
  movies + shows; show/movie payloads return them.
- Billboard renders branded rating badges (IMDb yellow, RT tomato/splat by
  fresh/rotten, Metacritic green/yellow/red by score). Lazy refresh also triggers
  when an imdb_id exists but ratings are missing.
- OMDb API-key frame in Settings (parity with TMDB/TVDB) + config GET/POST +
  /enrichment/omdb/test.

Seam tests: OMDb parse, engine ratings backfill, apply_ratings + payload, config
includes omdb.
2026-06-14 22:54:53 -07:00
..
__init__.py video: detail-page data layer (show tree + movie) + backdrop proxy 2026-06-14 15:52:22 -07:00
dashboard.py video Tools: server-prefix the scan title (Plex/Jellyfin Library Scan) 2026-06-14 07:47:40 -07:00
detail.py video detail: deeper TMDB extras — trailer, where-to-watch, more like this 2026-06-14 21:42:41 -07:00
enrichment.py video detail: IMDb / Rotten Tomatoes / Metacritic ratings (OMDb) 2026-06-14 22:54:53 -07:00
libraries.py video side: library mapping backend (pick Movies/TV library) 2026-06-14 00:24:01 -07:00
library.py video Library: server-side paging + sort/filter + card badges (music parity) 2026-06-14 08:57:25 -07:00
poster.py video enrichment: backfill season posters from TMDB (server usually lacks them) 2026-06-14 17:57:24 -07:00
scan.py video Tools: match music Database Updater (stats, cancel, real progress) 2026-06-14 07:35:57 -07:00