#!/usr/bin/env bash # ===Note for contributors======================================================================================================================== # This script interactively asks the user for the options to call AAXtoMP3 with. This first version does not include all options of AAXtoMP3 # since I tried to keep the dialog short, but I added an --advanced option, which is unused right now, but might be used in the future to add # more options which only show up if explicitely wanted. # If you want to add functionality please consider, whether the functionality you add might belong to the advanced options. # ===Variables==================================================================================================================================== # Help message help=$'\nUsage: interactiveAAXtoMP3 [--advanced] [--help]\n --advanced More options --help Print this message\n' summary="" # This will contain a summary of the options allready set. call="./AAXtoMP3" # This will contain the call for AAXtoMP3. advanced=0 # Toggles advanced options on or off. # ===Options====================================================================================================================================== while true; do case "$1" in # Advanced options. -a | --advanced ) advanced=1; shift ;; # Command synopsis. -h | --help ) echo -e "$help"; exit ;; # Anything else stops command line processing. * ) break ;; esac done # ===Cross platform compatible use grep and sed=================================================================================================== # ===Detect which annoying version of grep we have=== GREP=$(grep --version | grep -q GNU && echo "grep" || echo "ggrep") if ! [[ $(type -P "$GREP") ]]; then echo "$GREP (GNU grep) is not in your PATH" echo "Without it, this script will break." echo "On macOS, you may want to try: brew install grep" exit 1 fi # ===Detect which annoying version of sed we have=== SED=$(sed --version 2>&1 | $GREP -q GNU && echo "sed" || echo "gsed") if ! [[ $(type -P "$SED") ]]; then echo "$SED (GNU sed) is not in your PATH" echo "Without it, this script will break." echo "On macOS, you may want to try: brew install gnu-sed" exit 1 fi # ===Get options from last time=================================================================================================================== # ===Set default values=== lastcodec="mp3" lastcompression="4" lastchapters="yes" lastauthcode="" lastloglevel="1" # ===Get Values from last time=== if [ -f "interactive.txt" ]; then for ((i=1;i<=$(wc -l interactive.txt | cut -d " " -f 1);i++)) do line=$(head -$i interactive.txt | tail -1) case $(echo $line | cut -d " " -f 1 | $SED 's/.$//') in codec ) lastcodec="$(echo $line | cut -d " " -f 2)";; compression ) lastcompression="$(echo $line | cut -d " " -f 2)";; chapters ) lastchapters="$(echo $line | cut -d " " -f 2)";; authcode ) lastauthcode="$(echo $line | cut -d " " -f 2)";; loglevel ) lastloglevel="$(echo $line | cut -d " " -f 2)";; * ) rm interactive.txt; exit 1;; esac done fi # ===Get options for AAXtoMP3===================================================================================================================== # ===Codec=== while true; do clear; read -e -p "codec (mp3/m4a/m4b/flac/aac/opus): " -i "$lastcodec" codec case "$codec" in mp3 ) summary="$summary""codec: $codec"; call="$call -e:mp3"; break;; m4a ) summary="$summary""codec: $codec"; call="$call -e:m4a"; break;; m4b ) summary="$summary""codec: $codec"; call="$call -e:m4b"; break;; flac ) summary="$summary""codec: $codec"; call="$call --flac"; break;; aac ) summary="$summary""codec: $codec"; call="$call --aac"; break;; opus ) summary="$summary""codec: $codec"; call="$call --opus"; break;; esac done # ===Compression=== while true; do clear; echo -e "$summary" case "$codec" in mp3 ) maxlevel=9;; flac ) maxlevel=12;; opus ) maxlevel=10;; * ) break;; esac read -e -p "compression level (0-$maxlevel): " -i "$lastcompression" compression if [[ $compression =~ ^[0-9]+$ ]] && [[ "$compression" -ge "0" ]] && [[ "$compression" -le "$maxlevel" ]]; then summary="$summary""\ncompression level: $compression" call="$call --level $compression" break fi done # ===Chapters=== while true; do clear; echo -e "$summary" read -e -p "chapters (yes/no/chapternumber to continue with): " -i "$lastchapters" chapters case "$chapters" in ^[0-9]+$ ) summary="$summary""\nchapters: $chapters"; call="$call -c --continue ${chapters}"; break;; yes ) summary="$summary""\nchapters: $chapters"; call="$call -c"; break;; no ) summary="$summary""\nchapters: $chapters"; call="$call -s"; break;; esac done # ===Authcode=== if ! [ -r .authcode ] || [ -r ~/.authcode ]; then clear; echo -e "$summary" read -e -p "Authcode: " -i "$lastauthcode" authcode summary="$summary""\nauthcode: $authcode" call="$call -A $authcode" fi # ===Loglevel=== while true; do clear; echo -e "$summary" read -e -p "loglevel (0/1/2/3): " -i "$lastloglevel" loglevel if [[ $loglevel =~ ^[0-9]+$ ]] && [[ "$loglevel" -ge "0" ]] && [[ "$loglevel" -le "3" ]]; then summary="$summary""\nloglevel: $loglevel" call="$call -l $loglevel" break fi done # ===File=== clear; echo -e "$summary" read -p "aax-file: " file file="${file%\'}" #remove suffix ' if file is given via drag'n'drop file="${file#\'}" #remove prefix ' if file is given via drag'n'drop savefile="$summary" summary="$summary""\naax-file: $file" call="$call $(echo $file | $SED "s;~;$HOME;")" # ===Summerize chosen options and call AAXtoMP3=================================================================================================== # ===Summary=== clear; echo -e "$summary\n" echo -e "$call\n" # ===Save chosen options=== echo -e $savefile | $SED "s;\ level:;:;" > interactive.txt # ===Call AAXtoMP3=== $call