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-tool
vianix 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.sh
ausfü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-tool
anhand von Track‑Infos/Dateinamen.