diff --git a/README.md b/README.md index e69de29..d9393cb 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,185 @@ +# 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 + +## 🛡️ 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 +``` + +### Hilfe anzeigen + +```bash +python main.py --help +python main.py copy --help +python main.py convert --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) +``` + +## 🔍 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!