feat(media): the audiobook relayout, filed by the book Plex matched #101
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: reference
|
type: reference
|
||||||
title: Media Relayout
|
title: Media Relayout
|
||||||
description: "Census, plan and apply the movie, TV, music and audiobook libraries into their media servers' format: gates, evidence chain, refusals, rollback."
|
description: "Census, plan and apply the movie, TV, music and audiobook libraries: the gates, the refusals, the rollback."
|
||||||
tags: [dankserver, media-server, jellyfin, plex, procedure]
|
tags: [dankserver, media-server, jellyfin, plex, procedure]
|
||||||
timestamp: 2026-10-30T00:00:00Z
|
timestamp: 2026-10-30T00:00:00Z
|
||||||
---
|
---
|
||||||
@@ -306,17 +306,14 @@ provider row names, which is a tagging job and not a renaming job.
|
|||||||
|
|
||||||
`/mnt/entropy/Audiobooks` is the one library here that [[Jellyfin]] does not read
|
`/mnt/entropy/Audiobooks` is the one library here that [[Jellyfin]] does not read
|
||||||
at all — its music scanner has no audiobook concept — while [[Plex]] indexes all
|
at all — its music scanner has no audiobook concept — while [[Plex]] indexes all
|
||||||
of it as Artist → Album → Track, where the album is the BOOK, that book's single
|
of it as Artist → Album → Track: the album is the BOOK, that book's single artist
|
||||||
artist is the NARRATOR, and both were matched out of the files' own tags.
|
is the NARRATOR, both matched out of the files' own tags. Today one book is split
|
||||||
`scripts/media-audiobooks.py` re-files the tree so the property both servers'
|
across `… [Part 1]`, `… [Part 2]` folders three or four deep inside a collection
|
||||||
book scanners assume is true —
|
pack, so a scan serves three quarters of a novel; `scripts/media-audiobooks.py`
|
||||||
|
re-files the tree so the property both servers' book scanners assume is true —
|
||||||
|
|
||||||
Audiobooks/<Narrator>/<Book> (<year>)/<the file keeps its own name>
|
Audiobooks/<Narrator>/<Book> (<year>)/<the file keeps its own name>
|
||||||
|
|
||||||
Today it is not: the top level is a mix of author-named shelves and collection
|
|
||||||
packs, and a pack's book is split across `… [Part 1]`, `… [Part 2]` folders three
|
|
||||||
or four deep, so a scan shows three quarters of a novel.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. The authority: Plex's chapter rows for this root (the DB opens read-only).
|
# 1. The authority: Plex's chapter rows for this root (the DB opens read-only).
|
||||||
python3 scripts/media-census.py audiobooks --root /mnt/entropy/Audiobooks \
|
python3 scripts/media-census.py audiobooks --root /mnt/entropy/Audiobooks \
|
||||||
@@ -350,14 +347,13 @@ the rows actually hold:
|
|||||||
+- **The shelf is the narrator, not the author.** Every book has exactly one artist
|
+- **The shelf is the narrator, not the author.** Every book has exactly one artist
|
||||||
row and it is the narrator; the author survives only inside some album titles
|
row and it is the narrator; the author survives only inside some album titles
|
||||||
(`Kryptos by Graham McNeill`) and in no column Plex stores, so deriving it would
|
(`Kryptos by Graham McNeill`) and in no column Plex stores, so deriving it would
|
||||||
mean parsing titles where a ripper happened to write one and inventing it
|
mean parsing titles where a ripper wrote one and inventing it everywhere else.
|
||||||
everywhere else. One rule that always resolves beats a shelf that is half author
|
The author stays visible in the folder name Plex itself shows.
|
||||||
and half narrator, and the author stays visible in the folder name Plex shows.
|
|
||||||
|
|
||||||
What it refuses, same list as the music arm with one addition: a video container,
|
What it refuses, the music arm's list with one addition: a video container, audio
|
||||||
audio no chapter row names, and a loose file in a folder holding two books all
|
no chapter row names, and a loose file in a folder holding two books all park under
|
||||||
park under `_unsorted` with the path they have today — and so does a chapter whose
|
`_unsorted` with the path they have today — and so does a chapter whose row has
|
||||||
row has **no book or no narrator**, because inventing a shelf is filing it wrong.
|
**no book or no narrator**, because inventing a shelf is filing it wrong.
|
||||||
|
|
||||||
## Laws
|
## Laws
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ is a locator: one row, one clause, no numbers.
|
|||||||
| [[Jellyfin]] | Jellyfin on Dankserver: quadlet unit, overlay metadata view, provider keys, ports, access, transcode status. |
|
| [[Jellyfin]] | Jellyfin on Dankserver: quadlet unit, overlay metadata view, provider keys, ports, access, transcode status. |
|
||||||
| [[mariadb]] | The MariaDB backend for RomM: quadlet unit, network alias, env-file secret handling, and the backup path. |
|
| [[mariadb]] | The MariaDB backend for RomM: quadlet unit, network alias, env-file secret handling, and the backup path. |
|
||||||
| [[Media Metadata View]] | The SSD-backed overlay the two media servers read and write: shape, guards, commands, laws, rollback. |
|
| [[Media Metadata View]] | The SSD-backed overlay the two media servers read and write: shape, guards, commands, laws, rollback. |
|
||||||
| [[Media Relayout]] | Census, plan and apply the movie and TV libraries into Jellyfin format: gates, evidence chain, refusals, rollback. |
|
| [[Media Relayout]] | Census, plan and apply the movie, TV, music and audiobook libraries: the gates, the refusals, the rollback. |
|
||||||
| [[Plex]] | Plex Media Server is a **containerized media server on Dankserver**: a podman |
|
| [[Plex]] | Plex Media Server is a **containerized media server on Dankserver**: a podman |
|
||||||
| [[redis]] | The Redis cache and task queue for RomM: quadlet unit, network alias topology, and the backup path. |
|
| [[redis]] | The Redis cache and task queue for RomM: quadlet unit, network alias topology, and the backup path. |
|
||||||
| [[RomM]] | RomM (ROM Manager) is a self-hosted ROM library manager and player. |
|
| [[RomM]] | RomM (ROM Manager) is a self-hosted ROM library manager and player. |
|
||||||
|
|||||||
Reference in new issue
Block a user