fix(release/parser): recognize Sxx-yy season range as tv_complete

`Der.Tatortreiniger.S01-06.GERMAN...` previously parsed as a movie
with 'S01-06' glued to the title. The parser now matches the
season-range form in _parse_season_episode (returning season=first,
episode=None), and the assemble step detects the range token to
promote media_type to 'tv_complete'.

The first season is exposed as `season` so `is_season_pack`
fires (season is not None and episode is None) — useful for routing
to a series root folder.

Fixture shitty/tatortreiniger_flat_multiseason/ updated:
- title: Der.Tatortreiniger.S01-06 → Der.Tatortreiniger
- season: null → 1
- media_type: movie → tv_complete
- is_season_pack: false → true
This commit is contained in:
2026-05-20 23:26:40 +02:00
parent b1c7f35ffb
commit 448ef3b79c
3 changed files with 41 additions and 10 deletions
@@ -1,22 +1,22 @@
release_name: "Der.Tatortreiniger.S01-06.GERMAN.1080p.WEB.x264-WAYNE"
# Tech debt: range syntax 'S01-06' is not recognized as TV — falls through
# to media_type=movie with the range glued onto the title. Captured here so a
# future ranger-aware parser change is intentional.
# Range syntax 'S01-06' is now recognized as a season-range marker:
# season=1 (first of the range), media_type=tv_complete, and the token
# no longer leaks into the title.
parsed:
title: "Der.Tatortreiniger.S01-06"
title: "Der.Tatortreiniger"
year: null
season: null
season: 1
episode: null
quality: "1080p"
source: "WEB"
codec: "x264"
group: "WAYNE"
tech_string: "1080p.WEB.x264"
media_type: "movie"
media_type: "tv_complete"
languages: ["GERMAN"]
parse_path: "direct"
is_season_pack: false
is_season_pack: true
tree:
- "Der.Tatortreiniger.S01-06.GERMAN.1080p.WEB.x264-WAYNE/"