# convert_m4b.sh Konvertiert `.m4b`-Hörbuchdateien in einzelne `.mp3`-Dateien pro Kapitel – mit automatischer ID3-Tagging und nullgepaddeter Tracknummer im Dateinamen. ## Voraussetzungen ```bash sudo apt-get install ffmpeg id3v2 ``` ## Verwendung ```bash cd /pfad/zum/hörbuch/ bash ~/convert_m4b.sh ``` Nach erfolgreicher Konvertierung die Originaldateien manuell entfernen: ```bash rm *.m4b ``` > Die `.m4b`-Dateien werden absichtlich nicht automatisch gelöscht, damit bei einem Fehler nichts verloren geht. ## Was das Script macht 1. Alle `.m4b`-Dateien im aktuellen Verzeichnis werden der Reihe nach verarbeitet (alphabetisch). 2. Jede `.m4b` wird zunächst als Ganzes in eine temporäre `.mp3` umgewandelt (Mono, 22 050 Hz, 64 kbit/s). 3. Die Kapitelmarken werden aus den Metadaten ausgelesen. 4. Für jedes Kapitel wird eine eigene `.mp3` mit korrekten Start-/Endzeiten ausgeschnitten. 5. ID3-Tags werden gesetzt: Titel, Album und Tracknummer. 6. Die temporäre Gesamt-MP3 wird nach der Aufteilung wieder gelöscht. ## Ausgabeformat Die erzeugten Dateien folgen diesem Namensschema: ``` - - .mp3 ``` **Beispiel:** ``` Knife of Dreams - 01 - Chapter 01 - Entrapped.mp3 Knife of Dreams - 02 - Chapter 02 - Embers Falling on Snow.mp3 ... Knife of Dreams - 23 - Chapter 18 - News for the Dragon.mp3 ``` Die Tracknummer ist immer zweistellig mit führender Null (`01`, `02`, … `99`). Bei mehr als 99 Kapiteln das Format im Script auf `%03d` ändern. ### Gesetzte ID3-Tags | Tag | Inhalt | |-----------|-------------------------------------| | `title` | Kapitelname (z. B. `Chapter 01 - Entrapped`) | | `album` | Verzeichnisname des Hörbuchs | | `track` | Tracknummer (ohne führende Null) | ## Hinweise - Der **Albumname** wird automatisch aus dem aktuellen Verzeichnisnamen abgeleitet. Ein Komma im Verzeichnisnamen trennt Albumtitel und Untertitel – alles nach dem Komma wird ignoriert. - Existiert eine Ausgabedatei bereits (z. B. bei doppelten Kapitelnamen), wird automatisch ein Suffix angehängt: `_(1)`, `_(2)`, usw. - Bei mehreren `.m4b`-Dateien (z. B. Part 1 / Part 2) läuft die Tracknummer durchgehend weiter – die Dateien werden in alphabetischer Reihenfolge verarbeitet. - Der `ffmpeg`-Schritt zum Ausschneiden der Kapitel kopiert den Audio-Stream ohne erneutes Enkodieren (`-codec:a copy`), was schnell und verlustfrei ist. ## Abhängigkeiten | Tool | Zweck | |----------|--------------------------------------------| | `ffmpeg` | Konvertierung und Kapitelextraktion | | `id3v2` | Setzen der ID3v2-Tags in den MP3-Dateien |