m4b_mp3.sh hinzugefügt
This commit is contained in:
64
m4b_mp3.sh
Normal file
64
m4b_mp3.sh
Normal 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;
|
||||
Reference in New Issue
Block a user