# Jellyfin update webpage A small Go web server for generating copyable Jellyfin movie and episode recaps. It serves one embedded `index.html` page, a database, or third-party Go dependencies. The page provides: - **Current week**: from the configured weekly boundary through now (Monday at 00:00 by default). - **Selected week**: `-1` means last week, `-2` means two weeks ago, and so on. - **Selected month**: `-1` means last month, `-2` means two months ago, and so on. - **Watched in selected period**: generates a Jellystat recap with watched seasons beside each show, for example `Andor (S1, S2)`. The prefix uses the first letter of `TEXT_SEASON`, so `TEXT_SEASON=Temporada` produces `T1, T2`. Seasons are included when available in playback history; season 0 is shown as `Specials`. - **Copy to clipboard**: copies the generated plain-text recap. - **Generate poster image**: previews a downloadable PNG collage for the selected week or month, with one poster per movie or show added during that period. Open **Add movies or shows to the poster image** to paste extra entries in the same `Movies:` / `Shows:` bullet format as a newly added recap. Extra titles are included only in the image; their artwork is matched by title (and movie year, when provided) against the Jellyfin library. Missing artwork gets a labelled placeholder. The automatic entries use Jellyfin's added date (`DateCreated`). Weekly output looks like: ```text 2026-08-15 - 2026-08-22 jellyfin weekly update: Movies: • Dune (2021) Shows: • Example Show — Season 3, episodes 1-12 ``` ## Configuration Copy the example and edit it: ```sh cp .env.example .env ``` ## Run with Docker Compose ```sh docker compose up -d --build docker compose logs -f ``` Then open: ```text http://:8080 ``` ## Run as a local binary Go 1.23 or newer is required. ```sh go test ./... go build -o jellyfin-news . set -a . ./.env set +a ./jellyfin-news ``` The API key remains on the server and is never sent to the browser. The browser receives recap text, poster metadata, and artwork proxied through this app. This app has no authentication, so keep port 8080 limited to your trusted home LAN and do not expose it directly to the internet.