legacy-arrflix/playbooks/import-media/runs/archer-s02-2009.md
s8n 3079f5009b playbooks/import-media: log Archer S02 (2009) run
13 eps imported, all matched on TVDB/IMDb. Run notes flag two
new playbook bugs found: /Library/Refresh is a silent no-op (must
trigger /ScheduledTasks/Running/<id> directly) and /Items/Counts
is scope-cached (use /Shows/<id>/Episodes?Season=N for verify).
Pending follow-ups recorded for v1.1 playbook revision.
2026-05-10 05:06:05 +01:00

103 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# archer-s02-2009
Second run of `playbooks/import-media/` v1.0. First TV-season run (Lilo & Stitch was a movie).
## Provenance
- **Source path on onyx:** `/home/admin/Downloads/Archer Season 2 [1080p AI 10bit S91 Joy]/`
- **Release group:** Joy (AI-upscale tag `S91`)
- **Quality:** 1080p HEVC 10-bit (Main 10), AI-upscaled from SD source
- **Audio:** HE-AAC 5.1 English
- **Embedded subs:** 3× DVD bitmap (eng, spa, fre)
## Target
- **Library:** tv
- **Path:** `/home/user/media/tv/Archer (2009)/Season 02/`
- **Container view:** `/media/tv/Archer (2009)/Season 02/`
- **Series Item ID:** (existed pre-import; not re-fetched this run)
- **TVDB / TMDb:** matched on existing `Archer (2009)` series folder (Season 1 already in lib)
## Files imported (13)
```
Archer (2009) - S02E01 - Swiss Miss.mkv
Archer (2009) - S02E02 - A Going Concern.mkv
Archer (2009) - S02E03 - Blood Test.mkv
Archer (2009) - S02E04 - Pipeline Fever.mkv
Archer (2009) - S02E05 - The Double Deuce.mkv
Archer (2009) - S02E06 - Tragical History.mkv
Archer (2009) - S02E07 - Movie Star.mkv
Archer (2009) - S02E08 - Stage Two.mkv
Archer (2009) - S02E09 - Placebo Effect.mkv
Archer (2009) - S02E10 - El Secuestro.mkv
Archer (2009) - S02E11 - Jeu Monégasque.mkv
Archer (2009) - S02E12 - White Nights.mkv
Archer (2009) - S02E13 - Double Trouble.mkv
```
Total ~2.8 GiB.
## Counts
| | Before | After | Delta |
|---|---:|---:|---:|
| Episodes in `Archer (2009)` S02 | 0 | 13 | +13 ✅ |
| SeriesCount | 12 | 12 | 0 (series existed) |
| MovieCount | 4 | 4 | 0 |
| `/Items/Counts.EpisodeCount` global | 230 | 230 (stale) | endpoint scope-cached, not authoritative |
**Authoritative verify:** `GET /Shows/9d22c409d5319c3c6068cfd38569714f/Episodes?Season=2` → 13 items, all with `ProviderIds.Tvdb`+`Imdb`+`TvRage`, Primary image present, paths resolve.
## Stream summary (S02E01 sample)
```
Duration: 00:21:03.48, bitrate: 1452 kb/s
Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv), 1920x1080, SAR 1:1 DAR 16:9, 23.98 fps
Stream #0:1(eng): Audio: aac (HE-AAC), 48000 Hz, 5.1, fltp
Stream #0:2(eng): Subtitle: dvd_subtitle (dvdsub), 1920x1080
Stream #0:3(spa): Subtitle: dvd_subtitle (dvdsub), 1920x1080
Stream #0:4(fre): Subtitle: dvd_subtitle (dvdsub), 1920x1080
```
HEVC 10-bit Main10 — direct-play on most clients. DVD-bitmap subs (`dvd_subtitle`) — server burn-in works, but per ARRFLIX subtitle style (1× plain English `.srt` only, no SDH/forced) these may need WhisperX text rebuild later. Add to `playbooks/subtitles/STOPGAP-SUBS.md` if user wants text subs.
## Subtitle status
- Embedded: yes — 3× DVD bitmap (eng, spa, fre)
- External sidecar: none yet
- Action: none for now. Per ARRFLIX style, only English sidecar `.srt` is canonical; embedded multi-lang DVD-subs do not satisfy that. Defer to subtitle playbook if user wants text-based eng.
## Verification checks
- [x] Folder/filename canonical (`Archer (2009)/Season 02/Archer (2009) - S02E<NN> - <Title>.mkv`)
- [x] Permissions `user:user` 644 (file) / 755 (dir) — `ls -la` post-rsync confirmed
- [ ] LibraryMonitor auto-fired — **DID NOT trigger** (same as Lilo run; bind-mount inotify flake confirmed as a pattern, not one-off)
- [x] `POST /Library/Refresh` returned 204 but did NOT trigger task (silent no-op)
- [x] `POST /ScheduledTasks/Running/<scan-task-id>` returned 204 → task ran → episodes added
- [x] All 13 eps indexed with `Tvdb`+`Imdb`+`TvRage` providers populated
- [x] Per-episode Primary artwork present (`ImageTags.Primary` set on all 3 sampled)
- [x] HEVC 10-bit + HE-AAC → direct-play candidate on most clients
## Notes / surprises
- LibraryMonitor flake confirmed: same as Lilo run. v1.0 playbook wording ("auto-refreshes ~13 s") is wrong; force-refresh is mandatory. Update to README.
- **`POST /Library/Refresh` is also a silent no-op** in this Jellyfin build. Returned 204 but the `Scan Media Library` task didn't fire and counts stayed flat. Had to fetch the task ID from `/ScheduledTasks` and POST to `/ScheduledTasks/Running/<id>` directly. Update playbook to use task-trigger endpoint, not `/Library/Refresh`.
- **`/Items/Counts` is scope-cached/stale** — kept returning 230 even after 13 new eps were indexed. Use `/Shows/<series-id>/Episodes?Season=N` as authoritative count source, not `/Items/Counts`.
- API token retrieval: no docs in repo for getting an admin token. ApiKeys table empty (no operator-created keys). Pulled an active web-session token from `Devices` table via temp Alpine container mounting `jellyfin.db` read-only (`docker run --rm --userns=host -v ...:ro alpine sh -c "apk add sqlite && sqlite3 /db.sqlite ..."`). Per-session tokens work as `X-Emby-Token` for admin operations when source user has admin role. Worth documenting in ADMIN-GUIDE — or better, create an explicit ApiKeys row labelled "import-pipeline" with permanent rotation policy.
- Source filenames had double-space before `[1080p ...]` group tag — handled by `${f%% [*}` parameter expansion. May need to be more lenient in future imports (single-space variants, no-space variants).
- HE-AAC audio at 5.1 may transcode-pressure some clients (LG WebOS notably struggles with HE-AAC multichannel). Watch for transcode lines in `docker logs jellyfin | grep transcode` if Archer playback shows lag.
- Source download on laptop retained per `ADMIN-GUIDE.md:74` — DO NOT delete `/home/admin/Downloads/Archer Season 2 ...` until user confirms playback in browser.
## Operator action
User to verify in browser: `https://arrflix.s8n.ru` → Archer (2009) → Season 02 → spot-check episodes 1, 7, 13 → confirm artwork + Play. After confirmed, source download on onyx can be deleted.
## Pending follow-ups
1. Update `playbooks/import-media/README.md`:
- Drop "LibraryMonitor auto-fires" wording.
- Replace `/Library/Refresh` with `/ScheduledTasks/Running/<scan-task-id>` (true task trigger).
- Add note: do NOT use `/Items/Counts` as verification source (cached); use `/Shows/<id>/Episodes?Season=N` per-series.
2. Document API-token retrieval in `ADMIN-GUIDE.md` (DB pull recipe or instructions to mint an ApiKey row labelled `import-pipeline`).
3. Consider adding a `bin/import-tv.sh` that wraps stage → rsync → chmod → task-trigger → poll-by-series.