From 4750a2c4ccc86411023e4df750518b73266d286e Mon Sep 17 00:00:00 2001 From: s8n Date: Tue, 12 May 2026 15:53:42 +0100 Subject: [PATCH] docs(34): import johnny-harris assange-guilty-plea-20220510 to stock Jellyfin Education --- ...nny-harris-assange-guilty-plea-20220510.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 playbooks/import-media/runs/johnny-harris-assange-guilty-plea-20220510.md diff --git a/playbooks/import-media/runs/johnny-harris-assange-guilty-plea-20220510.md b/playbooks/import-media/runs/johnny-harris-assange-guilty-plea-20220510.md new file mode 100644 index 0000000..4437d39 --- /dev/null +++ b/playbooks/import-media/runs/johnny-harris-assange-guilty-plea-20220510.md @@ -0,0 +1,89 @@ +# johnny-harris-assange-guilty-plea-20220510 + +Single-video YouTube import into the **STOCK** Jellyfin at `tv.s8n.ru` +(container `jellyfin-stock`), **Education** library +(`collectionType=movies`, internet providers disabled). + +Channel `Johnny Harris/` folder already had 5 files before this run, so +Jellyfin's single-file-folder caveat (`feedback_jellyfin_single_file_channel`) +does not apply — file resolves with its own filename as title. + +## Provenance + +- **Source:** YouTube — `https://www.youtube.com/watch?v=P6bVl47kdNk` +- **Channel:** Johnny Harris +- **Tool:** `yt-dlp` on onyx +- **Format selector:** `bv*[height<=1080][ext=mp4]+ba[ext=m4a]/b[height<=1080][ext=mp4]/bv*[height<=1080]+ba/b[height<=1080]/b` → `--merge-output-format mp4` (source 2160p, capped to 1080p per playbook §1e) +- **Subs:** `--write-subs --sub-langs 'en' --embed-subs --convert-subs srt` — English user-uploaded subs embedded AND sidecar `.en.srt` +- **Thumbnail:** `--write-thumbnail --convert-thumbnails jpg` → sidecar `.jpg`, Primary via Local Posters +- **Staging path on onyx:** `/home/admin/staging-jelly/Johnny Harris/` + +### Filename normalisation + +Raw YouTube title: +> `Why Julian Assange's guilty plea will change journalism forever` + +Apostrophe is the smart quote `'` (U+2019). Playbook §1f passes smart quotes +through unchanged — no rename needed. Final filename: + +`Why Julian Assange's guilty plea will change journalism forever — 20220510.mp4` + +## Target + +- **Server:** `jellyfin-stock` on nullstone, `https://tv.s8n.ru` +- **Library:** Education +- **Path on host:** `/home/user/media/education/Johnny Harris/Why Julian Assange's guilty plea will change journalism forever — 20220510.mp4` +- **Container view:** same under `/media/education/` +- **Item ID:** `6d2f161823995d547795615245dbdf94` + +### Sidecar files + +| Kind | File | +|---|---| +| Media | `… — 20220510.mp4` (207,130,253 B, ~197 MiB) | +| Subtitle | `… — 20220510.en.srt` (57,288 B) | +| Thumbnail | `… — 20220510.jpg` (110,333 B) — Primary via Local Posters | + +## Counts + +| | Before | After | Delta | +|---|---:|---:|---:| +| Education / Johnny Harris items | 5 | 6 | +1 | + +## Stream summary + +``` +Duration: 00:32:07.28, bitrate: 859 kb/s +Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main), yuv420p(tv, bt709), 1920x1080, 726 kb/s, 23.98 fps +Stream #0:1[0x2](eng): Audio: aac (LC), 44100 Hz, stereo, fltp, 127 kb/s +Stream #0:2[0x3](eng): Subtitle: mov_text (tx3g) +``` + +AV1 1080p23.98 + stereo AAC + embedded English mov_text + external .en.srt +sidecar. + +## Subtitle status + +- Embedded: yes — one English `mov_text` track. +- External sidecar: yes — `.en.srt`. +- Action: none. + +## Verification checks + +- [x] Folder/filename canonical (`/ — <YYYYMMDD>.mp4`). +- [x] Smart apostrophe preserved per §1f; no forbidden chars in path. +- [x] Permissions `user:user` 644. +- [x] Single `Scan Media Library` invocation indexed it on first pass + (no re-trigger needed — folder pre-existing, not new). +- [x] `/Items?searchTerm=Assange` returns single expected item with + `ImageTags.Primary` present, `ProviderIds` empty (expected for + Education library). +- [x] `Name` resolved from filename — no folder-name fallback (≥2 files in + channel folder). +- [ ] Direct-play in mobile / Smart-TV client not exercised. + +## Notes / surprises + +None — clean reference run. Validates that the single-file caveat +(`feedback_jellyfin_single_file_channel`) is strictly tied to one-file +channel folders; pre-populated folders parse correctly from filename.