diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index b91d403..cc95448 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -54,28 +54,30 @@ musiksammlung --help ## 3. Workflow-Überblick ``` -CD einlegen +musiksammlung rip │ ▼ -musiksammlung rip ← CDs rippen, CDDB-Lookup, Dateien benennen - │ (optional: EAN-Abfrage → MusicBrainz) - ▼ -temp/Album/ - CD1/ - track01.flac ← kein CDDB-Treffer - track02.flac - album.json ← automatisch erzeugt (CDDB oder MusicBrainz) +EAN/Barcode eingeben (Enter = überspringen) │ - ├─ album.json bereits vorhanden (CDDB/MusicBrainz)? - │ ja → direkt weiter mit musiksammlung apply + ├─ MusicBrainz-Treffer → Auto-Rip + │ Zeige: Artist – Album (Year), N Discs, M Tracks + │ Für jede Disc: "CD 1/3 einlegen, Enter" → Rip → Rename + │ album.json automatisch aus MusicBrainz-Daten + │ → direkt weiter mit musiksammlung apply │ - └─ nein → album.json manuell erzeugen (eine Variante wählen): - A: musiksammlung scan --from-text trackliste.txt - B: musiksammlung scan back.jpg - C: musiksammlung scan back.jpg --vision - D: musiksammlung scan --barcode 0602557360561 - → album.json prüfen/korrigieren - → musiksammlung apply + └─ Kein Treffer / EAN leer → Fallback + Albumname eingeben → CD-Nummer → Rip → CDDB-Confirm + album.json aus CDDB-Daten (falls bestätigt) + │ + ├─ album.json vorhanden? + │ ja → direkt weiter mit musiksammlung apply + │ + └─ nein → album.json manuell erzeugen: + A: musiksammlung scan --from-text trackliste.txt + B: musiksammlung scan back.jpg + C: musiksammlung scan back.jpg --vision + D: musiksammlung scan --barcode 0602557360561 + → album.json prüfen/korrigieren │ ▼ musiksammlung apply ← Umbenennen, Tags, Cover, Playlist @@ -97,7 +99,7 @@ musiksammlung apply ← Umbenennen, Tags, Cover, Playlist musiksammlung rip ``` -Das Programm fragt interaktiv nach Album-Name und CD-Nummer, startet `abcde` und benennt die Tracks automatisch (wenn CDDB Daten liefert). +Das Programm fragt zuerst nach dem EAN/Barcode. Bei einem MusicBrainz-Treffer startet ein automatischer Rip-Vorgang für alle Discs des Albums. Ohne EAN oder bei Fehltreffer wird der manuelle Ablauf gestartet (Album-Name, CD-Nummer, CDDB-Bestätigung). ### Wichtige Optionen @@ -119,12 +121,37 @@ musiksammlung rip -f flac -q high -j 0 -P -o ~/rip ### Interaktiver Ablauf +**Mit EAN (Auto-Rip):** + ``` --- Album 1 --- -Album name (Enter = CDDB name / default 'Album1'): Beethoven Sinfonien -EAN/Barcode für MusicBrainz (Enter = überspringen): 028943753227 +EAN/Barcode (Enter = überspringen): 028943753227 MusicBrainz-Suche nach Barcode 028943753227 ... - ✓ Herbert von Karajan – Beethoven: 9 Symphonies (1963, 50 Tracks) + ✓ Herbert von Karajan – Beethoven: 9 Symphonies (1963, 5 Disc(s), 50 Tracks) + + CD 1/5 einlegen und Enter drücken (9 Tracks) ... + + Ripping to: temp/Beethoven__9_Symphonies/CD1 + -------------------------------------------------- + Track 1/9 Allegro con brio + [████████████████░░░░░░░░░░░░░░] 54.3% 18.2 MB + ... + Umbenennen (CDDB-Daten) ... + + CD 2/5 einlegen und Enter drücken (4 Tracks) ... + ... + + album.json gespeichert: temp/Beethoven__9_Symphonies/album.json + +Next album? (y/n): n +``` + +**Ohne EAN (Fallback):** + +``` +--- Album 1 --- +EAN/Barcode (Enter = überspringen): +Album name (Enter = CDDB name / default 'Album1'): Beethoven Sinfonien Album: Beethoven Sinfonien CD Drive: /dev/cdrom @@ -135,13 +162,14 @@ EAN/Barcode für MusicBrainz (Enter = überspringen): 028943753227 Track 1/4 Allegro con brio [████████████████░░░░░░░░░░░░░░] 54.3% 18.2 MB ... - ✓ Done — 4 tracks + CDDB-Treffer: 'Karajan / Beethoven Sinfonien' — 4 Tracks: 1. Allegro con brio [Karajan] 2. Andante con moto [Karajan] - Next CD for this album? (y/n): y - CD number [1]: 2 - ... + Treffer korrekt? (j/n) [j]: j + Umbenennen ... + + Next CD for this album? (y/n): n Next album? (y/n): n ``` @@ -219,7 +247,7 @@ Die EAN lässt sich auch mit einem Barcode-Scanner oder einer Smartphone-App abl MusicBrainz liefert bei einem Treffer: Interpret, Albumtitel, Erscheinungsjahr und vollständige Trackliste. Kein API-Schlüssel erforderlich. -Alternativ kann die EAN auch während des interaktiven Rippens eingegeben werden (Abfrage „EAN/Barcode für MusicBrainz"). Das Ergebnis wird dann direkt als `album.json` gespeichert. +Beim interaktiven Rip-Befehl (`musiksammlung rip`) wird die EAN als erstes abgefragt. Bei einem MusicBrainz-Treffer startet automatisch der Rip-Vorgang für alle Discs — kein Albumname, keine CDDB-Bestätigung nötig. Das `album.json` wird direkt aus den MusicBrainz-Daten gespeichert. ### album.json prüfen und bearbeiten @@ -242,6 +270,7 @@ In diesem Fall `album.json` manuell ergänzen, dann `apply` erneut aufrufen. "artist": "Karajan", "album": "Beethoven Sinfonien", "year": 1963, + "genre": "Classical", "discs": [ { "disc_number": 1, @@ -254,6 +283,8 @@ In diesem Fall `album.json` manuell ergänzen, dann `apply` erneut aufrufen. } ``` +Das Feld `"genre"` ist **optional** und wird automatisch befüllt, wenn GnuDB ein DGENRE liefert. + Das Feld `"artist"` auf Track-Ebene ist **optional**. Wird es gesetzt, überschreibt es den Album-Künstler für diesen Track — sinnvoll bei Samplern oder Klassik mit verschiedenen Solisten: ```json @@ -395,8 +426,8 @@ musiksammlung process temp/Album/CD1 ~/Musik --back back.jpg **EAN/Barcode verfügbar? → Schnellster Weg** - EAN-13 oder UPC-12 von der CD-Hülle ablesen (ggf. Barcode-Scanner-App nutzen) -- `musiksammlung scan --barcode 0602557360561 -o album.json` -- Oder beim `rip`-Befehl die EAN-Abfrage verwenden — dann wird `album.json` direkt gespeichert +- Beim `rip`-Befehl wird die EAN als erstes abgefragt — bei MusicBrainz-Treffer startet der Auto-Rip sofort (keine weiteren Fragen) +- Alternativ: `musiksammlung scan --barcode 0602557360561 -o album.json` - Kein Bild, kein OCR, kein lokales LLM notwendig **CDDB-Lookup schlägt fehl?** @@ -414,7 +445,8 @@ musiksammlung process temp/Album/CD1 ~/Musik --back back.jpg - Vision-LLM verwenden: `--vision --vision-model qwen3-vl:235b-cloud` **Mehrere CDs eines Albums (Multi-Disc)?** -- Bei der Abfrage "Next CD for this album?" mit `y` antworten +- Bei EAN-Treffer: MusicBrainz kennt die Disc-Anzahl, der Auto-Rip fordert automatisch jede CD an +- Ohne EAN: Bei der Abfrage "Next CD for this album?" mit `y` antworten - Jede CD erhält ein eigenes Unterverzeichnis `CD1`, `CD2`, ... - `apply` einmal mit dem Album-Verzeichnis aufrufen (nicht pro CD) diff --git a/README.md b/README.md index 3c45cd4..bc87fa3 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ pip install -e ".[dev]" ## Schnellstart ```bash -# CDs rippen (interaktiv, mit optionaler EAN-Abfrage für MusicBrainz) +# CDs rippen (interaktiv, EAN-First: MusicBrainz → Auto-Rip bei Treffer) musiksammlung rip -j 0 -P # Variante A: EAN/Barcode → MusicBrainz → album.json (schnellste Methode)