jellyfin-tools/jellyfin-news/README.md
jellyfin-news/README.mdRaw
1# Jellyfin update webpage
2
3A 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.
4
5The page provides:
6
7- **Current week**: from the configured weekly boundary through now (Monday at 00:00 by default).
8- **Selected week**: `-1` means last week, `-2` means two weeks ago, and so on.
9- **Selected month**: `-1` means last month, `-2` means two months ago, and so on.
10- **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`.
11- **Copy to clipboard**: copies the generated plain-text recap.
12- **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`).
13
14Weekly output looks like:
15
16```text
172026-08-15 - 2026-08-22 jellyfin weekly update:
18
19Movies:
20• Dune (2021)
21
22Shows:
23• Example Show — Season 3, episodes 1-12
24```
25
26## Configuration
27
28Copy the example and edit it:
29
30```sh
31cp .env.example .env
32```
33
34Jellyfin requests authenticate with the supported `Authorization: MediaBrowser Token="…"` header, including on Jellyfin 12 with legacy authentication disabled. Keep using your existing `JELLYFIN_API_KEY`.
35
36## Run with Docker Compose
37
38```sh
39docker compose up -d --build
40docker compose logs -f
41```
42
43Then open:
44
45```text
46http://<home-server-ip>:8080
47```
48
49## Run as a local binary
50
51Go 1.23 or newer is required.
52
53```sh
54go test ./...
55go build -o jellyfin-news .
56set -a
57. ./.env
58set +a
59./jellyfin-news
60```
61
62The 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.