import-log: youtube-sassy-the-sasquatch 2026-05-08 — eps 1-5 (ep6 age-restricted)

This commit is contained in:
s8n 2026-05-08 22:03:42 +01:00
parent 6a54cae82e
commit cdf415c862
2 changed files with 189 additions and 0 deletions

View file

@ -0,0 +1,147 @@
# 2026-05-08 — YouTube import: Sassy the Sasquatch (2022)
## Source
| Field | Value |
|---|---|
| Upstream platform | YouTube |
| Channel name | THE BIG LEZ SHOW OFFICIAL |
| Channel id | `UCV1G6JkQtB2nobFm3MGNsBQ` |
| Playlist title | `SASSY THE SASQUATCH` |
| Playlist id | `PLGMC7oz7XpmDMGrALMQiNXCi9p7aqkWbj` |
| Playlist URL | `youtube.com/playlist?list=PLGMC7oz7XpmDMGrALMQiNXCi9p7aqkWbj` (no clickable link by policy) |
## Date imported
`2026-05-08`
## Episodes imported
| # | YouTube id | YouTube title | Canonical filename | Jellyfin episode id | Resolution | Size (bytes) |
|---|---|---|---|---|---|---|
| 1 | `9OmR0ypCyOU` | `SASSY THE SASQUATCH \| EP01 \| SEEN A DINOSAUR` | `Sassy the Sasquatch (2022)/Season 01/Sassy the Sasquatch (2022) - S01E01 - Seen a Dinosaur.mkv` | `2ef02448506b543f39b9372c2b0cdef2` | 1920x1080 | 36,434,608 |
| 2 | `tvCUmH92HfU` | `SASSY THE SASQUATCH \| EP02 \| WATER YOU TALKINABEET` | `Sassy the Sasquatch (2022)/Season 01/Sassy the Sasquatch (2022) - S01E02 - Water You Talkinabeet.mkv` | `3b7809d6840e5ee230fbba951fee227e` | 1920x1080 | 28,928,772 |
| 3 | `QvIgmc2G6lk` | `SASSY THE SASQUATCH \| EP03 \| WALKABEET` | `Sassy the Sasquatch (2022)/Season 01/Sassy the Sasquatch (2022) - S01E03 - Walkabeet.mkv` | `4a0188c67c1d6d08000997177143d6f2` | 1920x1080 | 22,663,417 |
| 4 | `RU9zuIqPcJw` | `SASSY THE SASQUATCH \| EP04 \| AREA 51` | `Sassy the Sasquatch (2022)/Season 01/Sassy the Sasquatch (2022) - S01E04 - Area 51.mkv` | `3dc35c7341f4476e6218840dceb63163` | 1920x1080 | 30,784,810 |
| 5 | `vUyJq1kd-bc` | `SASSY THE SASQUATCH \| EP05 \| SNOW WORRIES` | `Sassy the Sasquatch (2022)/Season 01/Sassy the Sasquatch (2022) - S01E05 - Snow Worries.mkv` | `f79032d3bfbed6371e11375bdfc1b8a6` | 1920x1080 | 36,913,187 |
| 6 | `bi_HbwZDdPg` | `SASSY THE SASQUATCH \| EP06 \| AS ABOING SO BADOING` | _(not imported)_ | _(n/a)_ | _(n/a)_ | 0 |
**Imported: 5 / 6.** EP06 is age-restricted on YouTube and the sibling
downloader had no authenticated cookie store — see Known caveats.
## Naming rules applied
Cited section numbers refer to files under `docs/`:
- **`docs/05` §0 rule 5 — mandatory `(Year)`.** Year `2022` (from manifest)
appended to the show folder and every episode basename, even though the
show name is unique in the library.
- **`docs/05` §2 + `docs/08` §1.2 — TV canonical layout.** Final layout is
`Show (Year)/Season NN/Show (Year) - SxxEyy - Title.ext`. Applied
literally across all 5 episodes.
- **`docs/05` §2.1 + `docs/08` §4.2 — zero-padded `Season 01`.** All five
files placed under `Season 01/` (single-playlist → single-season default).
- **`docs/08` §1.2 — zero-padded two-digit episode marker.** `S01E01`
through `S01E05`, never `S1E1` / `1x01` / `Ep1`.
- **`docs/08` §2.1 + §3.4 — strip channel-pollution prefix and
bracket/id tags.** The repeated `SASSY_THE_SASQUATCH_`, the `EPxx_`
fragment, and the `[<videoId>]` suffix in raw filenames were all
removed; only the human-readable episode title survives in the
canonical name.
- **`docs/08` §2.5 — underscores → spaces.** `WATER_YOU_TALKINABEET`
`Water You Talkinabeet`; `AREA_51``Area 51`; `SEEN_A_DINOSAUR`
`Seen a Dinosaur`; `SNOW_WORRIES``Snow Worries`; `WALKABEET` left
as a single word.
- **`docs/08` §5.1 — smart title case.** All-uppercase YouTube titles
recased; small word `a` lowercased mid-title (`Seen a Dinosaur`); the
number `51` preserved as-is (`Area 51`).
- **`docs/05` §0 rule 3 / `docs/08` §5.5 — ASCII-only, no forbidden
characters.** Source titles contained no `< > : " / \ | ? *`, so no
substitutions were needed; verified post-rename.
- **`docs/08` §1.1 / §1.2 forbidden list — no resolution/codec/group
tags.** `1080p`, `av01`, `opus`, `WEB-DL`, etc. all stripped; canonical
names contain title only.
## rsync stats
```
sent 155,763,373 bytes
received 126 bytes
throughput 44,503,856 bytes/sec (~42.4 MiB/s)
total size 155,724,794 bytes
speedup 1.00 (initial transfer, no rolling-checksum reuse)
flags -av --partial --append-verify
files 5 transferred + 2 dirs created
```
## Jellyfin verification
| Field | Value |
|---|---|
| Series id | `b2d1afd8a4a30c59adb42ccaf47376c2` |
| Series name | `Sassy the Sasquatch` |
| ProductionYear | `2022` |
| Path | `/media/tv/Sassy the Sasquatch (2022)` |
| Provider ids | `Tmdb=321760 Imdb=tt21209936 Tvdb=421839` |
| Episode count | 5 |
| Direct-play (E01 sample) | `SupportsDirectPlay=True`, `SupportsDirectStream=True`, `SupportsTranscoding=False`, video `av1` profile Main, audio `opus` |
| Library scan | `RefreshLibrary` reached `Idle / Completed` < 10 s after `POST /Library/Refresh`; full series refresh queued via `POST /Items/.../Refresh?Recursive=true&MetadataRefreshMode=FullRefresh&ImageRefreshMode=FullRefresh` (HTTP 204) |
All 5 episodes mapped to correct `SxxEyy` via filename → Jellyfin parser
(no manual identify required).
## Known caveats
1. **EP06 age-restricted, not imported.** YouTube requires authenticated
cookies for `bi_HbwZDdPg` (`AS ABOING SO BADOING`); sibling downloader
ran without a logged-in browser session. Library currently shows
5/6 episodes. Operator's call whether to retry with cookies or
accept the gap.
2. **Jellyfin display titles uppercase.** TVDB has the official episode
titles entered in all-caps (`SEEN A DINOSAUR`, etc.) and Jellyfin
prefers provider data over filename-derived titles. Filenames on disk
remain canonical-cased per `docs/08` §5.1; only the API/UI display
layer follows TVDB. Not a bug.
3. **No subtitles.** Source has YouTube auto-generated captions only;
sibling did not pull them, so no `.srt` / `.ass` siblings exist in
the library.
4. **Cross-device hard-link failure during staging.** Sibling's first
staging attempt at `/tmp/yt-norm/staged/` failed (`/tmp` is `tmpfs`,
source is on LUKS+ext4); re-staged at `/home/admin/yt-norm-staged/`
on the same FS. Net disk impact: zero (inode-only links). Cosmetic.
5. **Brief said "6 episodes," manifest had 6 with 1 failed.** Reconciled
to actual 5 successful downloads; counts in this log reflect reality,
not the brief.
## Source manifest copied
Top-level fields of `manifest.json` (sibling agent's output, originally at
`/home/admin/yt-import-staging/manifest.json` on onyx):
```json
{
"show_name": "Sassy the Sasquatch",
"year": "2022",
"channel": "THE BIG LEZ SHOW OFFICIAL",
"channel_id": "UCV1G6JkQtB2nobFm3MGNsBQ",
"playlist_id": "PLGMC7oz7XpmDMGrALMQiNXCi9p7aqkWbj",
"playlist_title": "SASSY THE SASQUATCH",
"raw_dir": "/home/admin/yt-import-staging/raw",
"downloaded_count": 5,
"failed_count": 1,
"total_bytes": 155724794
}
```
The full per-episode `episodes[]` array is **not** embedded here. Trace
each episode by canonical path under the live tree on nullstone:
```
/home/user/media/tv/Sassy the Sasquatch (2022)/
└── Season 01/
├── Sassy the Sasquatch (2022) - S01E01 - Seen a Dinosaur.mkv
├── Sassy the Sasquatch (2022) - S01E02 - Water You Talkinabeet.mkv
├── Sassy the Sasquatch (2022) - S01E03 - Walkabeet.mkv
├── Sassy the Sasquatch (2022) - S01E04 - Area 51.mkv
└── Sassy the Sasquatch (2022) - S01E05 - Snow Worries.mkv
```

42
docs/IMPORT-LOG/README.md Normal file
View file

@ -0,0 +1,42 @@
# IMPORT-LOG
Append-only ledger of media-import events for ARRFLIX. Each file in this
directory documents a single import operation so future audits can trace
content on disk back to its provenance.
## Convention
- **One file per import event.**
- **Filename format:** `YYYY-MM-DD-<source>-<show-slug>.md`
- `<source>` is the upstream type (`youtube`, `tvdb-rip`, `bluray`, `manual`, etc.).
- `<show-slug>` is the lowercase show name with `-` separators.
- Example: `2026-05-08-youtube-sassy-the-sasquatch.md`.
- **Date** is the day the import landed on the live library (not the day the
source was published).
## Required sections
Each entry should include:
1. **Source** — upstream URL/handle, channel/distributor, identifiers.
2. **Date imported** — ISO-8601.
3. **Episodes imported** — table mapping source identifier → canonical
filename → Jellyfin item id (resolution + size where applicable).
4. **Naming rules applied** — citations of the `docs/0X.md` rule numbers
invoked, with a short note on the specific edit each made.
5. **rsync stats**`sent / received / speedup` from the transfer.
6. **Jellyfin verification** — series id, episode count, direct-play status.
7. **Known caveats** — anything that wasn't perfect (missing metadata,
failed thumbnails, age-restricted episodes, etc.).
8. **Source manifest copied** — top-level fields of the operator's
`manifest.json`. Do **not** embed the full `episodes[]` array — link to
the canonical files in the live library instead.
## Boundaries
- **No access tokens, API keys, or session cookies** in any log file.
- For YouTube imports, **do not include full video URLs** — record the bare
`videoId` only, so import logs are not indexable as a re-distribution
pointer.
- Logs are **immutable once committed**. To correct a mistake, append a
follow-up entry rather than rewriting history.