#!/bin/bash
IFS="
"
usage() {
echo "Usage:"
echo " $0 [-n #]
"
echo ""
echo " -n Quality 1..10 (default: 3.0"
echo ""
echo "Example:"
echo " ~/bin/prepare_audio.sh ; rm ./*.(ogg|mp3) ; mv smalleroggs/* . ; rm -r smalleroggs"
}
QUALITY="3.0"
while getopts n:h opt ; do
case "$opt" in
-) break ;;
[hH]) usage ; exit ;;
n) QUALITY=$OPTARG ;;
esac
done
shift $((OPTIND - 1))
DIR="$(pwd)"
if [ -d "$1" ] ; then
DIR="$1"
fi
mkdir -p "$DIR/smalleroggs"
TMP="$(mktemp)"
find "$DIR" -maxdepth 1 -iname '*.ogg' -o -iname '*.mp3' -o -iname '*.flac'|while read -r FILE ; do
NAME=$( basename "$FILE" )
echo "Processing \"$NAME\"..."
case $FILE in
*\.ogg)
oggdec "$FILE" -o "$TMP"
oggenc -q "$QUALITY" -o "$DIR/smalleroggs/$NAME" "$TMP"
if [ $? -eq 0 ] ; then
vorbiscomment -l "$FILE" | vorbiscomment -w -c /dev/stdin "$DIR/smalleroggs/$NAME"
fi
;;
*\.mp3)
mp32ogg --quality "$QUALITY" "$FILE"
mv "${FILE/.mp3/.ogg}" "$DIR/smalleroggs"
;;
*\.flac)
oggenc -q "$QUALITY" -o "$DIR/smalleroggs/${NAME/.flac/.ogg}" "$FILE"
;;
*)
echo "don’t know how to handle '$FILE'..."
;;
esac
done
rm "$TMP"