Adds lib/sub-a7d-fetch.py: free, no-daily-cap path via subliminal's addic7ed provider (anonymous). Uses OpenSubtitles REST search-only (no quota cost) to translate library S/E to the show's primary catalogue numbering, then drives subliminal to download from Addic7ed and writes sidecars direct to nullstone via SSH. Picker quirks: subliminal series-name matcher is broken by '!' in the title, so the script strips it before building the synthetic Video.fromname() string. OS feature_details S/E happens to align with Addic7ed's indexing for the test show (American Dad). Recipe README now reflects three paths in cheapest-first order: v3 Addic7ed, v2 OS REST (20/day), v1 plugin. American Dad run log updated to 49/58 (S01 7/7 v1, S02 16/16 mixed v2/v3, S03 16/19 v3, S04 10/16 v3). 9 misses identified, deferred to next OS REST quota window. |
||
|---|---|---|
| .. | ||
| subtitles | ||
| README.md | ||
processes/ — repeatable acquisition workflows
This folder holds the canonical recipes for acquiring external content for
the ARRFLIX library: subtitles, artwork, metadata, episode stills, etc.
Internal ops (encoding, importing, theming) stay in bin/ and docs/.
Each process is its own sub-folder with three files:
| File | Purpose |
|---|---|
README.md |
The canonical recipe. Step-by-step, executable by Claude Code. Always reflects the latest version. |
CHANGELOG.md |
Why the recipe changed, version-by-version. One entry per breakage that forced a revision. |
runs/<show>.md |
Evidence log: what happened when this recipe was applied to a specific show. |
Recipes evolve via the iteration model: apply to a show, succeed or break, amend the recipe to handle the new case + every prior case, retry. A recipe that "just works" is one that has survived every show in the library without amendment for a full sweep.
Children
| Process | Status | Last touched |
|---|---|---|
subtitles/ |
v3 — Addic7ed (free, no daily cap) added as primary, OS REST as fallback. AD 49/58 subbed; remaining 9 land via OS REST after quota reset | 2026-05-09 |