diff --git a/flac2mp3.sh b/flac2mp3.sh new file mode 100755 index 0000000..69ab5fd --- /dev/null +++ b/flac2mp3.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +INPUT="$1" + +METATAGS="--export-tags-to=" +LAMEOPTS="" +ERROR_STATUS="0" + +function usage () { + + echo + echo "Usage: $0 " + echo + exit 1 +} + +function error () { + + ERROR="$1" + MSG="$2" + + echo "Error: $MSG" + exit 1 +} + + +if [ -z "$INPUT" ] +then + usage +fi + +if [ ! -e "$INPUT" ] +then + echo "File $INPUT does not exist!" + exit 1 +fi + +FILETYPE="`file -b "$INPUT" | awk '{ print $1 }'`" +if [ ! "$FILETYPE" == "FLAC" ] +then + echo "File $FILE is not a flac file..." + exit 0 +fi + +checkvar () { + + VAR="$1" + + if [ -z "$VAR" ] || [ "$VAR" == "" ] + then + echo "Unknown" + else + echo "$VAR" + fi +} + + +METATAGS="TITLE ARTIST ALBUM GENRE COMPOSER CONDUCTOR ENSEMBLE TRACKNUMBER DATE ALBUM ARTIST DISCNUMBER DISC" + +function convert () { + + FILE="$1" + META="$FILE.meta" + MP3FILE="`echo ${FILE%flac}mp3`" + DIR="`dirname "$FILE"`" + + metaflac --export-tags-to="$META" "$FILE" + + ARTIST="`metaflac "$FILE" --show-tag=ARTIST | sed s/.*=//g`" + TITLE="`metaflac "$FILE" --show-tag=TITLE | sed s/.*=//g`" + ALBUM="`metaflac "$FILE" --show-tag=ALBUM | sed s/.*=//g`" + GENRE="`metaflac "$FILE" --show-tag=GENRE | sed s/.*=//g`" + TRACKNUMBER="`metaflac "$FILE" --show-tag=TRACKNUMBER | sed s/.*=//g`" + + for x in $METATAGS + do + declare $x="`grep "$x" "$META" | cut -d "=" -f 2`" + + VAR=$(eval echo " \$$x") + VAR="`checkvar $VAR`" + done + + + flac -s -c -d "$FILE" | lame --tt "$TITLE" --tn "$TRACKNUMBER" --tg "$GENRE" --ty "$DATE" --ta "$ARTIST" --tl "$ALBUM" --ty "$YEAR" --preset insane - "$MP3FILE" + ERROR_STATUS="$?" + if [ -e "$META" ] + then + rm "$META" + fi +} + +convert "$INPUT" + +exit "$ERROR_STATUS"