Erstellt aus CDs Musik für Jellyfin
- Python 100%
- ripper: replace per-call stdin daemon threads with a shared module-level reader (_stdin_queue + _read_line), preventing orphan threads from stealing stdin input after photo uploads; all 8 input() calls in interactive_rip now use _read_line() - ripper: _stream_abcde return type annotation fixed (2-tuple → 3-tuple) - ripper: disc retry rejection now breaks gracefully instead of raising unhandled RuntimeError that crashed the program - ripper: int() on disc number input wrapped in try/except - cddb: multi-line DTITLE/TTITLE values are now concatenated instead of only keeping the last line (per CDDB/xmcd protocol spec) - cli: removed unreachable dead code block in apply command - scanner_server: upload form auto-resets after 3s for repeated uploads - tests: _scanner_patches() updated to mock _read_line alongside _input_or_scan (225 tests passing) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| src/musiksammlung | ||
| tests | ||
| .gitignore | ||
| BEDIENUNGSANLEITUNG.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
Musiksammlung
ACHTUNG! Das Programm ist nicht fertig!
CLI-Tool zum Digitalisieren von CD-Sammlungen für Jellyfin.
Überblick
Musiksammlung automatisiert die Digitalisierung physischer CDs:
- CDs rippen (via
abcde, CDDB-Lookup) - Backcover automatisch via Smartphone-Upload erfassen
- Backcover per Vision-LLM parallel zum Ripping analysieren (Cloud-Modell, kein lokales VRAM nötig)
- Coverbilder per OCR oder Vision-LLM analysieren
- Tracklisten per LLM extrahieren und als JSON speichern
- Audiodateien umbenennen, taggen und in Jellyfin-Struktur ablegen
- M3U-Playlisten erzeugen
Voraussetzungen
- Python 3.11+
abcde(CD-Ripping)tesseract(OCR, optional)- Ollama oder OpenAI-kompatibles LLM (optional)
- Firewall: Port 8765 (TCP) für Smartphone-Upload offen (
sudo ufw allow 8765/tcp)
Installation
pip install -e ".[dev]"
Schnellstart
# CDs rippen (interaktiv, EAN-First: MusicBrainz → Auto-Rip bei Treffer)
# QR-Code im Terminal: Backcover mit Smartphone fotografieren → Vision-LLM analysiert parallel
musiksammlung rip -j 0 -P
# Variante A: EAN/Barcode → MusicBrainz → album.json (schnellste Methode)
musiksammlung scan --barcode 0602557360561 -o album.json
# Variante A2: EAN per Foto (Vision-LLM liest Barcode) → MusicBrainz → album.json
musiksammlung scan --from-photo cover.jpg -o album.json
# Variante B: Coverbild per Vision-LLM → album.json
musiksammlung scan back.jpg --vision -o album.json
# Audiodateien organisieren und taggen
musiksammlung apply temp/Album1/CD1 album.json ~/Musik
Ausführliche Anleitung: BEDIENUNGSANLEITUNG.md
Lizenz
Siehe LICENSE.