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