# star-wars-maul-shadow-lord-2026-2160p

Second run of `playbooks/import-media/` — first multi-episode TV import + first replace-with-comparison flow.

## Provenance

- **Source path on onyx:** `/home/admin/Downloads/Star.Wars.Maul.Shadow.Lord.S01.2160p.DSNP.WEB-DL.DDP5.1.ENG.Atmos.ITA.SDR.H265-TheDarkLord/`
- **Release group:** TheDarkLord
- **Quality:** 2160p WEB-DL (Disney+) HEVC SDR
- **Audio:** EAC3 5.1 ENG Atmos + ITA dub
- **Subtitles:** 4× embedded subrip per episode (ITA forced + ITA + ENG + ENG)
- **Episode count:** 10 (S01E01–E10)
- **Total size:** ~21 GB

## Replace-with-comparison flow (first time)

User wanted the prior 1080p upscale kept side-by-side as a quality reference rather than overwritten. Approach:

1. Renamed existing folder `Star Wars - Maul - Shadow Lord (2026)` → `Star Wars - Maul - Shadow Lord [Before Upscale] (2026)` on nullstone.
2. Renamed all 10 existing episode files to embed `[Before Upscale]` in the show name segment (canonical filename pattern preserved otherwise).
3. Dropped `tvshow.nfo` in the renamed folder with `<title>Star Wars: Maul - Shadow Lord [Before Upscale]</title>` and `<lockdata>true</lockdata>` to prevent Jellyfin from merging the two folders via TMDb match.
4. Imported new 2160p as the canonical `Star Wars - Maul - Shadow Lord (2026)` per playbook v1.0.

Result: two distinct Series items in Jellyfin, both visible at `searchTerm=Maul`. User can compare playback between them.

## Targets

| Variant | Path | Item ID |
|---|---|---|
| New canonical (2160p) | `/home/user/media/tv/Star Wars - Maul - Shadow Lord (2026)/Season 01/` | `e993ccc0544638a2f4973b9e9f0dfe87` |
| Old [Before Upscale] | `/home/user/media/tv/Star Wars - Maul - Shadow Lord [Before Upscale] (2026)/Season 01/` | `dcc1205a6ed760e4cf21fdd2d8eaf7f8` |

Container view: `/media/tv/Star Wars - Maul - Shadow Lord (2026)/...` and `/media/tv/Star Wars - Maul - Shadow Lord [Before Upscale] (2026)/...`.

## Counts

| | Before | After | Delta |
|---|---:|---:|---:|
| SeriesCount | 10 | 11 | +1 |
| EpisodeCount | 197 | 207 | +10 |

The +1 series is the `[Before Upscale]` clone of an existing entry (folder-rename re-creates it as a fresh Series); the +10 episodes are the new 2160p canonical S01.

## Stream sample (E01 — Chapter 1: The Dark Revenge)

```
Duration: 00:28:18.91, bitrate: 12483 kb/s
Stream #0:0: Video: hevc (Main), yuv420p(tv), 3840x2160, 23.81 fps  ← TRUE 4K UHD
Stream #0:1(ita): Audio: eac3, 48000 Hz, 5.1(side), 256 kb/s
Stream #0:2(eng): Audio: eac3 (Dolby Digital Plus + Dolby Atmos), 48000 Hz, 5.1(side), 768 kb/s
Stream #0:3(ita): Subtitle: subrip (forced)
Stream #0:4(ita): Subtitle: subrip
Stream #0:5(eng): Subtitle: subrip
Stream #0:6(eng): Subtitle: subrip
```

3840×2160 8-bit SDR HEVC, 12 Mbps. Direct-play candidate on capable clients.

## Subtitle status

- 4× embedded text subrip per episode (ITA + ENG, plus forced ITA) — no external sidecar needed.
- No action — embedded text subs work natively in browser via WebVTT.

## Verification checks

- [x] Folder/filename canonical for both old + new
- [x] Permissions `user:user` 644 (file) / 755 (dir) — verified post-rsync chmod
- [ ] LibraryMonitor auto-fired — DID NOT (same as Lilo run). Forced manual `POST /Library/Refresh` returned 204. Per-item `Refresh?MetadataRefreshMode=FullRefresh` also fired on both series.
- [x] `Items/Counts` bumped Series 10→11, Episodes 197→207
- [x] Both series enumerated as separate items
- [x] New series confirmed has 10 episodes via `/Shows/{id}/Episodes`
- [ ] **TMDb / TVDB providers**: NOT auto-matched on either series (`tmdb=?  tvdb=?`). Likely cause: 2026 Disney+ Star Wars animated series may be too recent / non-canonical title format for the TMDb provider's auto-match. Operator can manually attach the right TMDb match via the Jellyfin UI (3-dot menu → "Identify").
- [x] 1 backdrop image fetched on new canonical (poster auto-grabbed from local artwork or default).
- [x] HEVC 4K stream confirmed via ffprobe; direct-play candidate.

## Notes / surprises

- LibraryMonitor failed twice in a row to detect new media (Lilo + this run). Playbook v1.0 already calls for unconditional manual `/Library/Refresh` — confirmed correct.
- Inter-series merging is suppressed by `tvshow.nfo` `<lockdata>true</lockdata>` on the [Before Upscale] folder — without that, Jellyfin would merge both folders to the same TMDb match and present one collapsed Series. Tested — separation holds.
- TMDb auto-match failed for both. This may also need a `[tmdbid-NNNN]` token in the folder name per `docs/05:54-56` if user wants pre-mapped IDs in the future. For now, manual UI match is the fix.
- Initial rsync was interrupted by the spawning agent's session timeout — second rsync resumed from 4/10 → 10/10 successfully. `rsync -a` is idempotent so the resume worked. Playbook v1.1 should call out: "if rsync fails partway, just re-run the same command — `rsync -a` skips already-transferred files".
- 21 GB transferred in two passes; second pass was the bulk (6 episodes / ~13 GB).

## Operator action

1. Open `https://arrflix.s8n.ru` → search "Maul".
2. Confirm BOTH series visible:
   - "Star Wars: Maul - Shadow Lord" (the new canonical 2160p — the "real" version)
   - "Star Wars: Maul - Shadow Lord [Before Upscale]" (the old upscaled — comparison reference)
3. If TMDb metadata desired: open each, click 3-dot → "Identify" → search TMDb manually.
4. Compare quality: play same episode (S01E01 Chapter 1) on both items — should see clear quality difference (4K vs upscaled 1080p).
5. Once happy, source download at `/home/admin/Downloads/Star.Wars.Maul.Shadow.Lord.S01.2160p.DSNP.WEB-DL.DDP5.1.ENG.Atmos.ITA.SDR.H265-TheDarkLord/` can be deleted.

## Playbook updates needed (v1.1 candidate)

- Document the "replace with [Before Upscale] comparison" pattern: rename + tvshow.nfo lockdata + new canonical folder.
- Document rsync resume idempotency: large multi-file transfers may interrupt; just re-run same command.
- Recommend `[tmdbid-NNNN]` folder-name token for any title where auto-match historically fails (recent Disney+ animated, niche releases).
