Rekordbox XML Hot Cue Tools
Ein Python-Skript zur automatischen Verwaltung von Hot Cues und Memory Cues in Rekordbox XML-Dateien.
🎯 Funktionen
1. Copy-Modus: Hot Cues als Memory Cues kopieren
- Kopiert alle vorhandenen Hot Cues als zusätzliche Memory Cues
- Die ursprünglichen Hot Cues bleiben erhalten
- Automatische Duplikatserkennung verhindert mehrfache Kopierung
2. Convert-Modus: Hot Cues zu Memory Cues konvertieren
- Wandelt alle Hot Cues direkt in Memory Cues um
- Die Hot Cues werden dabei entfernt
- Entfernt automatisch Farb-Attribute (Red, Green, Blue)
3. Automatische Umbenennung
- Der erste Hot Cue mit dem Namen "1.1Bars" wird automatisch zu "Start" umbenannt
- Die Umbenennung erfolgt am Original Hot Cue vor dem Kopieren
4. Cleanup-Modus: Leere Hot Cues und Memory Cues löschen
- Entfernt alle Hot Cues und Memory Cues, deren Name leer ist oder nur aus Leerzeichen besteht
- Praktisch für die Bereinigung von XML-Dateien
🛡️ Schutzfunktionen
Das Skript überspringt Tracks automatisch in folgenden Fällen:
Track-Level Schutz
- Keine Hot Cues: Tracks ohne Hot Cues werden ignoriert
- Einzelner Hot Cue: Tracks mit nur 1 Hot Cue werden übersprungen
- Bereits konfiguriert: Tracks mit mehr als 1 Memory Cue werden nicht bearbeitet
Cue-Level Schutz
- Duplikatserkennung: Hot Cues werden nicht kopiert, wenn bereits ein Memory Cue an derselben Position existiert
- Position-Vergleich: Basiert auf dem "Start"-Attribut der POSITION_MARK Elemente
📋 Voraussetzungen
- Python 3.6 oder höher
- Rekordbox XML-Datei
🚀 Installation
# Repository klonen
git clone <repository-url>
cd rekordbox
# Abhängigkeiten sind bereits in Python enthalten (xml.etree.ElementTree)
📖 Verwendung
Grundlegende Syntax
python main.py <command> <xml_file> [optionen]
Copy-Modus (Empfohlen)
# Hot Cues als Memory Cues kopieren
python main.py copy rekordbox.xml
# In neue Datei speichern
python main.py copy rekordbox.xml -o rekordbox_modified.xml
# Ohne automatisches Backup
python main.py copy rekordbox.xml --no-backup
Convert-Modus
# Alle Hot Cues zu Memory Cues konvertieren
python main.py convert rekordbox.xml
# In neue Datei speichern
python main.py convert rekordbox.xml -o rekordbox_converted.xml
Cleanup-Modus
# Alle Hot Cues und Memory Cues ohne Text löschen
python main.py cleanup rekordbox.xml
# In neue Datei speichern
python main.py cleanup rekordbox.xml -o rekordbox_cleaned.xml
Hilfe anzeigen
python main.py --help
python main.py copy --help
python main.py convert --help
python main.py cleanup --help
🔧 Optionen
Option | Beschreibung |
---|---|
-o, --output |
Ausgabedatei (optional, überschreibt sonst die Original-Datei) |
--no-backup |
Kein automatisches Backup erstellen |
📊 Ausgabe-Beispiel
Backup erstellt: rekordbox.xml.backup
Hot Cue 0 (Start: 16.235) von '1.1Bars' zu 'Start' umbenannt
Hot Cue 0 (Start: 16.235) als Memory Cue kopiert
Hot Cue 1 (Start: 64.471) als Memory Cue kopiert
Hot Cue 2 (Start: 128.941) übersprungen - Memory Cue existiert bereits
Track 'Artist - Title' übersprungen - bereits 3 Memory Cues vorhanden
Track 'Artist2 - Title2' übersprungen - nur 1 Hot Cue vorhanden
Ergebnis gespeichert in: rekordbox.xml
Verarbeitete Tracks: 15
Übersprungene Tracks: 8
Kopierte Hot Cues: 42
Übersprungene Hot Cues: 3
(Übersprungene Tracks: bereits mehr als 1 Memory Cue vorhanden oder nur 1 Hot Cue)
(Übersprungene Hot Cues: Memory Cue an gleicher Position bereits vorhanden)
Backup erstellt: rekordbox.xml.backup
Ergebnis gespeichert in: rekordbox.xml
Gelöschte Cues: 7
🔍 XML-Struktur
Das Skript arbeitet mit Rekordbox XML POSITION_MARK Elementen:
Hot Cue (Num >= 0)
<POSITION_MARK Name="" Type="0" Start="16.235" Num="0" Red="0" Green="255" Blue="0"/>
Memory Cue (Num = -1)
<POSITION_MARK Name="" Type="0" Start="16.235" Num="-1"/>
📋 Bearbeitungsbedingungen
Tracks werden bearbeitet wenn:
- ✅ 2 oder mehr Hot Cues vorhanden sind
- ✅ Maximal 1 Memory Cue vorhanden ist
Tracks werden übersprungen wenn:
- ❌ Keine Hot Cues vorhanden sind
- ❌ Nur 1 Hot Cue vorhanden ist
- ❌ Mehr als 1 Memory Cue bereits vorhanden ist
Hot Cues werden übersprungen wenn:
- ❌ Bereits ein Memory Cue an derselben Start-Position existiert
🔄 Workflow
- Backup erstellen (automatisch, außer mit
--no-backup
) - XML laden und parsen
- Für jeden Track:
- Memory Cues sammeln und Position-Set erstellen
- Hot Cues sammeln und nach Start-Zeit sortieren
- Schutzregeln prüfen (Anzahl Hot Cues, Anzahl Memory Cues)
- Ersten Hot Cue "1.1Bars" → "Start" umbenennen (falls vorhanden)
- Hot Cues als Memory Cues kopieren (mit Duplikatsprüfung)
- XML speichern
- Statistiken ausgeben
⚠️ Sicherheitshinweise
- Automatische Backups: Das Skript erstellt automatisch Backups der Original-Datei
- Nicht-destruktiv: Der Copy-Modus behält alle ursprünglichen Hot Cues bei
- Duplikatschutz: Verhindert mehrfache Ausführung auf derselben Datei
- Bestandsschutz: Respektiert bereits konfigurierte Memory Cue-Setups
🐛 Fehlerbehebung
Häufige Probleme
"XML-Datei nicht gefunden"
- Prüfen Sie den Dateipfad
- Verwenden Sie absolute Pfade oder navigieren Sie in das richtige Verzeichnis
"Fehler beim Parsen der XML-Datei"
- Die XML-Datei ist möglicherweise beschädigt
- Verwenden Sie eine gültige Rekordbox XML-Export-Datei
"Keine Tracks verarbeitet"
- Alle Tracks haben entweder keine/einen Hot Cue oder sind bereits konfiguriert
- Prüfen Sie die Ausgabe für Details zu übersprungenen Tracks
📝 Lizenz
Dieses Projekt steht unter der MIT-Lizenz.
🤝 Beitragen
Feedback und Verbesserungsvorschläge sind willkommen!
Description
Languages
Python
100%