- #!/bin/bash
-
-
-
-
-
-
- ext=${1##*.}
- echo "extension: $ext"
-
- shortname=$(basename "$1" ".$ext")
- picture=$shortname.jpg
- chapterdata=$shortname.dat
- metadata=$shortname.tmp
- echo "shortname: $shortname"
-
-
- if [[ $2 = "mp3" ]]; then
- outputtype="mp3"
- codec="libmp3lame"
- elif [[ $2 = "m4a" ]]; then
- outputtype="m4a"
- codec="copy"
- else
- outputtype="m4b"
- codec="copy"
- fi
- echo "outputtype: |$outputtype|"
-
-
- [ ! -e "$chapterdata" ] && ffprobe -loglevel error \
- -i "$1" -print_format json -show_chapters -loglevel error -sexagesimal \
- >"$chapterdata"
- read -p "Now edit the file $chapterdata if required. Press ENTER to continue."
-
-
-
- readarray -t id <<< $(jq -r '.chapters[].id' "$chapterdata")
- readarray -t start <<< $(jq -r '.chapters[].start_time' "$chapterdata")
- readarray -t end <<< $(jq -r '.chapters[].end_time' "$chapterdata")
- readarray -t title <<< $(jq -r '.chapters[].tags.title' "$chapterdata")
-
-
- ffmpeg -loglevel error -i "$1" -f ffmetadata "$metadata"
- artist_sort=$(sed 's/.*=\(.*\)/\1/' <<<$(cat "$metadata" |grep -m 1 ^sort_artist))
- album_sort=$(sed 's/.*=\(.*\)/\1/' <<<$(cat "$metadata" |grep -m 1 ^sort_album))
- rm "$metadata"
-
-
- mkdir -p "$shortname"
- echo -e "\fID\tStart Time\tEnd Time\tTitle\t\tFilename"
- for i in ${!id[@]}; do
- let trackno=$i+1
-
- outname="$shortname/$(printf "%02d" $trackno). $shortname - ${title[$i]}.$outputtype"
-
- outname=$(sed 's/:/_/g' <<< $outname)
- echo -e "${id[$i]}\t${start[$i]}\t${end[$i]}\t${title[$i]}\n\t\t$(basename "$outname")"
- ffmpeg -loglevel error -i "$1" -vn -c $codec \
- -ss ${start[$i]} -to ${end[$i]} \
- -metadata title="${title[$i]}" \
- -metadata track=$trackno \
- -map_metadata 0 -id3v2_version 3 \
- "$outname"
- [[ $outputtype == m4* ]] && AtomicParsley "$outname" \
- --artwork "$picture" --overWrite \
- --sortOrder artist "$artist_sort" \
- --sortOrder album "$album_sort" \
- > /dev/null
- done
|