New endpoint:GET /posters/session/{ergast-name}/{year}/{slug}.png — 1920×1080 thumb composed of the aerial of the circuit + projected track outline + GP name + bold session label with a red accent bar.
Session slugs mirror Kometa's F1 builder episode numbering, both formats:
Sprint (15 episodes): adds pre-sprint(-qualifying), (post-)sprint, etc.
Format detection:_SESSION_SPRINT is picked when the Jolpica race entry has a Sprint* section; otherwise _SESSION_STD.
YAML feed:/kometa/formula-1-metadata.yml now emits an episodes: block under each Plex season pointing every episode at /posters/session/.../<slug>.png. Kometa silently skips episodes that don't exist in the library so the same feed works for any round whatever sessions you've downloaded.
Refactor:_draw_track_projected now takes canvas_w / geo_center_y so the same GeoJSON-projection logic feeds both the 2:3 race poster and the 16:9 session thumb — alignment is correct by construction in both shapes.
Closes the "empty episode tile" problem in Plex.
**New endpoint:** `GET /posters/session/{ergast-name}/{year}/{slug}.png` — 1920×1080 thumb composed of the aerial of the circuit + projected track outline + GP name + bold session label with a red accent bar.
**Session slugs** mirror Kometa's F1 builder episode numbering, both formats:
- Standard (10 episodes): fp1, fp2, fp3, pre-qualifying, qualifying, post-qualifying, pre-race, race, post-race, highlights
- Sprint (15 episodes): adds pre-sprint(-qualifying), (post-)sprint, etc.
**Format detection:** `_SESSION_SPRINT` is picked when the Jolpica race entry has a `Sprint*` section; otherwise `_SESSION_STD`.
**YAML feed:** `/kometa/formula-1-metadata.yml` now emits an `episodes:` block under each Plex season pointing every episode at `/posters/session/.../<slug>.png`. Kometa silently skips episodes that don't exist in the library so the same feed works for any round whatever sessions you've downloaded.
**Refactor:** `_draw_track_projected` now takes `canvas_w` / `geo_center_y` so the same GeoJSON-projection logic feeds both the 2:3 race poster and the 16:9 session thumb — alignment is correct by construction in both shapes.
Closes the “empty episode tile” problem in Plex.
New endpoint:
GET /posters/session/{ergast-name}/{year}/{slug}.png— 1920×1080 thumb composed of the aerial of the circuit + projected track outline + GP name + bold session label with a red accent bar.Session slugs mirror Kometa's F1 builder episode numbering, both formats:
Format detection:
_SESSION_SPRINTis picked when the Jolpica race entry has aSprint*section; otherwise_SESSION_STD.YAML feed:
/kometa/formula-1-metadata.ymlnow emits anepisodes:block under each Plex season pointing every episode at/posters/session/.../<slug>.png. Kometa silently skips episodes that don't exist in the library so the same feed works for any round whatever sessions you've downloaded.Refactor:
_draw_track_projectednow takescanvas_w/geo_center_yso the same GeoJSON-projection logic feeds both the 2:3 race poster and the 16:9 session thumb — alignment is correct by construction in both shapes.71feafa345.