# 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 - .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.