DJ Database & Recovery Tool
MP3-Bibliotheken verwalten, defekte USB-Sticks reparieren und Duplikate bereinigen mit Python
Wer als DJ über eine gewachsene, umfangreiche Musiksammlung verfügt, kennt das Problem: Nach Jahren des Auflegens sind Ordnerstrukturen unübersichtlich, USB-Sticks weisen nach unsauberem Abziehen beschädigte MP3-Dateien auf, oder auf verschiedenen Speichermedien tummeln sich unzählige Duplikate. Kommerzielle Software bietet oft starre Strukturen oder teure Ökosysteme.
Aus diesem Grund habe ich ein maßgeschneidertes, in Python 3.14 geschriebenes Desktop-Werkzeug entwickelt.
Das DJ Database & Recovery Tool kombiniert eine performante SQLite-Mediathek im klassischen Winamp-Layout mit intelligenten Algorithmen zur Dateiwiederherstellung, MPEG-Fehlerprüfung und echtem Drag & Drop.
In diesem Beitrag stelle ich die Architektur und alle Kernfunktionen des Tools im Detail vor. Der Quellcode ist vollständig Open Source und auf GitHub verfügbar.
Kernfunktionen im Überblick
Das Tool wurde von Grund auf so konzipiert, dass es sich nahtlos in bestehende Workflows einfügt und die Integrität der Originalsammlung zu 100 % schützt. Zu den wichtigsten Features gehören:
Dual Library Management (Bibliothek A & B): Getrennte Verwaltung zweier Musiksammlungen zum direkten datenbankgestützten Vergleich.
Smarter Delta-Scan: Blitzschnelle Aktualisierung der Indizierung durch Prüfung von Dateigrößen und Pfaden, ohne Metadaten unnötig neu einzulesen.
Winamp-Style Media Library: Strukturierte Navigation über Filter (Künstler -> Alben -> Tracks) inklusive flexibler Spaltensortierung und Live-Suche.
Toleranter Recovery-Algorithmus: Mehrstufiger Abgleich zur Rettung beschädigter Dateistrukturen auf alten USB-Sticks. (Sofern die Originaldateien noch in der Bibliothek A vorhanden sind)
Native Drag & Drop Out: Direktes Herüberziehen von Tracks aus der Software in DJ-Programme wie Traktor oder Rekordbox.
[MP3val-Integration: Tiefenprüfung von MPEG-Audio-Streams auf Header- und Frame-Fehler.]
1. Architektur und Performance: Die SQLite-Datenbank
Um auch bei Sammlungen mit zehntausenden Titeln flüssige Suchergebnisse zu garantieren, setzt das Tool auf eine lokale SQLite-Datenbank (
dj_library.db).Beim ersten Indizieren liest das Skript mithilfe der Python-Bibliothek
PythontinytagMetadaten wie Artist, Titel, Album, Genre, Jahr, Bitrate und Samplerate aus. Um komplexe Abfragen (wie den Bibliotheksvergleich) drastisch zu beschleunigen, greift das System auf optimierte Indizes zurück:self.cursor.execute('CREATE INDEX IF NOT EXISTS idx_lib_artist_title ON tracks(library_id, artist, title)') self.cursor.execute('CREATE INDEX IF NOT EXISTS idx_lib_filename ON tracks(library_id, filename)')
Wartungsfunktionen: Über den Einstellungs-Tab lässt sich die Datenbank jederzeit bereinigen, per Knopfdruck als
.db-Datei sichern oder aus einem Backup wiederherstellen.2. Die Benutzeroberfläche: Winamp-Feeling trifft moderne Usability
Die Benutzeroberfläche basiert auf dem in Python integrierten
tkinter-Framework, erweitert um ein responsives Multi-Tab-Layout.
(Screenshot der Media Library im Winamp-Layout)
Gruppierung und Sortierung
Jede Liste im Programm ist spaltensortierbar. Durch einen Klick auf den Spaltenkopf wird die Ansicht auf- oder absteigend sortiert (unter Berücksichtigung numerischer Werte wie Bitraten). Zudem lässt sich die Ansicht flexibel umschalten:
Künstler -> Alben
Alben -> Künstler
Integrierte Vorschau & Explorer-Sprung
Jeder Track verfügt in der Tabelle über zwei Aktionsspalten:
[ 📂 ](Ordner öffnen): Öffnet den Windows-Explorer direkt im Quellverzeichnis der MP3 und markiert die Datei.
[ ▶ ](Vorschau): Startet die Audiowiedergabe über den standardmäßigen System-Player, um Tracks schnell vorzuhören.3. Intelligenter Stick-Recovery-Workflow
Wenn MP3s beim Kopieren auf einen USB-Stick beschädigt wurden oder durch ältere Export-Tools umbenannt wurden, greift die mehrstufige Such- und Wiederherstellungs-Engine des Tools.
Der Ablauf:
Analyse-Phase: Das Tool scannt den defekten Stick und versucht, über einen 5-stufigen Fallback-Mechanismus (exakter Tag-Match $\rightarrow$ exakter Dateiname $\rightarrow$ Fuzzy-Suche über Teilstrings) die korrespondierende Master-Datei in Bibliothek A zu finden.
Der Recovery Manager: Es öffnet sich eine Vorschau-Übersicht. Alle gefundenen Treffer sind standardmäßig mit einer Checkbox (
☑) versehen. So wird ausgeschlossen, dass bereits intakte Dateien überschrieben werden. (Diese solltest du sinnvollerweise abwählen)Manuelle Suche für Härtefälle: Tracks, die vom Algorithmus nicht automatisch zugeordnet werden konnten, landen in einer separaten Liste. Über einen integrierten Suchdialog kann manuell nach Alternativen in der Bibliothek gefiltert und per Mausklick verknüpft werden.
(Screenshot des Recovery Managers)
4. Bibliotheken vergleichen: Inkonsistenzen aufdecken
Mit dem Dual-Library-Ansatz (Bibliothek A und Bibliothek B) können zwei Musikordner (z. B. lokales Archiv vs. Backup-Partition) miteinander abgeglichen werden.
Über die Checkbox „Zeige nur Tracks, die in der anderen Bibliothek fehlen“ filtert die Datenbank alle Unstimmigkeiten heraus. Ein SQL-Statement auf Basis von
NOT EXISTSgleicht dabei sowohl Dateinamen als auch die Kombination aus Künstler und Titel ab.
Report-Export: Die so ermittelten Diskrepanzen lassen sich über den Button „Inkonsistenz-Report exportieren“ als strukturierte Textdatei (
.txt) abspeichern.5. Externe Kompatibilität: Echtes Drag & Drop
Um das Tool universell einsetzbar zu machen, unterstützt es natives Drag & Drop über das Paket
tkinterdnd2.Markierte Titel in der Hauptbibliothek oder der Sidelist können angeklickt und mit gedrückter Maustaste direkt in externe Anwendungen wie Traktor Pro, Rekordbox, VLC oder den Windows Explorer gezogen werden. Die Anwendung übergibt dabei saubere Windows-Dateipfade (
CF_HDROP).6. Integritätsprüfung mit MP3val
Beschädigte MPEG-Header führen im Club oft zu unerwarteten Playback-Abbrüchen. Das Tool bietet eine direkte Schnittstelle zu dem Kommandozeilen-Programm MP3val.
(Screenshot vom Konsistenzcheck mit MP3val)
Sicherheits-Check: Sowohl die temporäre Export-Sidelist als auch der gesamte Ziel-USB-Stick können auf Knopfdruck validiert werden.
Automatische Reparatur: Werden Stream-Fehler (
WARNINGoderERROR) entdeckt, listet das Programm diese auf. Ein Klick auf „Defekte Dateien reparieren“ ruft MP3val im Hintergrund mit Parametern auf, die fehlerhafte Frames bereinigen, Backup-Dateien bereinigen (-nb) und Original-Zeitstempel erhalten (-t).Lizenz-Hinweis: Da MP3val aus Lizenzgründen nicht mitgeliefert wird, erkennt das Tool automatisch, ob sich die
mp3val.exeim lokalen Unterordnermp3val/befindet (eine entsprechende Anleitung liegt dem Repository bei). Fehlt sie, werden die entsprechenden Funktionen im UI sauber deaktiviert.Fazit und Download
Das DJ Database & Recovery Tool schließt die Lücke zwischen starrer DJ-Software und flexiblem Dateimanagement. Es gibt die volle Kontrolle über die eigene Musiksammlung zurück, läuft komplett lokal (Datenschutz-optimiert) und lässt sich dank PyInstaller mit wenigen Befehlen als eigenständige
.exefür Windows-Systeme verpacken.Den vollständigen Quellcode sowie die Anleitung zum Nachbauen und Kompilieren findest du im zugehörigen GitHub-Repository.