Beiwerk im Medienordner, und eine Zuordnung lässt sich korrigieren
Plakate, Hintergründe und NFO-Dateien landen jetzt neben dem Film — und eine
falsche Zuordnung lässt sich richtigstellen, ohne dass der nächste Scan sie
wieder überschreibt.
Der Untergang (2004)/
├── Der Untergang (2004).mkv
├── poster.jpg
├── fanart.jpg
└── movie.nfo
Bei Serien liegt `tvshow.nfo` eine Ebene über dem Staffelordner, je Folge
kommen NFO und Standbild daneben. Liegen mehrere Filme in einem Ordner, heisst
das Beiwerk `Titel (Jahr)-poster.jpg` — sonst überschrieben sie sich
gegenseitig.
**Die Erlaubnisliste ist der ganze Schutz.** Damit das geht, muss die
Medieneinhängung ohne `:ro` auskommen, und damit könnte der Server dort alles
anstellen. Dass er es nicht tut, hängt an `SidecarNames`: sechs Arten von
Datei, nichts sonst. Ein Name, der nicht daraufsteht, wirft — laut, nicht
still, denn das wäre ein Fehler im Programm. Mediendateien werden nie
geändert, umbenannt oder gelöscht; es gibt keine Stelle, die das könnte.
Geprüft an echten Dateien, einschliesslich der Versuche mit `../`, mit
absoluten Pfaden und mit einer Mediendatei als Ziel.
Standardmässig **aus**. In fremde Medienordner zu schreiben ist nichts, was
ein Server ungefragt tun sollte.
**Gelesen wird auch ohne Schreiberlaubnis.** Eine vorhandene NFO ist eine
Zuordnung, die jemand getroffen hat — Halo nimmt sie und sucht gar nicht
erst. Dasselbe gilt für Ordnernamen der Form `[tmdbid-613]`. Halo liest sie
und benennt **nichts** um: Umbenennen ist der einzige Eingriff, der eine
Bibliothek wirklich zerlegen kann.
Nebenbei: eine NFO aus dem Medienordner hat Halo nicht geschrieben. DTDs sind
beim Lesen abgeschaltet — eine untergeschobene Datei mit externer Entität
könnte sonst den Server dazu bringen, `/config/halo.db` einzulesen und als
Titel auszuliefern. Mit Prüfung.
---
**Der Fehler, den erst der echte Lauf zeigte** — und er ist die zweite
Auflage eines schon einmal behobenen:
Nach der Korrektur stand im Ordner „Dark (2017)", in der Datenbank aber 2004.
Der nächste Scan suchte nach *(Dark, 2017)*, fand nichts, legte den Film neu
an und löschte den korrigierten als verwaist. Überlebt hat die Zuordnung nur,
weil sie in der NFO stand — das System hat sich selbst gerettet, aber der
Eintrag war ein anderer und das Jahr wieder falsch.
Dieselbe Klasse wie bei `ParsedTitle`: zugeordnet wurde über einen Wert, den
die Metadatenquelle verändert. Jetzt gibt es `ParsedYear`, und das ändert sich
nie. Mit Prüfung, die genau diesen Ablauf festhält.
---
Dazu von TMDB: die IMDb-Kennung wird nachgeschlagen, damit sie in der NFO
steht — wer später auf ein anderes Werkzeug wechselt, findet denselben Titel
wieder, auch wenn das TMDB gar nicht kennt.
308 Tests grün. Im Container nachgewiesen: Zuordnung falsch, korrigiert,
zweiter Scan — derselbe Eintrag, dieselbe Kennung, Jahr bleibt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
79b6001f86
commit
f98b995050
+57
-1
@@ -68,7 +68,7 @@ hilft.
|
||||
## Entwickeln
|
||||
|
||||
```bash
|
||||
dotnet test # 238 Tests
|
||||
dotnet test # 293 Tests
|
||||
dotnet run --project src/Halo.Api # auf http://localhost:5000
|
||||
```
|
||||
|
||||
@@ -189,6 +189,62 @@ Voraus: kein Fortschrittsbalken, kein Fortsetzen, kein Springen. Dafür gibt es
|
||||
| `HALO_FFMPEG` | Pfad zu ffmpeg | `ffmpeg` |
|
||||
| `HALO_FFPROBE` | Pfad zu ffprobe | `ffprobe` |
|
||||
|
||||
## Zuordnung korrigieren
|
||||
|
||||
```
|
||||
GET /api/v1/movies/{id}/matches?query=&year= Vorschläge
|
||||
PUT /api/v1/movies/{id}/match { "tmdbId": 70523 }
|
||||
GET /api/v1/series/{id}/matches?query=&year=
|
||||
PUT /api/v1/series/{id}/match
|
||||
```
|
||||
|
||||
**Weil Raten manchmal danebengeht.** Die Suche nach „Dark" lieferte „Dark
|
||||
Shadows" von 1966 — ohne Jahresangabe gewinnt bei TMDB der beliebteste
|
||||
Treffer. Dagegen hilft keine bessere Heuristik, sondern nur die Möglichkeit,
|
||||
es richtigzustellen.
|
||||
|
||||
Eine Korrektur wird **festgeschrieben**: in der Datenbank, in der NFO-Datei
|
||||
und als `lockdata`. Danach sucht kein Lauf mehr danach, und ein Neuaufbau der
|
||||
Datenbank oder ein Umzug findet die Entscheidung wieder. Bei einer Serie
|
||||
werden die Folgen gleich mit neu geholt — die alten gehörten zur falschen
|
||||
Serie.
|
||||
|
||||
Nur Administratoren, denn es ändert die Mediathek für alle.
|
||||
|
||||
## Beiwerk im Medienordner
|
||||
|
||||
Mit `HALO_WRITE_SIDECARS=true` legt Halo Plakate, Hintergründe und
|
||||
NFO-Dateien neben den Film:
|
||||
|
||||
```
|
||||
Der Untergang (2004)/
|
||||
├── Der Untergang (2004).mkv
|
||||
├── poster.jpg
|
||||
├── fanart.jpg
|
||||
└── movie.nfo
|
||||
```
|
||||
|
||||
Liegen mehrere Filme in einem Ordner, heisst das Beiwerk
|
||||
`Der Untergang (2004)-poster.jpg` — sonst überschrieben sie sich gegenseitig.
|
||||
Serien bekommen `tvshow.nfo` eine Ebene über dem Staffelordner, Folgen je eine
|
||||
NFO und ein Standbild neben der Datei.
|
||||
|
||||
**Standardmässig aus**, und die Medieneinhängung muss dafür ohne `:ro`
|
||||
auskommen. Was Halo schreiben darf, steht als Erlaubnisliste im Code
|
||||
(`SidecarNames`): alles andere wird abgelehnt, und Mediendateien werden nie
|
||||
geändert, umbenannt oder gelöscht. Transcode-Zwischenstände kommen nie in
|
||||
einen Medienordner — die liegen unter `HALO_TRANSCODE`.
|
||||
|
||||
**Gelesen wird auch ohne Schreiberlaubnis.** Eine vorhandene NFO ist eine
|
||||
Zuordnung, die jemand getroffen hat; Halo nimmt sie und sucht gar nicht erst.
|
||||
Dasselbe gilt für Ordnernamen der Form `Der Untergang (2004) [tmdbid-613]` —
|
||||
Halo liest sie, benennt aber **nichts** um. Umbenennen ist der einzige
|
||||
Eingriff, der eine Bibliothek wirklich zerlegen kann.
|
||||
|
||||
| Variable | Bedeutung | Voreinstellung |
|
||||
|---|---|---|
|
||||
| `HALO_WRITE_SIDECARS` | Beiwerk in den Medienordner schreiben | `false` |
|
||||
|
||||
## Anmeldung am Fernseher
|
||||
|
||||
Ein Passwort auf der Apple-TV-Fernbedienung zu tippen ist eine Zumutung.
|
||||
|
||||
Reference in New Issue
Block a user