No description
- Shell 47.3%
- JavaScript 27.4%
- Python 20.1%
- HTML 5.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| conf | ||
| doc/04_Module/04-4_Metadaten | ||
| lang | ||
| lib | ||
| store | ||
| www | ||
| .gitignore | ||
| CHANGELOG.md | ||
| disk2iso-musicbrainz.code-workspace | ||
| install.sh | ||
| LICENSE | ||
| README.md | ||
| VERSION | ||
disk2iso MusicBrainz Provider Module
MusicBrainz Metadata Provider für disk2iso - liefert Album-/Track-Metadaten für Audio-CDs mit Disc-ID basierter Suche.
🚀 Features
- Disc-ID Suche - Automatische Erkennung via CD-Disc-ID
- Album-Metadaten - Künstler, Album-Titel, Release-Jahr, Label
- Track-Informationen - Track-Titel, Künstler, Länge
- Cover-Art - Album-Cover von CoverArt Archive
- MusicBrainz API - Offene, freie Musikdatenbank
- Cache-System - Automatisches Caching für 30 Tage
- Multi-Language - Unterstützt 4 Sprachen (DE, EN, ES, FR)
- Provider-Framework - Registriert sich beim disk2iso Metadata-Framework
- Kein API-Key nötig - Komplett kostenlos und ohne Registrierung
📋 Voraussetzungen
- disk2iso >= v1.2.0 mit libmetadata.sh (Installation)
- curl - Für API-Requests
- jq - Für JSON-Parsing
- cd-discid oder libdiscid - Für Disc-ID Berechnung
- Optional: cdparanoia für Audio-CD Ripping
📦 Installation
Automatisch (empfohlen)
# Download neueste Version
curl -L https://github.com/DirkGoetze/disk2iso-musicbrainz/releases/latest/download/musicbrainz-module.zip -o /tmp/musicbrainz.zip
# Entpacken nach disk2iso
cd /opt/disk2iso
sudo unzip /tmp/musicbrainz.zip
# Service neu starten
sudo systemctl restart disk2iso
sudo systemctl restart disk2iso-web
Manuell
- Download neueste Release
- Entpacke nach
/opt/disk2iso/ - Setze Berechtigungen:
sudo chown -R root:root /opt/disk2iso/ - Restart Services:
sudo systemctl restart disk2iso disk2iso-web
Via Web-UI (ab v1.3.0)
- Öffne disk2iso Web-UI
- Gehe zu Einstellungen → Module → Metadata Provider
- Klicke auf MusicBrainz → Installieren
⚙️ Konfiguration
Manifest-Datei
conf/libmusicbrainz.ini:
[module]
name=musicbrainz
version=1.2.0
description=MusicBrainz Metadata Provider für Audio-CDs
[api]
base_url=https://musicbrainz.org/ws/2
coverart_base_url=https://coverartarchive.org
user_agent=disk2iso/1.2.0
timeout=10
[settings]
active=true
cache_enabled=true
cache_duration_days=30
rate_limit_delay=1000
Provider aktivieren/deaktivieren
# Deaktivieren
sudo nano /opt/disk2iso/conf/libmusicbrainz.ini
# Setze: active=false
# Service neu starten
sudo systemctl restart disk2iso
🔧 Verwendung
Automatisch
Der Provider wird automatisch verwendet, wenn:
- Eine Audio-CD eingelegt wird
- libmetadata.sh aktiviert ist
- MusicBrainz als Audio-Provider konfiguriert ist
# Status prüfen
sudo systemctl status disk2iso
# Provider-Registrierung prüfen
sudo journalctl -u disk2iso -f | grep MusicBrainz
Via Web-UI
- Öffne http://your-server:5000
- Lege Audio-CD ein
- Metadata-Dialog öffnet sich automatisch
- Wähle Album aus MusicBrainz-Suchergebnissen
- Metadaten werden in MP3-Tags gespeichert
Manuell (API)
# Suche nach Disc-ID
curl "http://localhost:5000/api/metadata/query?provider=musicbrainz&discid=Wn8eRBtfLDfL0qjYPdxrz.Zjs_U-"
# Response:
{
"success": true,
"provider": "musicbrainz",
"results": [
{
"id": "release-mbid",
"title": "Album Title",
"artist": "Artist Name",
"date": "2020",
"tracks": [...]
}
]
}
📊 Ausgabe-Struktur
/media/iso/metadata/musicbrainz/
├── cache/
│ ├── Wn8eRBtfLDfL0qjYPdxrz.Zjs_U-.nfo # Cached Query-Results
│ └── AbC123xyz...nfo
├── covers/
│ ├── release-mbid-123.jpg # Album-Cover
│ └── release-mbid-456.jpg
└── metadata.json # Provider-Statistiken
🔌 Provider-API
Registrierung
MusicBrainz registriert sich automatisch beim Metadata-Framework:
metadata_register_provider "musicbrainz" "audio-cd"
Implementierte Funktionen
musicbrainz_query(discid)- Suche nach Disc-IDmusicbrainz_parse(json)- Parse API-Responsemusicbrainz_apply(metadata, tracks)- Speichere Metadaten in MP3smusicbrainz_get_cover(release_id)- Download Cover-Art
🌐 Unterstützte Disc-Typen
- audio-cd - Audio-CDs
🔑 API-Endpunkte
MusicBrainz API
- Disc Lookup:
GET /discid/{discid}?inc=artist-credits+recordings - Release Details:
GET /release/{mbid} - CoverArt Archive:
GET http://coverartarchive.org/release/{mbid}/front
Dokumentation:
Rate Limiting
MusicBrainz hat strikte Rate Limits:
- 1 Request/Sekunde (default im Modul konfiguriert)
- Nutze Cache um Requests zu minimieren
- User-Agent ist erforderlich
🎵 Disc-ID Berechnung
Die Disc-ID wird automatisch beim Einlegen der CD berechnet:
# Mit cd-discid
cd-discid /dev/cdrom
# Output: Wn8eRBtfLDfL0qjYPdxrz.Zjs_U- 12 ...
# Mit libdiscid
discid /dev/cdrom
🧪 Entwicklung
Struktur
disk2iso-musicbrainz/
├── conf/
│ └── libmusicbrainz.ini # Provider-Manifest
├── lang/
│ ├── libmusicbrainz.de # Deutsche Übersetzung
│ ├── libmusicbrainz.en # Englische Übersetzung
│ ├── libmusicbrainz.es # Spanische Übersetzung
│ └── libmusicbrainz.fr # Französische Übersetzung
└── lib/
└── libmusicbrainz.sh # Haupt-Bibliothek
Lokale Tests
# In disk2iso-Umgebung testen
cd /opt/disk2iso
source lib/libmetadata.sh
source lib/libmusicbrainz.sh
# Abhängigkeiten prüfen
musicbrainz_check_dependencies
# Test-Query mit Disc-ID
musicbrainz_query "Wn8eRBtfLDfL0qjYPdxrz.Zjs_U-"
📝 Changelog
Siehe CHANGELOG.md für alle Änderungen.
🤝 Beitragen
- Fork das Repository
- Erstelle einen Feature Branch (
git checkout -b feature/amazing-feature) - Commit deine Änderungen (
git commit -m 'Add amazing feature') - Push zum Branch (
git push origin feature/amazing-feature) - Öffne einen Pull Request
📜 Lizenz
MIT License - siehe LICENSE für Details.
🔗 Links
⚠️ Wichtige Hinweise
- Kein API-Key nötig: MusicBrainz ist komplett kostenlos
- Rate Limits beachten: 1 Request/Sekunde
- User-Agent erforderlich: Wird automatisch gesetzt
- Cache nutzen: Reduziert API-Last erheblich
- Disc-ID Tool nötig: cd-discid oder libdiscid
💬 Support
- Issues: GitHub Issues
- Diskussionen: GitHub Discussions
- MusicBrainz Support: MusicBrainz Forums
- Core Projekt: disk2iso