| out | ||
| src | ||
| .gitignore | ||
| README.md | ||
| to-m4b.sh | ||
to-m4b
Kleines Bash‑Skript, das Hörbuch‑Ordner unter src/ erkennt und mit
m4b-tool zu einzelnen .m4b‑Dateien
zusammenführt. Metadaten (Autor, Serie, Titel, Jahr, Sprecher:in) werden aus
der Ordnerstruktur extrahiert und als Tags gesetzt. Die Ergebnisse werden unter
out/ abgelegt.
Das Skript startet
m4b-toolüber Nix (nix run github:sandreas/m4b-tool#m4b-tool-libfdk).
Voraussetzungen
- Nix installiert (für den Aufruf von 
m4b-toolvianix run) - Audio‑Quellen in unterstützten Formaten: 
mp3,m4a,m4b,aac,flac,wav,ogg - Bash (unter macOS/Linux vorhanden)
 
Quickstart
- Quellen in die passende Ordnerstruktur unter 
src/legen (siehe Beispiele unten). - Script ausführbar machen: 
chmod +x to-m4b.sh - Konvertierung starten: 
./to-m4b.sh - Ergebnis unter 
out/prüfen. 
Verzeichnisstruktur
Das Skript erwartet unter src/ je Hörbuch einen Ordner in einer der beiden Formen:
- Serie (mit Folgennummer)
 
src/<Autor>/<Serie>/Book <Folge> - <YYYY> - <Titel> {<Sprecher>}/
Beispiel:
src/WinterZeit Verlag/Das Schwarze Auge/Book 15 - 2022 - Auf Schusters Rappen/
  249_Das schwarze Auge_Teil 1 - Folge 15_ Auf Schusters Rappen.ogg
  ...
- Einzelband (ohne Serie)
 
src/<Autor>/<YYYY> - <Titel> {<Sprecher>}/
Die Angabe {<Sprecher>} ist optional; Leerzeichen dürfen enthalten sein.
Ausgabepfade
Für jede erkannte Quelle wird genau eine .m4b erzeugt und unter out/ abgelegt.
- Serie:
- Ordner: 
out/<Autor>/<Serie>/Book <NN> - <YYYY> - <Titel>/ - Datei:  
<YYYY> - <Titel> {<Sprecher>}.m4b 
 - Ordner: 
 - Einzelband:
- Ordner: 
out/<Autor>/<YYYY> - <Titel> {<Sprecher>}/ - Datei:  
<YYYY> - <Titel> {<Sprecher>}.m4b 
 - Ordner: 
 
Hinweis: <NN> ist die null‑aufgefüllte Folgennummer (Standard: 2 Stellen, z. B. 01).
Verwendete Tags
- Autor → 
writer - Sprecher:in → 
artist - Titel → 
album - Jahr → 
year - Serie → 
series, Folgennummer →series-part 
Nutzung
- Quellen in die passende Ordnerstruktur unter 
src/legen (siehe oben). - Skript ausführbar machen (einmalig):
 
chmod +x to-m4b.sh
- Konvertierung starten:
 
./to-m4b.sh
Das Skript durchsucht src/ rekursiv auf den erwarteten Ebenen, erzeugt pro
gefundenem Hörbuch eine .m4b und schreibt Ausgaben nach out/.
Konfiguration
Die wichtigsten Einstellungen stehen am Anfang von to-m4b.sh und können bei Bedarf angepasst werden:
# to-m4b.sh (Auszug)
LEADING_ZEROES=2   # Stellen für Serienfolgen (z. B. 01, 02, ...)
SRC="${script_dir}/src"  # Quellverzeichnis
OUT="${script_dir}/out"  # Zielverzeichnis
Weitere relevante m4b-tool‑Parameter (im Skript m4b-merge()):
--jobs=6(Parallelität)--audio-samplerate=44100--audio-quality=100- Ausführung über 
m4b-tool-libfdk(AAC‑Encoder libfdk_aac) 
Wenn du m4b-tool lokal ohne Nix verwenden willst, kannst du den Aufruf in
m4b-merge() entsprechend auf ein lokales m4b-tool ändern.
Beispiele
Serien‑Quelle (src):
src/WinterZeit Verlag/Das Schwarze Auge/Book 15 - 2022 - Auf Schusters Rappen/
  249_Das schwarze Auge_Teil 1 - Folge 15_ Auf Schusters Rappen.ogg
  250_Das schwarze Auge_Teil 2 - Folge 15_ Auf Schusters Rappen.ogg
  ...
Serien‑Ergebnis (out):
out/WinterZeit Verlag/Das Schwarze Auge/Book 15 - 2022 - Auf Schusters Rappen/
  2022 - Auf Schusters Rappen.m4b
Einzelband‑Quelle (src):
src/Corvus Corax/2017 - Der Fluch des Drachen/
  101_Intro.flac
  102_Nimmer mehr (Die Ballade von Adamas).flac
  ...
Einzelband‑Ergebnis (out):
out/Corvus Corax/2017 - Der Fluch des Drachen/
  2017 - Der Fluch des Drachen.m4b
Fehlersuche
- „No book directories found …“: Struktur unter 
src/prüfen; siehe Abschnitt „Verzeichnisstruktur“. - „Skipping '…': could not parse …“: Ordnername an die erwartten Muster anpassen.
 - „nix: command not found“: Nix installieren oder den 
m4b-tool‑Aufruf auf ein lokales Binary umstellen. - „permission denied“ beim Start: 
chmod +x to-m4b.shausführen. 
Hinweise
- Cover/weitere Dateien im Quellordner werden nicht explizit an 
m4b-toolübergeben; das Tagging beruht vollständig auf der Ordnerbenennung. - Unterstützte Audioformate werden automatisch erkannt; die Reihenfolge bestimmt 
m4b-toolanhand von Track‑Infos/Dateinamen.