Files

5.8 KiB

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

  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!