| 1 | #!/bin/bash |
| 2 | # Print mediawiki code chapter headings and timecodes from audiobook file |
| 3 | # Usage: mw_get_audiobook_chapters.sh [file] ([int offset]) |
| 4 | # Input: arg1: path to audiobook |
| 5 | # arg2: offset for chapter numbers |
| 6 | # Example: mw_get_audiobook_chapters.sh input.m4b |
| 7 | # Version: 0.0.1 |
| 8 | |
| 9 | |
| 10 | fin="$1"; |
| 11 | n=0 |
| 12 | while read -r line; do |
| 13 | if [[ $((n % 2)) -eq 0 ]]; then |
| 14 | chap="$(sed -e 's/^0*//' <<< "$line")"; # remove leading zero |
| 15 | printf "====%s====\n" "$chap"; # output wikicode header |
| 16 | elif [[ $((n % 2)) -eq 1 ]]; then |
| 17 | printf "%s\n\n" "$line"; # output timecode |
| 18 | fi; |
| 19 | #declare -p n line; # debug |
| 20 | ((n++)); |
| 21 | done < <(ffprobe -i "$fin" -print_format json -show_chapters -sexagesimal | \ |
| 22 | jq \ |
| 23 | -r '.chapters[] | (.tags.title) + "\n" + (.start_time | gsub("\\.\\d+$"; "") )' |
| 24 | ); |