LockData-pattern manual fix for the disney+/aired numbering mismatch between the source release and the existing series record.
87 lines
5.8 KiB
Markdown
87 lines
5.8 KiB
Markdown
# Futurama (1999) — S08–S11 import (Disney+ WEB-DL)
|
||
|
||
**Date:** 2026-05-13
|
||
**Operator:** s8n
|
||
**Library:** `tv` (`/home/user/media/tv/`)
|
||
**Target series:** Futurama (1999) — id `41953789dc06ede61bd1165fe5b96b2d`
|
||
|
||
---
|
||
|
||
## Source
|
||
|
||
- Path on onyx: `/home/admin/Downloads/Futurama Season 1-11 Colection 1080p WEBDL/`
|
||
- Release: `Futurama (1999) Season 8/9/10/11 (1080p DSNP WEB-DL x265 HEVC 10bit EAC3 5.1 t3nzin) [ext.to]`
|
||
- Magnet btih: `582B5D7C462473F13E35439F0D83F35A3888E6E3` (and sibling torrents per season)
|
||
- Folder size: 19.7 GB / 49 files
|
||
- Stream profile: HEVC Main10 1080p, EAC3 5.1 256 kb/s, SubRip eng sidecar embedded
|
||
|
||
Episode breakdown:
|
||
|
||
| Season | Files | Air era | Disney+ scheme |
|
||
|---|---|---|---|
|
||
| S08 | 13 | 2010–2011 (CC reboot) | "Neutopia" → "Reincarnation" |
|
||
| S09 | 13 | 2012 | "The Bots and the Bees" → "Naturama" |
|
||
| S10 | 13 | 2013 | "2-D Blacktop" → "Meanwhile" |
|
||
| S11 | 10 | 2023 (Hulu revival) | "The Impossible Stream" → "All The Way Down" |
|
||
|
||
## Numbering scheme conflict (logged for future ops)
|
||
|
||
Source uses **Disney+ / production order** where the CC reboot runs are S08/S09/S10 and the 2023 Hulu revival is S11. Existing `Futurama (1999)` library was built under **TVDB Default / aired order** — those same eps live under S06 + S07 (S06 ends with "Reincarnation", S07 ends with "Meanwhile").
|
||
|
||
Imported per user direction: keep source's S08–S11 numbering as labelled. JF parser extracted the season number from the path (`Season 08/`) but TVDB couldn't match `S08–S11` against the library's existing series record → all 49 eps landed with `IndexNumber=null`, `Name="Futurama"`, no `ProviderIds`. Fix described below.
|
||
|
||
## Steps executed
|
||
|
||
1. **Pre-flight** — torrent download monitored (qBt pid 13686, magnet pinned only S08; auto-completed at 23:04). Confirmed file integrity post-completion: 49 of 49 mkvs intact, all 21:40 runtime for S08–S10, 24:00 runtime for S11 (Hulu revival).
|
||
2. **Stage on onyx** — hardlinked into `/home/admin/staging-jelly/Futurama (1999)/Season {08,09,10,11}/` and renamed per playbook §1b: `Futurama (1999) - S<NN>E<MM> - <Episode Title>.mkv`. Titles read from each mkv's `format_tags=title`. Per playbook §1f: replaced `:` → ` - ` in "T.: The Terrestrial" → "T. - The Terrestrial".
|
||
3. **rsync** — `rsync -a --no-owner --no-group /home/admin/staging-jelly/Futurama (1999)/ user@nullstone:/home/user/media/tv/Futurama (1999)/`. Transfer: 19.7 GB / 49 files / 12:17 min / exit 0.
|
||
4. **Perms** — `chmod 644` files / `755` dirs. Final: `user user 4096 May 13 23:11 Season {08..11}`.
|
||
5. **Scan** — `POST /ScheduledTasks/Running/7738148ffcd07979c7ceb148e06b3aed` → HTTP 204. Idle reached at 23:24:57.
|
||
6. **Verify** — Per-season counts matched on-disk: S08=13, S09=13, S10=13, S11=10. **But:** every ep had `Name="Futurama"`, `IndexNumber` missing, `ProviderIds=[]`, no Primary image.
|
||
7. **Series-level `FullRefresh&Recursive=true` fired** at 23:25 — no effect after 10 min. Plugin (Intro Skipper) had successfully analysed every file (logs show all 49 paths), so JF *had* file→episode bindings; TVDB just didn't yield S08–S11 metadata for this series record.
|
||
8. **Manual lock per the LFP pattern** (memory `feedback_jellyfin_lex_fridman_se_lock`):
|
||
- For each of 49 items: GET `/Users/<uid>/Items/<id>` → set `Name`, `IndexNumber`, `ParentIndexNumber` (from filename regex `S(\d{2})E(\d{2}) - (.+)\.mkv`), `LockData=true` → POST `/Items/<id>`.
|
||
- Script: `fix_futurama_remote.py` (urllib via container IP `172.20.0.20:8096`).
|
||
- Result: `fixed=49 errs=0`.
|
||
|
||
### Single-item verification (random sample)
|
||
|
||
```
|
||
GET /Users/2ad8.../Items/026b01957306ce8172a1b74c3770993e
|
||
Name: The Impossible Stream
|
||
IndexNumber: 1
|
||
ParentIndexNumber: 11
|
||
LockData: True
|
||
LockedFields: []
|
||
```
|
||
|
||
### ffprobe excerpt (representative — S08E01)
|
||
|
||
```
|
||
Container: mkv size=372458696 duration=1299.904s bitrate=2.29Mb/s
|
||
Stream 0: hevc Main10 1920x1080
|
||
Stream 1: eac3 6ch 5.1(side) 256kb/s
|
||
Stream 2: subrip (embedded, eng)
|
||
Stream 3: png 600x338 (chapter thumbnail)
|
||
```
|
||
|
||
## Subtitle status
|
||
|
||
All 49 mkvs ship embedded SubRip eng. No external sidecars added. Library `tv` keeps internet-provider sub fetch enabled, so OpenSubtitles fills any gaps on first play. No STOPGAP-SUBS entry needed.
|
||
|
||
## Anything unusual
|
||
|
||
- **Numbering scheme drift between source and existing series record** — `IndexNumber` had to be set manually via the `/Items/<id>` POST + `LockData=true` route for all 49 eps. Future imports under the Disney+ scheme into a TVDB-default-numbered series will hit the same gap; reuse `fix_futurama_remote.py`.
|
||
- **`jellyfin-stock` container has no python3** — `docker exec` python attempt failed (`exec: "python3": executable file not found in $PATH`). Workaround: run the script on the nullstone host and target the container's bridge IP (`172.20.0.20:8096`), which is reachable from the host.
|
||
- **Series-level `FullRefresh&Recursive=true` is non-blocking and silent** — it returns 204 immediately but doesn't drive episode-level TVDB matching when the scheme mismatch is already locked in. Not relied on post-2026-05-13.
|
||
- **Quality check ahead of import** — three sampled eps confirmed source bitrate (2.29 / 2.38 / 2.59 Mb/s) is slightly *below* the existing JF copies of the same content (2.31 / 2.44 / 3.22 Mb/s, BluRay-source HEVC). For overlapping content the original JF copies remain canonical; the S08–S11 import is alongside, not replacement.
|
||
|
||
## Verification checklist
|
||
|
||
- [x] Folder + filename match canonical pattern.
|
||
- [x] Permissions `user:user`, 644/755.
|
||
- [x] No `.eng.srt` sidecars (eng subs are embedded SubRip).
|
||
- [x] `Scan Media Library` triggered via task id `7738148ffcd07979c7ceb148e06b3aed`, advanced to Idle.
|
||
- [x] Per-season `/Shows/<id>/Episodes?Season=N` returns matching count and names.
|
||
- [x] All 49 items `LockData=True` after manual fix.
|
||
- [ ] Direct-play in client — not yet user-confirmed.
|