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.
This commit is contained in:
parent
4750a2c4cc
commit
675e6ab1ec
1 changed files with 127 additions and 0 deletions
|
|
@ -0,0 +1,127 @@
|
|||
# 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.
|
||||
Loading…
Reference in a new issue