summaryrefslogtreecommitdiff
path: root/routers
diff options
context:
space:
mode:
authorTyler Hoang <tyler@tylerhoang.xyz>2026-05-09 01:41:48 -0700
committerTyler Hoang <tyler@tylerhoang.xyz>2026-05-09 01:41:48 -0700
commit2f3a891d0944a3b200d3dda949475bf9e1742f56 (patch)
tree4c843a5efdf6c6f804341e6f2b36c91febacbd50 /routers
parentf252b534afeb22b4b88208552810901ea607d0f5 (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.py9
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,
},
)