diff options
| author | Tyler Hoang <tyler@tylerhoang.xyz> | 2026-05-09 01:41:48 -0700 |
|---|---|---|
| committer | Tyler Hoang <tyler@tylerhoang.xyz> | 2026-05-09 01:41:48 -0700 |
| commit | 2f3a891d0944a3b200d3dda949475bf9e1742f56 (patch) | |
| tree | 4c843a5efdf6c6f804341e6f2b36c91febacbd50 /routers | |
| parent | f252b534afeb22b4b88208552810901ea607d0f5 (diff) | |
Add IMDb, Rotten Tomatoes, and Metacritic ratings to film detail
Fetches ratings from OMDB API in parallel with TMDB context. Displays
three side-by-side chips between the subtitle and watch log panels.
Requires OMDB_API_KEY in .env; degrades silently if missing or no match.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'routers')
| -rw-r--r-- | routers/films.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/routers/films.py b/routers/films.py index 333eaef..449fd44 100644 --- a/routers/films.py +++ b/routers/films.py @@ -1,3 +1,4 @@ +import asyncio from collections import Counter from datetime import date, datetime from itertools import groupby @@ -12,6 +13,7 @@ from sqlalchemy.orm import Session from database import get_db from models import Film +from services import omdb from services.film_people import director_href, normalize_name, split_credit_names from services.tmdb import TMDBNotConfiguredError, detail_context as tmdb_detail_context, movie_detail @@ -442,7 +444,6 @@ def get_films_partial( @router.get("/films/{film_id}") async def film_detail(film_id: int, request: Request, db: Session = Depends(get_db)): film = _get_film_or_404(db, film_id) - tmdb_context = await _film_tmdb_context(film) rewatch_filter = ( Film.tmdb_id == film.tmdb_id if film.tmdb_id is not None else Film.title == film.title @@ -454,6 +455,11 @@ async def film_detail(film_id: int, request: Request, db: Session = Depends(get_ .all() ) + tmdb_context, ratings = await asyncio.gather( + _film_tmdb_context(film), + omdb.fetch_ratings(title=film.title, year=film.year), + ) + return templates.TemplateResponse( request=request, name="detail.html", @@ -463,6 +469,7 @@ async def film_detail(film_id: int, request: Request, db: Session = Depends(get_ "active_shelf": film.shelf, "tmdb_context": tmdb_context, "rewatch_history": rewatch_history, + "ratings": ratings, }, ) |
