Update Bedienungsanleitung: in-place mode, Unterstrich-Schema, Disc-Validierung

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-02-17 23:52:17 +01:00
commit 734bc80b79

View file

@ -60,21 +60,23 @@ musiksammlung rip ← CDs rippen, CDDB-Lookup, Dateien benennen
temp/Album/CD1/ temp/Album/CD1/
01_-_Titel_-_Künstler.flac track01.flac
02_-_Titel_-_Künstler.flac track02.flac
├─ CDDB hat alles erkannt? ├─ CDDB hat alles erkannt?
│ ja → musiksammlung apply │ ja → track01.flac bereits umbenannt → musiksammlung apply
│ nein → musiksammlung scan (Coverbild → album.json) │ nein → musiksammlung scan (Coverbild/Text → album.json)
│ → album.json prüfen/korrigieren
│ → musiksammlung apply
musiksammlung apply ← Dateien in Jellyfin-Struktur, Tags, Cover, Playlist musiksammlung apply ← Umbenennen, Tags, Cover, Playlist
├─ --in-place (Standard): Dateien bleiben im Quellverzeichnis
~/Musik/Künstler/Album/ │ temp/Album/CD1/01_Titel.flac
01_-_Titel.flac
cover.jpg └─ mit output_dir: Dateien in Jellyfin-Struktur verschieben
playlist.m3u ~/Musik/Kuenstler/Album/CD1/01_Titel.flac
``` ```
--- ---
@ -87,14 +89,14 @@ musiksammlung apply ← Dateien in Jellyfin-Struktur, Tags, Cover, Playli
musiksammlung rip musiksammlung rip
``` ```
Das Programm fragt interaktiv nach Album-Name und CD-Nummer, startet `abcde` und benennt die Tracks automatisch. Das Programm fragt interaktiv nach Album-Name und CD-Nummer, startet `abcde` und benennt die Tracks automatisch (wenn CDDB Daten liefert).
### Wichtige Optionen ### Wichtige Optionen
| Option | Beschreibung | Empfehlung | | Option | Beschreibung | Empfehlung |
|--------|-------------|------------| |--------|-------------|------------|
| `-f flac` | Audio-Format | `flac` für Archiv, `mp3` für Kompatibilität | | `-f flac` | Audio-Format | `flac` für Archiv, `mp3` für Kompatibilität |
| `-q high` | Qualität (low/medium/high) | `high` für Archiv | | `-q high` | Qualität (low/medium/high), Standard: `high` | `high` für Archiv |
| `-j 0` | Alle CPU-Kerne für paralleles Encoding | empfohlen | | `-j 0` | Alle CPU-Kerne für paralleles Encoding | empfohlen |
| `-P` | Pipes-Modus (kein WAV-Zwischenspeicher) | empfohlen bei wenig Speicher | | `-P` | Pipes-Modus (kein WAV-Zwischenspeicher) | empfohlen bei wenig Speicher |
| `-o /pfad` | Ausgabe-Verzeichnis | Standard: `./temp` | | `-o /pfad` | Ausgabe-Verzeichnis | Standard: `./temp` |
@ -111,19 +113,23 @@ musiksammlung rip -f flac -q high -j 0 -P -o ~/rip
``` ```
--- Album 1 --- --- Album 1 ---
Enter album name (or Enter for CDDB/default 'Album1'): Beethoven Sinfonien Album name (Enter = CDDB name / default 'Album1'): Beethoven Sinfonien
Album: Beethoven Sinfonien Album: Beethoven Sinfonien
CD Drive: /dev/cdrom CD Drive: /dev/cdrom
CD number for this CD [1]: 1 CD number [1]: 1
Ripping CD to: Beethoven_Sinfonien/CD1
(Ripping in progress, please wait...) Ripping to: temp/Beethoven_Sinfonien/CD1
✓ CD 1 ripped successfully --------------------------------------------------
Detected: Karajan Track 1/4 Allegro con brio
Tracks: 4 [████████████████░░░░░░░░░░░░░░] 54.3% 18.2 MB
...
✓ Done — 4 tracks
1. Allegro con brio [Karajan]
2. Andante con moto [Karajan]
Next CD for this album? (y/n): y Next CD for this album? (y/n): y
CD number for this CD [1]: 2 CD number [1]: 2
... ...
Next album? (y/n): n Next album? (y/n): n
@ -131,30 +137,34 @@ Next album? (y/n): n
### Ergebnis-Verzeichnis ### Ergebnis-Verzeichnis
**Wenn CDDB Daten liefert:**
``` ```
~/rip/ ~/rip/
Beethoven_Sinfonien/ Beethoven_Sinfonien/
CD1/ CD1/
01_-_Sinfonie_Nr.5_c-Moll_op.67_Allegro_con_brio_-_Karajan.flac 01_Allegro_con_brio_Karajan.flac
02_-_Andante_con_moto_-_Karajan.flac 02_Andante_con_moto_Karajan.flac
...
CD2/
... ...
``` ```
**Dateinamen-Schema:** **Wenn kein CDDB-Treffer:**
``` ```
<Track-Nr>_-_<Titel>_-_<Künstler>.<Endung> ~/rip/
Beethoven_Sinfonien/
CD1/
track01.flac
track02.flac
...
``` ```
Leerzeichen werden durch Unterstriche ersetzt. → In diesem Fall weiter mit Schritt 2 (Metadaten ermitteln).
--- ---
## 5. Schritt 2: Album-Metadaten ermitteln ## 5. Schritt 2: Album-Metadaten ermitteln
Dieser Schritt ist nur nötig, wenn CDDB keine vollständigen Daten geliefert hat. Dieser Schritt ist nur nötig, wenn CDDB keine vollständigen Daten geliefert hat (Dateien heißen noch `track01.flac` etc.).
### Variante A: Textdatei (z.B. von Perplexity/Wikipedia kopiert) ### Variante A: Textdatei (z.B. von Wikipedia/Perplexity kopiert)
```bash ```bash
musiksammlung scan --from-text trackliste.txt -o album.json musiksammlung scan --from-text trackliste.txt -o album.json
@ -166,14 +176,40 @@ musiksammlung scan --from-text trackliste.txt -o album.json
musiksammlung scan back.jpg -o album.json --lang deu+eng musiksammlung scan back.jpg -o album.json --lang deu+eng
``` ```
### Variante C: Vision-LLM (Bild direkt an LLM) Standard-Modell: `gemma3:12b` (via Ollama). Anderes Modell:
```bash
musiksammlung scan back.jpg -o album.json --model llama3.3:latest
```
### Variante C: Vision-LLM (Bild direkt an LLM, empfohlen)
Besser als OCR bei komplexen Layouts (mehrere Spalten, schwierige Schriften):
```bash ```bash
musiksammlung scan back.jpg --vision --vision-model qwen3-vl:latest -o album.json musiksammlung scan back.jpg --vision --vision-model qwen3-vl:latest -o album.json
``` ```
Für mehrspaltige Tracklisten auf CD-Rückseiten das große Cloud-Modell nutzen:
```bash
musiksammlung scan back.jpg --vision --vision-model qwen3-vl:235b-cloud -o album.json
```
### album.json prüfen und bearbeiten ### album.json prüfen und bearbeiten
Das Programm prüft automatisch, ob die Anzahl der erkannten Tracks mit den gerippten Dateien übereinstimmt. Bei Abweichungen erscheint eine Fehlermeldung:
```
FEHLER: Track-Diskrepanz zwischen gerippten Dateien und album.json:
[OK] Disc 1: 25 Datei(en), 25 JSON-Track(s)
[!!] Disc 2: 23 Datei(en), 20 JSON-Track(s)
→ 3 Track(s) fehlen im JSON (Tracks 2123 eintragen)
Bitte album.json korrigieren und erneut aufrufen.
```
In diesem Fall `album.json` manuell ergänzen, dann `apply` erneut aufrufen.
```json ```json
{ {
"artist": "Karajan", "artist": "Karajan",
@ -190,44 +226,78 @@ musiksammlung scan back.jpg --vision --vision-model qwen3-vl:latest -o album.jso
} }
``` ```
Die JSON-Datei kann vor dem nächsten Schritt manuell korrigiert werden.
--- ---
## 6. Schritt 3: Dateien organisieren und taggen ## 6. Schritt 3: Dateien organisieren und taggen
### In-place (Dateien bleiben im Quellverzeichnis)
```bash ```bash
musiksammlung apply temp/Beethoven_Sinfonien/CD1 album.json ~/Musik musiksammlung apply ~/rip/Beethoven_Sinfonien album.json
```
Oder explizit:
```bash
musiksammlung apply ~/rip/Beethoven_Sinfonien album.json --in-place
``` ```
Das Programm: Das Programm:
- Kopiert Audiodateien in die Jellyfin-Struktur - Benennt Audiodateien um (`track01.flac``01_Allegro_con_brio.flac`)
- Setzt ID3/FLAC-Tags (Titel, Künstler, Album, Jahr, Track-Nummer) - Setzt ID3/FLAC-Tags (Titel, Künstler, Album, Jahr, Track-Nummer, Disc-Nummer)
- Kopiert Cover-Bilder (`cover.jpg`, `back.jpg`) - Kopiert Cover-Bilder (`back.jpg`)
- Erzeugt eine M3U-Playlist - Erzeugt eine M3U-Playlist
Ergebnis:
```
~/rip/Beethoven_Sinfonien/
CD1/
01_Allegro_con_brio.flac
02_Andante_con_moto.flac
...
CD2/
...
back.jpg
Beethoven_Sinfonien.m3u
```
### In Jellyfin-Verzeichnis verschieben
```bash
musiksammlung apply ~/rip/Beethoven_Sinfonien album.json ~/Musik \
--front front.jpg --back back.jpg
```
Ergebnis:
```
~/Musik/
Karajan/
Beethoven_Sinfonien_1963/
CD1/
01_Allegro_con_brio.flac
...
back.jpg
Beethoven_Sinfonien.m3u
```
### Optionen ### Optionen
| Option | Beschreibung | | Option | Beschreibung |
|--------|-------------| |--------|-------------|
| `--in-place` | Dateien im Quellverzeichnis umbenennen (kein output_dir nötig) |
| `--front cover.jpg` | Front-Cover-Bild | | `--front cover.jpg` | Front-Cover-Bild |
| `--back back.jpg` | Rückseiten-Bild | | `--back back.jpg` | Rückseiten-Bild |
| `--dry-run` | Nur anzeigen, nichts ändern | | `--dry-run` | Nur anzeigen, nichts ändern |
### Ergebnis ### Dateinamen-Schema
``` ```
~/Musik/ <Track-Nr>_<Titel>.<Endung>
Karajan/
Beethoven_Sinfonien/
CD1/
01_-_Allegro_con_brio.flac
...
cover.jpg
back.jpg
Beethoven_Sinfonien.m3u
``` ```
- Leerzeichen und Satzzeichen → `_`
- Mehrere `_` hintereinander → ein `_`
- Umlaute (ä, ö, ü, ß) bleiben erhalten
--- ---
## 7. Komplett-Pipeline ## 7. Komplett-Pipeline
@ -246,20 +316,20 @@ musiksammlung process temp/Album/CD1 ~/Musik --back back.jpg
- Internetverbindung prüfen - Internetverbindung prüfen
- `--no-cddb` verwenden und Metadaten manuell per `scan` ermitteln - `--no-cddb` verwenden und Metadaten manuell per `scan` ermitteln
**Falsches CDDB-Ergebnis?** **Falsches oder kein CDDB-Ergebnis?**
- Tracks sind trotzdem korrekt gerippt - Tracks sind trotzdem korrekt gerippt (als `track01.flac` etc.)
- `musiksammlung scan` mit Coverbild oder Textdatei aufrufen - `musiksammlung scan` mit Coverbild oder Textdatei aufrufen
- `album.json` manuell korrigieren - `album.json` manuell korrigieren
- `musiksammlung apply` ausführen - `musiksammlung apply` ausführen
**Sonderzeichen in Dateinamen?** **Mehrspaltige Trackliste auf dem Backcover?**
- Umlaute (ä, ö, ü) bleiben erhalten - OCR erkennt mehrspaltige Layouts oft unvollständig
- Problematische Zeichen (`/ : * ? " < > |`) werden entfernt - Vision-LLM verwenden: `--vision --vision-model qwen3-vl:235b-cloud`
- Leerzeichen werden durch `_` ersetzt
**Mehrere CDs eines Albums (Multi-Disc)?** **Mehrere CDs eines Albums (Multi-Disc)?**
- Bei der Abfrage "Next CD for this album?" mit `y` antworten - Bei der Abfrage "Next CD for this album?" mit `y` antworten
- Jede CD erhält ein eigenes Unterverzeichnis `CD1`, `CD2`, ... - Jede CD erhält ein eigenes Unterverzeichnis `CD1`, `CD2`, ...
- `apply` einmal mit dem Album-Verzeichnis aufrufen (nicht pro CD)
**Unterstützte Audio-Formate:** **Unterstützte Audio-Formate:**