From ead38fdb13abb406065cef0743d7e411cb27eaf3 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Wed, 6 May 2026 18:05:07 -0700 Subject: Add genre tracking and year-in-review improvements Adds genre field to Film model with TMDB enrichment. Genres populate from TMDB detail fetch during add/edit and bulk enrichment. Genre metadata displays on film cards, detail page (Production section), stats page (top genres panel), and year-in-review (by decade and genre breakdowns). Auto-detects rewatches when adding films via TMDB autocomplete - if a film with the same TMDB ID already exists in diary, pre-fills rewatch checkbox and count. Rewatch count now displays on film cards as "Rewatch #N". Stats page now shows: - Top genres (most watched) - Film decades (sorted chronologically) - Already shows: directors, companions, star distribution, rewatch rate Year-in-review shows decades and genres alongside monthly activity and companions. Bulk enrichment endpoint (/data/enrich-posters) now fetches missing genre metadata along with posters and TMDB IDs. Co-Authored-By: Claude Haiku 4.5 --- models.py | 1 + 1 file changed, 1 insertion(+) (limited to 'models.py') diff --git a/models.py b/models.py index 6643a58..05aa587 100644 --- a/models.py +++ b/models.py @@ -27,6 +27,7 @@ class Film(Base): director: Mapped[str | None] = mapped_column(String(255), nullable=True) year: Mapped[int | None] = mapped_column(Integer, nullable=True) country: Mapped[str | None] = mapped_column(String(255), nullable=True) + genre: Mapped[str | None] = mapped_column(String(255), nullable=True) language: Mapped[str | None] = mapped_column(String(255), nullable=True) runtime: Mapped[int | None] = mapped_column(Integer, nullable=True) date_watched: Mapped[date | None] = mapped_column(Date, nullable=True) -- cgit v1.3-2-g0d8e