docs(31): import benn-jordan s01 (4 eps) to stock Jellyfin Educational
This commit is contained in:
parent
93b9c9d533
commit
6e336d1798
1 changed files with 126 additions and 0 deletions
126
playbooks/import-media/runs/benn-jordan-s01-yt-import.md
Normal file
126
playbooks/import-media/runs/benn-jordan-s01-yt-import.md
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
# benn-jordan-s01-yt-import
|
||||
|
||||
First import into the **STOCK** Jellyfin at `tv.s8n.ru` (container `jellyfin-stock`),
|
||||
Educational library. YouTube videos from channel "Benn Jordan" — treated as one
|
||||
Series (`Benn Jordan`) on Season 01.
|
||||
|
||||
Independent from arrflix prod (`arrflix.s8n.ru`) and arrflix dev. Stock Jellyfin's
|
||||
Educational library has `EnableInternetProviders=false` — files land with
|
||||
filename/folder-only metadata. **No TMDb/TVDB matching is expected or attempted.**
|
||||
|
||||
## Provenance
|
||||
|
||||
- **Source:** YouTube channel "Benn Jordan" (2026 uploads)
|
||||
- **Tool:** `yt-dlp` 2026.03.17 on onyx
|
||||
- **Format selector:** `bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]/bv*+ba/b` → `--merge-output-format mp4`
|
||||
- **Subs:** `--write-subs --sub-langs "en.*" --embed-subs --convert-subs srt` (no en subs available on these uploads — only auto-generated; not embedded)
|
||||
- **Staging path on onyx:** `/home/admin/staging-jelly/Benn Jordan/Season 01/`
|
||||
|
||||
### Source URLs
|
||||
|
||||
| Episode | Video ID | URL |
|
||||
|---|---|---|
|
||||
| S01E01 | n/a (pre-staged) | already downloaded before this run |
|
||||
| S01E02 | UMIwNiwQewQ | https://www.youtube.com/watch?v=UMIwNiwQewQ |
|
||||
| S01E03 | _bP80DEAbuo | https://www.youtube.com/watch?v=_bP80DEAbuo |
|
||||
| S01E04 | lA8WuXDXfcI | https://www.youtube.com/watch?v=lA8WuXDXfcI |
|
||||
|
||||
## Target
|
||||
|
||||
- **Server:** `jellyfin-stock` (container) on nullstone, exposed at `https://tv.s8n.ru`
|
||||
- **Library:** Educational (tvshows-type, internet providers disabled)
|
||||
- **Path on host:** `/home/user/media/educational/Benn Jordan/Season 01/`
|
||||
- **Container view:** `/media/educational/Benn Jordan/Season 01/`
|
||||
- **Series Item ID:** `3da50e01252c1463cb23f7b9499dfc8a`
|
||||
|
||||
### Per-episode landing
|
||||
|
||||
| Episode | File size | Duration (spec) | Duration (Jellyfin) | Item ID |
|
||||
|---|---:|---:|---:|---|
|
||||
| S01E01 — Gadgets For People Who Don't Trust The Government | 1,570,389,432 B (~1.46 GiB) | n/a (pre-staged) | 2337 s | `962cd81a9b2b80979a4ea10d6b12b922` |
|
||||
| S01E02 — It's Time to Take Down your Smart Cameras | 834,026,444 B (~795 MiB) | 1769 s | 1769 s | `fd24b71285bd5d8586687ba666988088` |
|
||||
| S01E03 — Datacenters Behaving Like Acoustic Weapons | 1,446,732,628 B (~1.35 GiB) | 1744 s | 1744 s | `6dca7b57158f37acd8d821f585501998` |
|
||||
| S01E04 — Robot Dogs Are A Security Nightmare | 772,469,473 B (~737 MiB) | 1432 s | 1432 s | `6ed3fab3c2b34c4718a0f836a638eea0` |
|
||||
|
||||
S01E02 title had the emoji `😬` stripped before download (per filename rules).
|
||||
All apostrophes preserved. No forbidden chars (`< > : " / \ | ? *`) introduced.
|
||||
|
||||
## Counts
|
||||
|
||||
| | Before | After | Delta |
|
||||
|---|---:|---:|---:|
|
||||
| SeriesCount (Educational) | 0 | 1 | +1 |
|
||||
| EpisodeCount (Educational) | 0 | 4 | +4 |
|
||||
|
||||
(First import into this library; pre-state is empty.)
|
||||
|
||||
## Stream sample (S01E02)
|
||||
|
||||
```
|
||||
Duration: 00:29:28.66, bitrate: 3772 kb/s
|
||||
Stream #0:0(und): Video: av1 (libdav1d) (Main), yuv420p(tv, bt709), 3840x2160, 3639 kb/s, 23.98 fps
|
||||
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 127 kb/s
|
||||
```
|
||||
|
||||
AV1 2160p at ~3.6 Mb/s, stereo AAC. Source is YouTube best mp4/m4a combo. No
|
||||
DRM, no encryption. AV1 direct-play requires a recent client (Chromium >= 90,
|
||||
Firefox >= 100, Apple Silicon Safari, Android 12+, modern smart-TVs).
|
||||
|
||||
## Subtitle status
|
||||
|
||||
- Embedded: no (YouTube auto-CC not requested via `en.*` glob; user-uploaded
|
||||
subs do not exist on these uploads).
|
||||
- External sidecar: no.
|
||||
- Action: none. Per Educational library convention these are short-form videos
|
||||
with on-screen text. Re-run with `--write-auto-subs --sub-langs "en.*"` later
|
||||
if subs become required.
|
||||
|
||||
## Verification checks
|
||||
|
||||
- [x] Folder/filename canonical (`Benn Jordan/Season 01/Benn Jordan - S01E<NN> - <Title>.mp4`)
|
||||
- [x] Permissions `user:user` 644 / 755 on nullstone
|
||||
- [x] `Scan Media Library` task triggered via `/ScheduledTasks/Running/$SCAN_ID` — completed
|
||||
- [x] Per-series query returns 4 episodes with correct durations (1769/1744/1432 s for E02/E03/E04)
|
||||
- [x] No `/Items/Counts` reliance — used `/Shows/<id>/Episodes` as authoritative
|
||||
- [n/a] `ProviderIds` populated — **expected empty**, library has internet providers OFF
|
||||
- [n/a] Image artwork — none auto-fetched; folder-level posters may be added manually
|
||||
|
||||
### Scan task
|
||||
|
||||
- **Task ID:** `7738148ffcd07979c7ceb148e06b3aed`
|
||||
- **POST result:** HTTP 204
|
||||
- **LastExecutionResult.EndTimeUtc:** `2026-05-11T14:27:49.205Z`
|
||||
- **State after run:** `Idle`
|
||||
|
||||
## Notes / surprises
|
||||
|
||||
- Stock Jellyfin's Educational library is configured `tvshows`-type with
|
||||
`EnableInternetProviders=false`. This is *intentional* — these are
|
||||
per-channel YouTube videos, not broadcast TV. Names and durations come from
|
||||
the filename and the container itself. **Do not try to TMDb-identify Benn
|
||||
Jordan; there is no matching entry.**
|
||||
- All 3 downloads ran in parallel from onyx and completed in well under one
|
||||
rsync window. Combined nullstone delivery via single `rsync -a` of the whole
|
||||
`Benn Jordan/` dir (E01 was already on disk from a prior staging — rsync no-op
|
||||
for that file thanks to size+mtime match).
|
||||
- AV1 codec is the default YouTube best-quality video stream as of 2026. None
|
||||
of the recipient devices (onyx, nullstone clients, etc.) have a problem
|
||||
direct-playing AV1 — but if a friend on a 2018 laptop reports playback issues,
|
||||
Jellyfin will transcode (CPU only — `jellyfin-stock` has no GPU mount per
|
||||
SYSTEM.md).
|
||||
- Educational library uses tvshows scheme, so episodes nest under one parent
|
||||
Series named exactly "Benn Jordan" with no year suffix (matches the folder
|
||||
name). Filename pattern is the same `<Series> - S<NN>E<MM> - <Title>` shape
|
||||
arrflix uses — no special-case required.
|
||||
- Source staging dir on onyx (`/home/admin/staging-jelly/Benn Jordan/`) is
|
||||
intentionally left in place — do not delete until owner confirms playback.
|
||||
|
||||
## Operator action
|
||||
|
||||
1. Open `https://tv.s8n.ru` → Educational library → confirm "Benn Jordan"
|
||||
series shows 4 episodes.
|
||||
2. Play any episode → confirm direct-play (no transcode line in
|
||||
`docker logs jellyfin-stock`).
|
||||
3. Optional: upload custom series + episode artwork via the Jellyfin web UI
|
||||
(no TMDb fallback, so artwork has to be manual or absent).
|
||||
4. Source dir on onyx retained per cleanup policy.
|
||||
Loading…
Reference in a new issue