Adds processes/ umbrella for repeatable acquisition workflows. First child is subtitles/, with recipe README (executable by Claude Code), CHANGELOG, per-show run logs, and a tested helper at lib/sub-fetch.sh. Run on American Dad: S01 (7 eps) passed, S02-S04 (51 eps) broke. Library uses Hulu/DSP season ordering; OpenSubtitles indexes by Fox airing order; plugin queries by (parent_imdb_id, season, episode) so library S02E01 returns 0 hits. v2 design = direct OpenSubtitles REST with per-episode imdb_id lookup; pending API-key registration.
85 lines
3.7 KiB
Markdown
85 lines
3.7 KiB
Markdown
# Subtitle run — `American Dad! (2005)`
|
||
|
||
Recipe version: v1
|
||
Run date: 2026-05-09
|
||
Operator: Claude Code @ onyx session, ai-lab cwd
|
||
Quota at start / end: 20 / 13 (7 downloads, all S01)
|
||
|
||
## Source
|
||
|
||
| Field | Value |
|
||
|---|---|
|
||
| Episodes | 58 (S01=7, S02=16, S03=19, S04=16) |
|
||
| Container | mkv |
|
||
| Video | HEVC Main10, 1440×1080, 23.98 fps, 4:3 SAR 1:1 |
|
||
| Audio | `eng` AAC stereo (default) + `eng` AC3 5.1 |
|
||
| Embedded subs | none |
|
||
| Existing sidecars | none |
|
||
|
||
Library uses Hulu/DSP season ordering (S1=7 eps). Original Fox order has S1=23 eps.
|
||
|
||
## Series + library context
|
||
|
||
- Series Id: `3b3bc999e9107f1a7643ac45d6427fee`
|
||
- Library: `767bffe4f11c93ef34b805451a696a4e` (TV Shows, `/media/tv`)
|
||
- Library options: `SaveSubtitlesWithMedia=true`, `SubtitleDownloadLanguages=["eng"]`, `RequirePerfectSubtitleMatch=false` ✓
|
||
- Plugin: Open Subtitles v20.0.0.0, Active, creds `Caveman5` valid
|
||
|
||
## Outcome
|
||
|
||
| Season | Eps | Subs fetched | Quality sample | Notes |
|
||
|---|---|---|---|---|
|
||
| S01 | 7 | 7 / 7 | not yet visually verified by playback (TODO) | All from `OMiCRON DVDRip` release group, fps 23.976 except S01E07 (24 fps), no SDH |
|
||
| S02 | 16 | 0 / 16 | n/a | Plugin RemoteSearch returns 0 for E01/E02/E08/E13 — broke recipe |
|
||
| S03 | 19 | 0 / 19 | n/a | Untested, expected same failure |
|
||
| S04 | 16 | 0 / 16 | n/a | Untested, expected same failure |
|
||
|
||
Net: **7 / 58 (12 %)**.
|
||
|
||
## Picks (S01)
|
||
|
||
| Episode | Sub release | Author | DLs | FPS | HI |
|
||
|---|---|---|---|---|---|
|
||
| S01E01 Pilot | `American.Dad.S01E01.DVDRip.XviD.REPACK-OMiCRON` | zetakoo_ | 154 132 | 23.976 | no |
|
||
| S01E02 Threat Levels | `American.Dad.S01E02.DVDRip.XviD.REPACK-OMiCRON` | (auto) | 89 896 | 23.976 | no |
|
||
| S01E03 Stan Knows Best | `American.Dad.S01E03.DVDRip.XviD.REPACK-OMiCRON` | (auto) | 69 317 | 23.976 | no |
|
||
| S01E04 Francines Flashback | `American.Dad.S01E04.DVDRip.XviD.REPACK-OMiCRON` | (auto) | 72 315 | 23.976 | no |
|
||
| S01E05 Roger Codger | `American.Dad.S01E05.DVDRip.XviD.REPACK-OMiCRON` | (auto) | 32 309 | 23.976 | no |
|
||
| S01E06 Homeland Insecurity | `American.Dad.S01E06.DVDRip.XviD.REPACK-OMiCRON` | (auto) | 67 778 | 23.976 | no |
|
||
| S01E07 Deacon Stan Jesus Man | `American.Dad.S01E07.DVDRip.XviD-OMiCRON` | (auto) | 65 124 | 24 | no |
|
||
|
||
All chose by recipe Step 4 picker (highest DownloadCount among non-HI / non-MT
|
||
/ non-AI / non-Forced, prefer 23.976 fps). Picker behaved consistently — no
|
||
manual override needed for S01.
|
||
|
||
## Breakage
|
||
|
||
After S01 passed, S02E01 search returned 0 results. Verified:
|
||
|
||
- ProviderIds for S02E01 in library = `Imdb=tt0511631 Tvdb=306168` (correct for "Bullocks to Stan")
|
||
- Plugin quota: 13 / 20 remaining (not exhausted)
|
||
- Plugin log shows no error — silent zero
|
||
- Same recipe worked 7 times in a row immediately prior — not a script bug
|
||
- Sample-tested S02E02 / S02E08 / S02E13 → all 0 results
|
||
|
||
Root cause: library numbering is Hulu/DSP (S1=7), OpenSubtitles indexes Fox
|
||
airing order (S1=23). Plugin queries OS with `(parent_imdb_id, season,
|
||
episode)` so library `S=2 E=1` maps to a Fox cell that doesn't exist on OS
|
||
in that S/E slot, even though the per-episode IMDB id (`tt0511631`) is real
|
||
and indexed on OS by Fox order as `S=1 E=8`.
|
||
|
||
The plugin doesn't expose per-episode-IMDB lookup, only the S/E combo path,
|
||
so there's no flag we can flip to make this work.
|
||
|
||
## Recipe amendments triggered
|
||
|
||
- **v1 → v2**: process needs a season-numbering pre-check (Step 3), and a
|
||
fallback fetch path that doesn't rely on plugin S/E mapping. See
|
||
`CHANGELOG.md` v2 design choice between direct OS REST (recommended) and
|
||
library re-numbering.
|
||
|
||
## Followups
|
||
|
||
- [ ] visually verify a sample S01 sub plays in sync (one ep per recipe rule §6)
|
||
- [ ] decide v2 path (REST vs renumber)
|
||
- [ ] sub S02–S04 (51 eps) once v2 lands
|