#!/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 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"