Intelligente Metadaten-Anreicherung für MP3-Dateien mit mehreren APIs
MP3 Tagger ist ein Python-Tool, das automatisch fehlende Metadaten für Ihre MP3-Sammlung ergänzt. Es kombiniert mehrere Musik-APIs und findet die besten YouTube-Videos basierend auf Klickzahlen.
- 🔍 Intelligente Dateiname-Erkennung - Automatisches Parsing von Künstler und Titel
- 🌐 Multi-API-Integration - MusicBrainz, Spotify, Last.fm, YouTube
- 🎥 YouTube-Integration - Automatische Verlinkung mit populärsten Videos
- 🛡️ Tag-Schutz - Bestehende Tags werden geschützt
- 📊 View-Count-Sortierung - Findet die richtige Version mit den meisten Klicks
- ⚙️ Konfigurierbarer Workflow - Anpassbare Tag-Behandlung
- 💾 Automatische Backups - Sichere Tag-Updates
# Repository klonen
git clone https://github.com/yourusername/mp3Tagger.git
cd mp3Tagger
# Dependencies installieren
pip install -r requirements.txt
# Oder mit dem Installer
./install.ps1 # Windows PowerShell
# oder
./install.bat # Windows Batch# Setup-Assistent ausführen
python main.py setup-apis
# API-Keys in config/user_config.yaml eintragen# MP3-Verzeichnis scannen
python main.py scan ./my-music
# Einzelne Datei anreichern
python main.py enrich-single "song.mp3" --fetch-youtube --update-tags
# Ganzes Verzeichnis bearbeiten
python main.py enrich ./my-music --update-tags --fetch-youtube| Kommando | Beschreibung |
|---|---|
scan |
Scannt Verzeichnis nach MP3s und zeigt Informationen |
enrich |
Reichert MP3s mit Metadaten an |
enrich-single |
Bearbeitet eine einzelne Datei |
info |
Zeigt Details zu einer MP3-Datei |
test-apis |
Testet API-Verbindungen |
setup-apis |
Hilfe bei der API-Konfiguration |
config-info |
Zeigt aktuelle Konfiguration |
conflict-info |
Zeigt Tag-Konfiguration (tag_settings) |
conflict-reset |
Zurücksetzen von Batch-Rules und Präferenzen |
python main.py scan <verzeichnis> [optionen]| Option | Beschreibung |
|---|---|
--recursive, -r |
Unterverzeichnisse einschließen (Standard: true) |
--verbose, -v |
Detaillierte Ausgabe |
Beispiele:
# Scan mit Unterverzeichnissen
python main.py scan ./music --recursive
# Nur aktuelles Verzeichnis
python main.py scan ./music --no-recursivepython main.py enrich <verzeichnis> [optionen]| Option | Beschreibung |
|---|---|
--update-tags |
Tags tatsächlich schreiben |
--fetch-youtube |
YouTube-Videos und Views abrufen |
--interactive, -i |
Interaktiver Konflikt-Modus |
--dry-run |
Vorschau ohne Änderungen |
--min-confidence <zahl> |
Mindest-Confidence (0-100) |
Beispiele:
# Vollständige Anreicherung mit YouTube
python main.py enrich ./music --update-tags --fetch-youtube
# Test-Lauf ohne Änderungen
python main.py enrich ./music --dry-run --fetch-youtube
# Interaktive Konfliktlösung
python main.py enrich ./music --interactive --update-tagspython main.py enrich-single <datei> [optionen]| Option | Beschreibung |
|---|---|
--fetch-youtube |
YouTube-Daten abrufen |
--update-tags |
Tags aktualisieren |
Beispiele:
# Einzelne Datei mit YouTube-Daten
python main.py enrich-single "2Pac - California Love.mp3" --fetch-youtube --update-tags
# Nur Metadaten anzeigen
python main.py enrich-single "song.mp3" --fetch-youtubepython main.py info <datei>Beispiel:
python main.py info "music/song.mp3"python main.py conflict-infoZeigt die aktuelle Tag-Konfiguration (tag_settings):
- Auto-Update Tags (werden automatisch überschrieben)
- Geschützte Tags (werden niemals geändert)
- Interaktive Tags (erfordern Bestätigung)
- Batch-Processing Einstellungen
- Confidence-Schwellwerte
- Gespeicherte Batch-Rules
python main.py conflict-reset [optionen]| Option | Beschreibung |
|---|---|
--clear-rules |
Löscht alle gespeicherten Batch-Rules |
--clear-preferences |
Löscht alle Benutzer-Präferenzen |
Beispiele:
# Alle Batch-Rules löschen
python main.py conflict-reset --clear-rules
# Alle Präferenzen zurücksetzen
python main.py conflict-reset --clear-preferences| Service | Kostenlos bis | Link |
|---|---|---|
| 🎥 YouTube Data API | 10.000 Requests/Tag | Google Cloud Console |
| 🎵 Spotify Web API | Unbegrenzt | Spotify Developer |
| 🎧 Last.fm API | 5.000 Requests/Stunde | Last.fm API |
# config/user_config.yaml
api_keys:
youtube_api_key: "YOUR_YOUTUBE_API_KEY"
spotify_client_id: "YOUR_SPOTIFY_CLIENT_ID"
spotify_client_secret: "YOUR_SPOTIFY_CLIENT_SECRET"
lastfm_api_key: "YOUR_LASTFM_API_KEY"
matching_settings:
min_confidence: 80 # Mindest-Confidence Score
fuzzy_threshold: 0.8 # Fuzzy-Matching Schwellwert
max_results_per_query: 10 # Max. Ergebnisse pro API-Anfrage- Basis: Künstler, Titel, Album, Jahr, Genre, Track-Nummer
- Erweitert: Album-Künstler, Disc-Nummer, Dauer
YOUTUBE_URL- Link zum besten VideoYOUTUBE_VIEWS- Anzahl AufrufeYOUTUBE_LIKES- Anzahl LikesYOUTUBE_CHANNEL- Kanal-Name
SPOTIFY_ID- Spotify Track-IDSPOTIFY_POPULARITY- Popularity Score (0-100)SPOTIFY_ARTIST_FOLLOWERS- Künstler-Follower
LASTFM_PLAYCOUNT- Anzahl PlaysLASTFM_LISTENERS- Anzahl Hörer
MP3 Tagger schützt Ihre Musikbibliothek automatisch mit intelligenten Backup-Strategien:
- Automatische Backups vor jeder Tag-Änderung
- Changelog-System als Standard (ideal für große Bibliotheken)
- Transaktionale Sicherheit mit automatischem Rollback bei Fehlern
- Speicher-effizient: ~100 Bytes pro Änderung statt kompletter Dateikopien
MP3 Tagger bietet mehrere intelligente Backup-Strategien für verschiedene Anwendungsfälle:
- Leichtgewichtig: Nur Änderungen werden protokolliert, nicht ganze Dateien
- Effizient: Ideal für große Bibliotheken (10.000+ MP3s)
- Vollständig: SQLite-basierte Protokollierung aller Tag-Änderungen
- Wiederherstellung: Präzise Wiederherstellung einzelner Tags oder ganzer Dateien
- Speicherbedarf: ~50-100MB für 10.000 MP3s statt 500GB
- Transaktional: Datei wird im RAM gehalten während der Änderungen
- Schnell: Sofortiger Rollback bei Fehlern
- Einzeln: Pro Datei - kein RAM-Limit für große Bibliotheken
- Skalierbar: Funktioniert für 10 oder 100.000 MP3s gleich gut
- Kritische Tags: Nur wichtige Tags werden gesichert
- Kompakt: JSON-basierte Backups für Metadaten
- Performance: Balanciert zwischen Sicherheit und Effizienz
- Vollständig: Komplette Dateikopien vor Änderungen
- Sicher: Maximale Sicherheit für kritische Anwendungen
- Aufwendig: Nur für kleine Bibliotheken empfohlen
# Backup-Status anzeigen (zeigt aktuelle Strategie und Statistiken)
python main.py backup status
# Backup-Strategien
python main.py backup strategy changelog # Standard - empfohlen für große Bibliotheken
python main.py backup strategy in_memory # RAM-basiert für kleine Bibliotheken
python main.py backup strategy selective # Nur kritische Tags (kompakt)
python main.py backup strategy disabled # Keine Backups (nicht empfohlen)
# Backup-Wartung
python main.py backup cleanup --dry-run # Vorschau: Welche Backups würden gelöscht?
python main.py backup cleanup --force # Alte Backups aufräumen
# Wiederherstellung
python main.py backup restore path/to/song.mp3 # Neuestes Backup
python main.py backup restore path/to/song.mp3 --timestamp 20250621_143022 # Spezifisches Backup🏠 Heimnutzer (< 5.000 MP3s):
python main.py backup strategy in_memory # Transaktional, eine Datei im RAM
# oder
python main.py backup strategy changelog # Standard - ebenso optimal🎵 DJ/Sammler (5.000-50.000 MP3s):
python main.py backup strategy in_memory # Empfohlen für Transaktionssicherheit
# oder
python main.py backup strategy changelog # Leichtgewichtig🏢 Professionell (50.000+ MP3s):
python main.py backup strategy in_memory # Funktioniert für jede Bibliotheksgröße
# oder
python main.py backup strategy changelog # Minimaler Speicherbedarf- Geschützte Tags werden nie überschrieben
- Confidence-basierte Updates nur bei hoher Sicherheit
- Automatischer Rollback bei Fehlern
- Dry-Run-Modus zum sicheren Testen
MP3 Tagger verfügt über ein intelligentes Tag-Management, das große Bibliotheken effizient verarbeitet:
Diese Tags werden automatisch überschrieben (z.B. YouTube-Views, Spotify-Popularity):
python main.py conflict-info # Zeigt alle konfigurierten Tags- Intelligente Gruppierung: Ähnliche Konflikte werden gruppiert
- Batch-Rules: Einmal erstellte Regeln gelten für zukünftige Läufe
- Session-Effizienz: Automatische Optimierung für große Sammlungen
- ≥95% Confidence: Automatische Übernahme
- 80-95% Confidence: Empfehlung mit Option
- <60% Confidence: Warnung bei niedrigem Vertrauen
# Interaktiver Modus mit Batch-Optionen
python main.py enrich music-folder --interactive
# Nur Auto-Update Tags verarbeiten (keine Nachfragen)
python main.py enrich music-folder --update-tags# 1. Erst scannen und Status prüfen
python main.py scan ./music-collection
# 2. Tag-Konfiguration prüfen
python main.py conflict-info
# 3. Automatische Anreicherung starten
python main.py enrich ./music-collection --update-tags --fetch-youtube
# Ergebnis: 98% Automatisierung, 12 interaktive Entscheidungen bei 10.000 Dateien# Interaktiver Modus aktivieren
python main.py enrich ./music --interactive --update-tags
# System erkennt: 25 YouTube-View Updates → Auto-Update
# System erkennt: 8 ähnliche Genre-Konflikte → Batch-Rule erstellen
# Benutzer entscheidet: "Für alle Rock → Metal Konflikte: Neuen Wert verwenden"
# Result: Batch-Rule gespeichert für zukünftige Läufe# APIs konfigurieren
python main.py setup-apis
# Verbindung testen
python main.py test-apis
# Status überprüfen
python main.py config-info# Status der Backups prüfen
python main.py backup status
# Changelog-Strategie aktivieren
python main.py backup strategy changelog
# Alte Backups aufräumen (Vorschau)
python main.py backup cleanup --dry-run
# Datei wiederherstellen aus Backup
python main.py backup restore "path/to/song.mp3"$ python main.py enrich-single "2Pac & Dr. Dre - California Love.mp3" --fetch-youtube --update-tags
🎵 Datei: 2Pac & Dr. Dre - California Love.mp3
🎤 Künstler: 2Pac & Dr. Dre
🎼 Titel: California Love
🔍 Suche Metadaten...
✓ 18 Ergebnisse gefunden
1. musicbrainz: 2Pac & Dr. Dre - California Love (Confidence: 0.97)
2. spotify: 2Pac - California Love (Confidence: 0.95)
🎥 Suche YouTube-Videos...
1. 2Pac ft. Dr. Dre - California Love (Official Video)
Channel: UPROXX
Views: 106.6M
URL: https://www.youtube.com/watch?v=omfz62qu_Bc
✅ Tags erfolgreich aktualisiert!Siehe ROADMAP.md für geplante Features:
- ✅ v1.0: Core-Funktionalität, Multi-API, YouTube-Integration, Intelligentes Conflict Management
- 🚧 v1.1: Progress-Bars, Parallel-Processing, Resume-Funktionalität
- 🔮 v1.2: Zusätzliche APIs (Apple Music, SoundCloud), ML-Genre-Klassifikation
- 10.000 MP3s: ~98% automatische Auflösung, ~12 interaktive Entscheidungen
- YouTube-Updates: 100% automatisch (Auto-Update Tags)
- Neue Bibliothek: Einmalige Batch-Rules → 95%+ Automation für Zukunft
- Session-Management: Intelligente Unterbrechung bei zu vielen Konflikten
- Batch-Rules: Persistente Lernfähigkeit
- Confidence-Thresholds: Automatische Qualitätskontrolle
MIT License - siehe LICENSE für Details.
Contributions sind willkommen! Siehe ROADMAP.md für geplante Features.
Made with ❤️ for music lovers