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:
2025-07-21 11:59:49 +02:00
parent 6dc635762c
commit e46d4d3b28

185
README.md
View File

@@ -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!