feat(titles): add a sports output and folder template kind

A sport episode uses output_template.sports with a {date} in the template's separator style; the flag survives --remote, the REST API and export.
This commit is contained in:
imSp4rky
2026-11-03 08:43:05 -07:00
parent 3027592e31
commit b710b5b0c9
9 changed files with 180 additions and 21 deletions
+9 -2
View File
@@ -9,7 +9,7 @@ the [Output & naming guide](../../guide/output-and-naming.md).
- **Type:** `dict`  ·  **Required** (no usable default; `dl` exits with an error if this is missing)
Filename templates keyed by media kind, using `{variable}` placeholders. Recognised kinds are
`movies`, `series`, and `songs` (and `albums` for folder templates). A trailing `?` on a
`movies`, `series`, `sports`, and `songs` (and `albums` for folder templates). A trailing `?` on a
variable (e.g. `{quality?}`) marks it optional: if empty, it and one adjacent separator are
dropped.
@@ -17,16 +17,18 @@ dropped.
output_template:
movies: "{title}.{year}.{quality?}.{source}-{tag}"
series: "{title}.{season_episode}.{episode_name?}.{quality?}.{source}-{tag}"
sports: "{title}.{year?}.{date?}.{episode_name}.{quality?}.{source}-{tag}"
songs: "{track_number}. {title}"
folder: # special nested key, see below
movies: "{title} ({year})"
series: "{title} ({year})"
sports: "{title}.{year?}"
```
**The nested `folder` sub-key** controls output subfolders, and unshackle pops it out of
`output_template`:
- A **dict** sets per-kind folder templates (kinds: `movies`, `series`, `songs`, `albums`).
- A **dict** sets per-kind folder templates (kinds: `movies`, `series`, `sports`, `songs`, `albums`).
- A **str** sets a single folder template for everything.
unshackle validates templates on load and emits warnings for unknown variables, non-string
@@ -59,6 +61,11 @@ folder-kind keys.
[`--enrich`](../../guide/downloading.md#metadata-and-tagging) fills it in from TVDB.
Use `{absolute?}` so the name stays clean when it is unknown.
!!! tip "`sports` names an event by year or date"
A service marks an event episode as sport, and that episode then uses the `sports`
templates. Without them it uses the `series` templates. For the variables and
examples, see [Sports events](../../guide/output-and-naming.md#sports-events).
## Tagging & naming keys
| Key | Type | Default | Description |