# toni-sync Ein CLI-Tool zur Verwaltung von Kreativ-Tonies: Es synchronisiert lokale Audio-Ordner (z. B. exportierte Deezer-Playlists) automatisch zu den passenden Kreativ-Tonies über die inoffizielle TonieCloud-API. Geschrieben in Go, kompiliert zu einer einzigen statischen Binary - keine Laufzeit- Abhängigkeiten (kein Python/pip nötig). > **Hinweis:** toni-sync lädt selbst keine Musik von Deezer herunter. Das > Herunterladen/Umgehen von DRM-geschützten Streams verstößt gegen die > Nutzungsbedingungen von Deezer und ggf. gegen Urheberrecht. Lege deine > bereits legal exportierten Audiodateien einfach in die konfigurierten > lokalen Ordner - toni-sync kümmert sich nur um den Abgleich mit der > TonieCloud. ## Installation Benötigt wird nur ein Go-Toolchain (>= 1.21) zum Bauen - danach ist das Ergebnis eine einzelne Binary ohne weitere Abhängigkeiten: ```bash go build -o toni-sync ./cmd/toni-sync ./toni-sync --help ``` Oder direkt installieren (landet in `$(go env GOPATH)/bin`): ```bash go install ./cmd/toni-sync ``` ## Anmeldedaten toni-sync benötigt deine TonieCloud-Zugangsdaten (dieselben wie in der Tonies-App). Sie werden **nicht** gespeichert, sondern bei jedem Aufruf über Umgebungsvariablen oder interaktiven Prompt abgefragt: ```bash export TONI_SYNC_USERNAME="you@example.com" export TONI_SYNC_PASSWORD="********" ``` Alternativ: `--username`/`--password` Flags bei `tonies list` und `sync`. ## Nutzung ### 1. Household- und Tonie-IDs herausfinden ```bash toni-sync tonies list ``` Beispielausgabe: ``` Household: Familie Müller [id=abcd-1234] - Peppa Wutz [id=ef01-5678] (12 chapters, 3600s) - Gute-Nacht-Geschichten [id=9876-4321] (0 chapters, 0s) ``` ### 2. Playlist <-> Toni Mapping konfigurieren ```bash toni-sync config add \ --name peppa-wutz \ --household-id abcd-1234 \ --tonie-id ef01-5678 \ --folder ~/Musik/deezer-export/peppa-wutz \ --playlist-ref "https://www.deezer.com/playlist/XXXXXXXXX" ``` Weitere Kommandos: ```bash toni-sync config list toni-sync config remove peppa-wutz ``` Konfiguration wird standardmäßig in `~/.config/toni-sync/config.yaml` gespeichert (überschreibbar via `--config-path` oder `TONI_SYNC_CONFIG`). ### 3. Synchronisieren Lege deine (legal exportierten) Audiodateien in den konfigurierten Ordner, z. B. `01 - Track.mp3`, `02 - Track.mp3`, ... - die alphabetische Dateireihenfolge bestimmt die Kapitelreihenfolge auf dem Tonie. ```bash # einzelnes Mapping toni-sync sync peppa-wutz # alle Mappings toni-sync sync --all # nur anzeigen, was sich ändern würde toni-sync sync --all --dry-run ``` `sync` lädt neue Dateien hoch, entfernt Kapitel, die lokal nicht mehr existieren (abschaltbar via `--no-prune` bei `config add`), und sortiert die Kapitel passend zur lokalen Dateireihenfolge. ## Unterstützte Audioformate `.mp3`, `.m4a`, `.aac`, `.ogg`, `.flac`, `.wav` ## Projektstruktur ``` cmd/toni-sync/ CLI-Einstiegspunkt (Cobra-Kommandos) internal/tonieapi/ Eigener, minimaler TonieCloud-API-Client internal/config/ Laden/Speichern der Playlist<->Toni-Mappings (YAML) internal/syncer/ Diff-/Apply-Logik zwischen lokalem Ordner und Tonie ``` ## Entwicklung / Tests ```bash go build ./... go vet ./... go test ./... ```