# 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 ```bash # Repository klonen git clone cd rekordbox # Abhängigkeiten sind bereits in Python enthalten (xml.etree.ElementTree) ``` ## 📖 Verwendung ### Grundlegende Syntax ```bash python main.py [optionen] ``` ### Copy-Modus (Empfohlen) ```bash # 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 ```bash # 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 ```bash # 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 ```bash 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) ```xml ``` ### Memory Cue (Num = -1) ```xml ``` ## 📋 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 1. **Backup erstellen** (automatisch, außer mit `--no-backup`) 2. **XML laden und parsen** 3. **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) 4. **XML speichern** 5. **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!