Füge README.md hinzu und dokumentiere Funktionen zur Verwaltung von Hot Cues und Memory Cues in Rekordbox XML-Dateien.
This commit is contained in:
185
README.md
185
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 <repository-url>
|
||||||
|
cd rekordbox
|
||||||
|
|
||||||
|
# Abhängigkeiten sind bereits in Python enthalten (xml.etree.ElementTree)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📖 Verwendung
|
||||||
|
|
||||||
|
### Grundlegende Syntax
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py <command> <xml_file> [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
|
||||||
|
<POSITION_MARK Name="" Type="0" Start="16.235" Num="0" Red="0" Green="255" Blue="0"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Memory Cue (Num = -1)
|
||||||
|
```xml
|
||||||
|
<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!
|
||||||
|
Reference in New Issue
Block a user