From 230a7ab88ab478a2b02d8ec29db19e2d94f572e8 Mon Sep 17 00:00:00 2001 From: Francwa Date: Wed, 20 May 2026 01:03:52 +0200 Subject: [PATCH] docs(changelog): log SHITTY simplification + distributor split --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bb9f04..22bc85b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,15 @@ callers). primary token. KONTRAST releases with audio / HDR / edition / language metadata now produce a fully populated `ParsedRelease`. +- **Streaming distributor as a separate dimension** from encoding source. + New `alfred/knowledge/release/distributors.yaml` (NF, AMZN, DSNP, HMAX, + ATVP, HULU, PCOK, PMTP, CR) feeds a new `ReleaseKnowledge.distributors` + port field, a `TokenRole.DISTRIBUTOR` annotation, and a + `ParsedRelease.distributor` field. `WEB-DL` stays the source; the + platform that produced the release is now recorded distinctly. The + five entries (NF, AMZN, DSNP, HMAX, ATVP) were correspondingly removed + from `sources.yaml`. + - **Real-world release fixtures** under `tests/fixtures/releases/{easy,shitty,path_of_pain}/`, each documenting an expected `ParsedRelease` plus the future `routing` (library / torrents / seed_hardlinks) for the upcoming `organize_media` @@ -93,6 +102,22 @@ callers). ### Changed +- **Release parser v2 — SHITTY simplified to dict-driven tagging**. + The legacy ~480-line heuristic block in `release/services.py` is gone; + `pipeline._annotate_shitty` does a single pass that looks each token + up in the kb buckets (resolutions / sources / codecs / distributors / + year / `SxxExx`) with first-match-wins semantics, and the leftmost + contiguous UNKNOWN run becomes the title. `annotate()` no longer + returns `None` — SHITTY is the always-on fallback when no group schema + matches. `services.py` shrunk from ~525 to ~85 lines. Four fixtures + (`deutschland_franchise_box`, `sleaford_yt_slug`, + `super_mario_bilingual`, `predator_space_separators` — the last one + moved from `shitty/` → `path_of_pain/`) are now marked + `pytest.mark.xfail(strict=False)` documenting PoP-grade pathologies + that SHITTY intentionally won't handle. `ReleaseFixture` grows an + `xfail_reason` field; the parametrized suite wires the xfail mark + automatically. + - **`parse_release` tokenizer is now data-driven**: it splits on any character listed in `separators.yaml` (regex character class) instead of `name.split(".")`. This makes YTS-style releases (`The Father (2020) [1080p] [WEBRip] [5.1] [YTS.MX]`),