legacy-arrflix/playbooks/import-media/runs/lex-fridman-podcast-s01e491-openclaw.md
s8n 675e6ab1ec
Some checks are pending
secret-scan / gitleaks (HEAD + history) (push) Waiting to run
secret-scan / detect-secrets (entropy + cross-tool) (push) Waiting to run
secret-scan / summary (push) Blocked by required conditions
docs(35): import lex-fridman-podcast S01E491 OpenClaw to stock Jellyfin Podcasts
Episode resolved as Type=Episode under correct Series + Season but JF
MovieResolver did not parse SxxEyy from filename — ParentIndexNumber and
IndexNumber were null. Series-level + item-level full refresh did not fix.
Required manual API override (PUT IndexNumber=491, ParentIndexNumber=1,
LockData=true).

All 5 prior LFP episodes already have LockData=true — this appears to be
the established pattern for new Lex Fridman Podcast episodes. Generalise
into playbook §1c after one more confirmation.
2026-05-12 16:47:48 +01:00

127 lines
6 KiB
Markdown

# lex-fridman-podcast-s01e491-openclaw
Single-episode YouTube import into the **STOCK** Jellyfin at `tv.s8n.ru`
(container `jellyfin-stock`), **Podcasts** library
(`collectionType=tvshows`, internet providers disabled).
Extends the existing `Lex Fridman Podcast` Season 01 series — sparse numbering
already in use (400 / 461 / 478 / 479 / 481). Adds episode 491.
## Provenance
- **Source:** YouTube — `https://www.youtube.com/watch?v=YFjfBk8HI5o`
- **Channel / Series:** Lex Fridman Podcast
- **Episode:** #491 "OpenClaw: The Viral AI Agent that Broke the Internet — Peter Steinberger"
- **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 native 1080p)
- **Subs:** `--write-subs --sub-langs 'en' --embed-subs --convert-subs srt` — user-uploaded English subs embedded AND sidecar `.en.srt`
- **Thumbnail:** `--write-thumbnail --convert-thumbnails jpg` → sidecar `.jpg`, Primary via Local Posters
- **yt-dlp output template:** `-o "Lex Fridman Podcast - S01E491 - OpenClaw - The Viral AI Agent that Broke the Internet - Peter Steinberger.%(ext)s"` (downloaded straight to canonical filename — no post-download rename needed)
- **Staging path on onyx:** `/home/admin/staging-jelly/Lex Fridman Podcast/Season 01/`
### Filename normalisation
Raw YouTube title:
> `OpenClaw: The Viral AI Agent that Broke the Internet - Peter Steinberger | Lex Fridman Podcast #491`
Applied playbook §1f rules:
- Dropped suffix ` | Lex Fridman Podcast #491` (redundant with `Lex Fridman Podcast - S01E491 -` prefix).
- Replaced ASCII `:` after `OpenClaw` with ` - ` (forbidden char).
- Pipe `|` not present in episode-title portion after suffix drop.
Final filename (per playbook §1c numbered-podcast pattern):
`Lex Fridman Podcast - S01E491 - OpenClaw - The Viral AI Agent that Broke the Internet - Peter Steinberger.mp4`
## Target
- **Server:** `jellyfin-stock` on nullstone, `https://tv.s8n.ru`
- **Library:** Podcasts (`collectionType=tvshows`, `EnableInternetProviders=false`)
- **Series Item ID:** `6c01ab0084d87b94c124948f64f87c15`
- **Season Item ID:** `67d2aaba01fe73f2ba90e36514823632`
- **Episode Item ID:** `fbeeffb256a04f103987f9b22d0bd442`
- **Path on host:** `/home/user/media/podcasts/Lex Fridman Podcast/Season 01/Lex Fridman Podcast - S01E491 - OpenClaw - The Viral AI Agent that Broke the Internet - Peter Steinberger.mp4`
### Sidecar files
| Kind | File |
|---|---|
| Media | `… - S01E491 - … .mp4` (749,120,258 B, ~715 MiB) |
| Subtitle | `… - S01E491 - … .en.srt` (270,915 B) |
| Thumbnail | `… - S01E491 - … .jpg` (64,605 B) — Primary via Local Posters |
## Counts
| | Before | After | Delta |
|---|---:|---:|---:|
| Lex Fridman Podcast / Season 01 episodes | 5 | 6 | +1 |
## Stream summary
```
Duration: 03:15:51.67, bitrate: 509 kb/s
Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main), yuv420p(tv, bt709), 1920x1080, 375 kb/s, 29.97 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 1080p29.97 + stereo AAC + embedded English mov_text + external .en.srt
sidecar. 3:15:52 runtime, ~715 MiB — well under the 1080p cap budget for
long-form content.
## Subtitle status
- Embedded: yes — one English `mov_text` track from `--embed-subs`.
- External sidecar: yes — `.en.srt`.
- Action: none. WhisperX rebuild not required (channel-published subs trusted
for podcast transcripts; per `feedback_subtitle_accuracy_priority` only
auto-CC is rejected — these are author-provided).
## Verification checks
- [x] Folder/filename canonical (`Lex Fridman Podcast - S01E491 - <Title>.mp4` per playbook §1c).
- [x] No forbidden chars in path.
- [x] Permissions `user:user` 644.
- [x] `Scan Media Library` triggered, `State=Idle`, episode appeared in
`/Shows/<id>/Episodes?Season=1`.
- [x] `/Items?searchTerm=OpenClaw` returns the expected single Episode item.
- [x] `ImageTags.Primary` present (Local Posters from sidecar `.jpg`).
- [x] `Type=Episode`, `SeriesId` / `SeasonId` correctly attached.
- [x] `ParentIndexNumber=1`, `IndexNumber=491` populated (see Notes — required
manual override, JF scan did not parse SxxEyy from filename despite
the filename containing `S01E491`).
- [x] `LockData=true` set so future series refresh cannot revert the SE.
- [ ] Direct-play in mobile / Smart-TV client not exercised.
## Notes / surprises
### JF MovieResolver did not parse `S01E491` from filename — manual SE override required
After the `Scan Media Library` pass, the episode resolved as `Type=Episode`
attached to the correct Series + Season, but `ParentIndexNumber` and
`IndexNumber` were both `null`. The other 5 episodes in Season 01 (E400 /
E461 / E478 / E479 / E481) all have the same `Lex Fridman Podcast - S<NN>E<NN>
- <Title>.mp4` pattern and parsed correctly — root cause unclear.
Tried fixes that did **not** work:
1. Series-level `POST /Items/<seriesId>/Refresh?MetadataRefreshMode=FullRefresh&Recursive=true` → state did not change.
2. Item-level `POST /Items/<episodeId>/Refresh?MetadataRefreshMode=FullRefresh&ReplaceAllMetadata=true` → state did not change.
Working fix — direct API override:
```bash
EP_ID=fbeeffb256a04f103987f9b22d0bd442
curl -sf -H "X-Emby-Token: $TOK" \
"$SERVER_URL/Users/$USER_ID/Items/$EP_ID" \
| jq '.ParentIndexNumber = 1 | .IndexNumber = 491 | .LockData = true' \
| curl -sf -X POST -H "X-Emby-Token: $TOK" -H 'Content-Type: application/json' \
--data @- "$SERVER_URL/Items/$EP_ID" # → HTTP 204
```
Inspecting the 5 known-good episodes, **all of them** already have
`LockData=true`, so this is the established pattern for the `Lex Fridman
Podcast` series — every new episode appears to need the override. Generalise
to a post-import step in the playbook §1c "numbered podcast" section.
Possible upstream cause: episode-resolver in JF 10.11.8 may bail when the
filename contains additional hyphen-separated segments that resemble more
SxxEyy tokens. Investigate after second occurrence.