fix(release/parser): collapse chained multi-episode markers to full range
S14E09E10E11 previously parsed to episode=9, episode_end=10 — E11 was silently dropped. The parser now takes episodes[-1] as episode_end so the full chain is captured (episode=9, episode_end=11). Intermediate values stay implied. Fixture shitty/archer_multi_episode/ updated from anti-regression of the bug to anti-regression of the fix.
This commit is contained in:
@@ -15,6 +15,15 @@ callers).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **Multi-episode chain (e.g. `S14E09E10E11`) now collapses to a full
|
||||||
|
range.** The parser previously captured `episode=9, episode_end=10`
|
||||||
|
and dropped E11+. It now returns `episode=first, episode_end=last`,
|
||||||
|
with intermediate values implied. Fixture
|
||||||
|
`shitty/archer_multi_episode/` updated from anti-regression-of-bug
|
||||||
|
to anti-regression-of-fix.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- **`LanguageRepository` port** in `alfred.domain.shared.ports`. Structural
|
- **`LanguageRepository` port** in `alfred.domain.shared.ports`. Structural
|
||||||
|
|||||||
@@ -113,7 +113,9 @@ def _parse_season_episode(text: str) -> tuple[int, int | None, int | None] | Non
|
|||||||
|
|
||||||
if not episodes:
|
if not episodes:
|
||||||
return None
|
return None
|
||||||
return season, episodes[0], episodes[1] if len(episodes) >= 2 else None
|
# For chained multi-episode markers (E09E10E11), the range is the
|
||||||
|
# first → last episode. Intermediate values are implied.
|
||||||
|
return season, episodes[0], episodes[-1] if len(episodes) >= 2 else None
|
||||||
|
|
||||||
# NxNN form
|
# NxNN form
|
||||||
if "X" in upper:
|
if "X" in upper:
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
release_name: "Archer.S14E09E10E11.1080p.WEB.h264-ETHEL"
|
release_name: "Archer.S14E09E10E11.1080p.WEB.h264-ETHEL"
|
||||||
|
|
||||||
# Tech debt: triple-episode chain (E09E10E11) — current parser captures
|
# Triple-episode chain (E09E10E11) — the parser collapses the chain to a
|
||||||
# episode=9 and episode_end=10, but E11 is lost. Anti-regression: lock in
|
# range (episode=first, episode_end=last). Intermediate values are implied.
|
||||||
# the partial behavior so any future improvement is intentional.
|
|
||||||
parsed:
|
parsed:
|
||||||
title: "Archer"
|
title: "Archer"
|
||||||
year: null
|
year: null
|
||||||
season: 14
|
season: 14
|
||||||
episode: 9
|
episode: 9
|
||||||
episode_end: 10
|
episode_end: 11
|
||||||
quality: "1080p"
|
quality: "1080p"
|
||||||
source: "WEB"
|
source: "WEB"
|
||||||
codec: "h264"
|
codec: "h264"
|
||||||
|
|||||||
Reference in New Issue
Block a user