m4b_mp3.sh hinzugefügt

This commit is contained in:
alf
2026-03-26 10:52:34 +00:00
parent fa4f7a6789
commit 57bb585644

64
m4b_mp3.sh Normal file
View File

@ -0,0 +1,64 @@
#!/bin/bash
#
# sudo apt-get install id3v2 ffmpeg
#
# USAGE:
# cd /book title/
# bash ~/this_script_path.sh
# rm *.m4b (you need to manually remove the original in case something goes wrong)
#
#
# EXAMPLE:
#
# $ ls
# The Wheel of Time - Book 11 - Knife of Dreams, Part 1.m4b The Wheel of Time - Book 11 - Knife of Dreams, Part 2.m4b
# $ ~/convert_m4b.sh
# .....
#
# [OUTPUT]:
#
# File: Knife of Dreams - 01 - Chapter 18 - News for the Dragon.mp3
# Metadata: ID3v2.3
# Title: Chapter 18 - News for the Dragon
# Artist: Robert Jordan
# Album: Knife of Dreams
# Track: 1
# Genre: Audiobooks
#initial track number
track=1
#assumes ( if there are multiple files Part 01/Part 02) that they are in alphabetical order
for i in *.m4b;
do
name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -i "$i" -acodec libmp3lame -ar 22050 -ab 64k "$name.mp3"
full_file_path="$name.mp3"
#split chapters
title=$(pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,' | cut -d , -f 1)
ffmpeg -i "$full_file_path" 2> tmp.txt
while read -r first _ _ start _ end; do
if [[ "${first}" = "Chapter" ]]
then
read # discard line with Metadata:
read _ _ chapter
chapter=$(sed -re ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr" <<<$chapter)
track_padded=$(printf "%02d" "$track") # <-- neu: nullgepaddet
base_name="${title} - ${track_padded} - ${chapter}" # <-- geändert
chapter_file="${base_name}.mp3"
suffix=1
while [[ -e "$chapter_file" ]]; do
chapter_file="${base_name}_(${suffix}).mp3"
suffix=$((suffix+1))
done
echo "processing $chapter"
</dev/null ffmpeg -loglevel error -stats -i "${full_file_path}" -ss "${start%?}" -to "${end}" -codec:a copy -metadata track="${track}" "${chapter_file}"
id3v2 --song "$chapter" "$chapter_file"
id3v2 --album "$title" "$chapter_file"
id3v2 --track "$track" "$chapter_file"
echo "$title - $track_padded - $chapter"
track=$((track+1))
fi
done <tmp.txt
rm tmp.txt
rm "$full_file_path"
done;