X-Git-Url: https://git.hcoop.net/clinton/abcde.git/blobdiff_plain/a9a23379b83abc07f471f984e6e51ea90f8f35ac..cd4b63fadbb89413d51ce99ceef817ddeb9cf4e9:/abcde diff --git a/abcde b/abcde index 99e1cf5..00440e1 100755 --- a/abcde +++ b/abcde @@ -11,7 +11,7 @@ # Copyright for this work is to expire January 1, 2010, after which it # shall be public domain. -VERSION="2.3.99" +VERSION="2.3.99-$Id$" usage () { @@ -83,12 +83,17 @@ f_seq_row () f_seq_line () { i=$1 - while [ $i -ne `expr $2 + 1` ] - do - printf $i" " - i=`expr $i + 1` - done - echo + if echo i | grep -q "[[:digit:]]" ; then + while [ $i -ne `expr $2 + 1` ] + do + printf $i" " + i=`expr $i + 1` + done + echo + else + echo "abcde: syntax error while processing track numbers" >&2 + exit 1 + fi } # Functions to replace the need of awk {print $1} and {print $NF} @@ -209,7 +214,7 @@ run_command () fi fi case "$1" in - normalize) + normalize|normalize-audio) if [ "$RETURN" = "2" ]; then # File was already normalized. RETURN=0 @@ -281,6 +286,81 @@ relpath () echo $TO } +# do_getcddbinfo +# Finds an specific field from cddbinfo +# +# TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2 -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//') +# TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\]) +# TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')" + +do_getcddbinfo() +{ + case $1 in + TRACKNAME1) + TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')" + ;; + TRACKNAME) + TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')" + ;; + esac +} + +# do_gettracknum +# Get the track number we are going to use for different actions +do_gettracknum() +{ + if [ -n "$STARTTRACKNUMBER" ] ; then + # Get the trackpadding from the current track + CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) + TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) + else + TRACKNUM=${UTRACKNUM} + fi +} + +do_replaygain() +{ + if checkstatus replaygain; then :; else + run_command "" echo "Adding reply-gain information..." + for OUTPUT in $( echo $OUTPUTTYPE | tr , \ ) + # THE OUTPUT NEEDS TO BE CORRECTED WITH THE CONTAINER? + do + OUTPUTFILES="" + for UTRACKNUM in $TRACKQUEUE + do + CDDBTRACKNUM=$(expr $UTRACKNUM - 1) + do_getcddbinfo TRACKNAME + splitvarious + TRACKFILE=$(mungefilename "$TRACKNAME") + ARTISTFILE=$(mungefilename "$TRACKARTIST") + ALBUMFILE=$(mungefilename "$DALBUM") + do_gettracknum + if [ "$VARIOUSARTISTS" = "y" ]; then + OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT) + else + OUTPUTFILE=$(eval echo $OUTPUTFORMAT) + fi + OUTPUTFILES="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT $OUTPUTFILES" + done + case "$OUTPUT" in + flac);; + ogg);; + *);; + esac + if [ "$RETURN" = "0" ]; then + run_command replaygain-$OUTPUT true + else + runcommand replaygain-$OUTPUT false + fi + done + if checkerrors replaygain-.{3,4}; then + run_command replaygain false + else + run_command replaygain true + fi + fi +} + # This code splits the a Various Artist track name from one of the following # forms: # @@ -505,103 +585,112 @@ do_tag () run_command '' echo "Tagging track $1 of $TRACKS: $TRACKNAME..." # If we want to start the tracks with a given number, we need to modify the # TRACKNUM value before evaluation - if [ -n "$STARTTRACKNUMBER" -a -n "$STARTTRACKNUMBERTAG" ] ; then - # Get the trackpadding from the current track - CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) - TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) +# if [ -n "$STARTTRACKNUMBER" -a -n "$STARTTRACKNUMBERTAG" ] ; then +# # Get the trackpadding from the current track +# CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) +# TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) +# fi + if [ -n "$STARTTRACKNUMBERTAG" ] ; then + do_gettracknum fi for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ) do - case "$OUTPUT" in - mp3) - # id3v2 v0.1.9 claims to have solved the -c bug, so we merge both id3 and id3v2 - GENREID=$(do_getgenreid "${CDGENRE}") - - case "$ID3SYNTAX" in - id3);; - eyed3) - # FIXME # track numbers in mp3 come with 1/10, so we cannot happily substitute them with $TRACKNUM - run_command tagtrack-$1 $TAGGER $TAGGEROPTS --commen=::"$COMMENTOUTPUT" \ - -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -Y "$CDYEAR" \ - -G "$GENREID" -n "${TRACKNUM:-$1}" "${TRACKNUM:+-N $TRACKS}" \ - "${ENCODING:+--set-encoding=$ENCODING}" - "$ABCDETEMPDIR/track$1.$OUTPUT" - ;; - *) - # FIXME # track numbers in mp3 come with 1/10, so we cannot happily substitute them with $TRACKNUM - run_command tagtrack-$1 $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \ - -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -y "$CDYEAR" \ - -g "$GENREID" -T "${TRACKNUM:-$1/$TRACKS}" \ - "$ABCDETEMPDIR/track$1.$OUTPUT" - ;; - esac - ;; - vorbis|ogg) - case "$OGGENCODERSYNTAX" in - vorbize|oggenc) - # vorbiscomment can't do in-place modification, mv the file first - if [ -f "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" -a ! -f "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" ]; then - mv "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" - fi - ( - # These are from http://www.xiph.org/ogg/vorbis/doc/v-comment.html - echo ARTIST="$TRACKARTIST" - echo ALBUM="$DALBUM" - echo TITLE="$TRACKNAME" - if [ -n "$CDYEAR" ]; then - echo DATE="$CDYEAR" - fi - if [ -n "$CDGENRE" ]; then - echo GENRE="$CDGENRE" - fi - echo TRACKNUMBER=${TRACKNUM:-$1} - echo CDDB=$CDDBDISCID - if [ "$(eval echo ${COMMENT})" != "" ]; then - case "$COMMENTOUTPUT" in - *=*) echo "$COMMENTOUTPUT";; - *) echo COMMENT="$COMMENTOUTPUT";; - esac - fi - ) | run_command tagtrack-$1 $VORBISCOMMENT $VORBISCOMMENTOPTS -w \ - "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" - # Doublecheck that the commented file was created successfully before wiping the original - if [ -f "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" ]; then - rm -f "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" - else - mv "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" - fi - ;; + case "$OUTPUT" in + mp3) + # id3v2 v0.1.9 claims to have solved the -c bug, so we merge both id3 and id3v2 + GENREID=$(do_getgenreid "${CDGENRE}") + + case "$ID3SYNTAX" in + id3);; + eyed3) + # FIXME # track numbers in mp3 come with 1/10, so we cannot happily substitute them with $TRACKNUM + run_command tagtrack-$OUTPUT-$1 $TAGGER $TAGGEROPTS --commen=::"$COMMENTOUTPUT" \ + -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -Y "$CDYEAR" \ + -G "$GENREID" -n "${TRACKNUM:-$1}" "${TRACKNUM:+-N $TRACKS}" \ + "${ENCODING:+--set-encoding=$ENCODING}" + "$ABCDETEMPDIR/track$1.$OUTPUT" + ;; + *) + # FIXME # track numbers in mp3 come with 1/10, so we cannot happily substitute them with $TRACKNUM + run_command tagtrack-$OUTPUT-$1 $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \ + -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -y "$CDYEAR" \ + -g "$GENREID" -T "${TRACKNUM:-$1/$TRACKS}" \ + "$ABCDETEMPDIR/track$1.$OUTPUT" + ;; + esac + ;; + vorbis|ogg) + case "$OGGENCODERSYNTAX" in + vorbize|oggenc) + # vorbiscomment can't do in-place modification, mv the file first + if [ -f "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" -a ! -f "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" ]; then + mv "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" + fi + ( + # These are from http://www.xiph.org/ogg/vorbis/doc/v-comment.html + echo ARTIST="$TRACKARTIST" + echo ALBUM="$DALBUM" + echo TITLE="$TRACKNAME" + if [ -n "$CDYEAR" ]; then + echo DATE="$CDYEAR" + fi + if [ -n "$CDGENRE" ]; then + echo GENRE="$CDGENRE" + fi + echo TRACKNUMBER=${TRACKNUM:-$1} + echo CDDB=$CDDBDISCID + if [ "$(eval echo ${COMMENT})" != "" ]; then + case "$COMMENTOUTPUT" in + *=*) echo "$COMMENTOUTPUT";; + *) echo COMMENT="$COMMENTOUTPUT";; + esac + fi + ) | run_command tagtrack-$OUTPUT-$1 $VORBISCOMMENT $VORBISCOMMENTOPTS -w \ + "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" + # Doublecheck that the commented file was created successfully before wiping the original + if [ -f "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" ]; then + rm -f "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" + else + mv "$ABCDETEMPDIR/track$1.uncommented.$OGGOUTPUTCONTAINER" "$ABCDETEMPDIR/track$1.$OGGOUTPUTCONTAINER" + fi + ;; + esac + ;; + flac) + ( + echo ARTIST="$TRACKARTIST" + echo ALBUM="$DALBUM" + echo TITLE="$TRACKNAME" + if [ -n "$CDYEAR" ]; then + echo DATE="$CDYEAR" + fi + if [ -n "$CDGENRE" ]; then + echo GENRE="$CDGENRE" + fi + echo TRACKNUMBER="${TRACKNUM:-$1}" + echo CDDB="$CDDBDISCID" + if [ "$(eval echo ${COMMENT})" != "" ]; then + case "$COMMENTOUTPUT" in + *=*) echo "$COMMENTOUTPUT";; + *) echo COMMENT="$COMMENTOUTPUT";; + esac + fi + ) | run_command tagtrack-$OUTPUT-$1 $METAFLAC $METAFLACOPTS --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER" + ;; + spx) + run_command tagtrack-$OUTPUT-$1 true + ;; + mpc) + run_command tagtrack-$OUTPUT-$1 true + ;; esac - ;; - flac) - ( - echo ARTIST="$TRACKARTIST" - echo ALBUM="$DALBUM" - echo TITLE="$TRACKNAME" - if [ -n "$CDYEAR" ]; then - echo DATE="$CDYEAR" - fi - if [ -n "$CDGENRE" ]; then - echo GENRE="$CDGENRE" - fi - echo TRACKNUMBER=${TRACKNUM:-$1} - echo CDDB=$CDDBDISCID - if [ "$(eval echo ${COMMENT})" != "" ]; then - case "$COMMENTOUTPUT" in - *=*) echo "$COMMENTOUTPUT";; - *) echo COMMENT="$COMMENTOUTPUT";; - esac - fi - ) | run_command tagtrack-$1 $METAFLAC $METAFLACOPTS --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER" - ;; - spx) - run_command tagtrack-$1 true - ;; - mpc) - run_command tagtrack-$1 true - ;; - esac done + if checkerrors "tagtrack-(.{3,4})-$1"; then + run_command tagtrack-$1 false + else + run_command tagtrack-$1 true + fi + } # do_batch_encode @@ -623,7 +712,7 @@ do_batch_encode () do TRACKFILES="$TRACKFILES track$UTRACKNUM.wav" done - nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS --nogap $TRACKFILES + nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS `[ "$MP3ENCODER" = "lame" ] && echo "--nogap"` $TRACKFILES RETURN=$? if [ "$RETURN" != "0" ]; then echo "batch-encode: $ENCODER returned code $RETURN" >> errors @@ -788,10 +877,8 @@ do_encode () fi fi else - if [ "$(checkstatus encode-output)" = "loud" ]; then - echo "HEH! The file we were about to encode disappeared:" - echo ">> $IN" - fi + run_command "" echo "HEH! The file we were about to encode disappeared:" + run_command "" echo ">> $IN" run_command encodetrack-$1 false fi } @@ -969,14 +1056,6 @@ do_move () { for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ) do - case $OUTPUT in - vorbis|ogg) - OUTPUT=$OGGOUTPUTCONTAINER - ;; - flac) - OUTPUT=$FLACOUTPUTCONTAINER - ;; - esac # Create ALBUMFILE, ARTISTFILE, TRACKFILE # Munge filenames as follows: # ' ' -> '_' @@ -991,13 +1070,14 @@ do_move () YEAR=$(echo $CDYEAR) # If we want to start the tracks with a given number, we need to modify the # TRACKNUM value before evaluation - if [ -n "$STARTTRACKNUMBER" ] ; then - # Get the trackpadding from the current track - CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) - TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) - else - TRACKNUM=${UTRACKNUM} - fi + # if [ -n "$STARTTRACKNUMBER" ] ; then + # # Get the trackpadding from the current track + # CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) + # TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) + # else + # TRACKNUM=${UTRACKNUM} + # fi + do_gettracknum # Supported variables for OUTPUTFORMAT are GENRE, ALBUMFILE, ARTISTFILE, # TRACKFILE, and TRACKNUM. if [ "$VARIOUSARTISTS" = "y" ]; then @@ -1005,34 +1085,43 @@ do_move () else OUTPUTFILE=$(eval echo $OUTPUTFORMAT) fi - # Check that the directory for OUTPUTFILE exists, if it doesn't, create it - OUTPUTFILEDIR=$(dirname "$OUTPUTDIR/$OUTPUTFILE") - # mkdir -p shouldn't return an error if the directory already exists - mkdir -p "$OUTPUTFILEDIR" - # Silence the Moving output since it overlaps with encoding processes... - #run_command '' vecho "Moving track$1.$OUTPUT to $OUTPUTDIR/$OUTPUTFILE.$OUTPUT" - run_command movetrack-$1 mv "$ABCDETEMPDIR/track$1.$OUTPUT" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT" - # Lets move the cue file - if CUEFILE=$(checkstatus cuefile) >/dev/null ; then - if [ -r "$ABCDETEMPDIR/$CUEFILE" ]; then - if checkstatus movecue-$OUTPUT; then :; else - # Silence the Copying output since it overlaps with encoding processes... - #run_command '' vecho "Copying cue file to its destination directory..." - if checkstatus onetrack >/dev/null ; then - case $OUTPUT in - # NOTE: Creating a cue file with the 3-char-extension files is to comply with - # http://brianvictor.tripod.com/mp3cue.htm#details - [a-z0-9][a-z0-9][a-z0-9]) - run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTDIR/$OUTPUTFILE.cue" - ;; - *) - run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT.cue" - ;; - esac - else - run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTFILEDIR/$CUEFILE" + if checkerrors "tagtrack-$OUTPUT-$1"; then :; else + # Once we know the specific output was successful, we can change the OUTPUT to the value containing the container + case $OUTPUT in + vorbis|ogg) + OUTPUT=$OGGOUTPUTCONTAINER + ;; + flac) + OUTPUT=$FLACOUTPUTCONTAINER + ;; + esac + # Check that the directory for OUTPUTFILE exists, if it doesn't, create it + OUTPUTFILEDIR=$(dirname "$OUTPUTDIR/$OUTPUTFILE") + # mkdir -p shouldn't return an error if the directory already exists + mkdir -p "$OUTPUTFILEDIR" + run_command movetrack-$1 mv "$ABCDETEMPDIR/track$1.$OUTPUT" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT" + # Lets move the cue file + if CUEFILE=$(checkstatus cuefile) >/dev/null ; then + if [ -r "$ABCDETEMPDIR/$CUEFILE" ]; then + if checkstatus movecue-$OUTPUT; then :; else + # Silence the Copying output since it overlaps with encoding processes... + #run_command '' vecho "Copying cue file to its destination directory..." + if checkstatus onetrack >/dev/null ; then + case $OUTPUT in + # NOTE: Creating a cue file with the 3-char-extension files is to comply with + # http://brianvictor.tripod.com/mp3cue.htm#details + [a-z0-9][a-z0-9][a-z0-9]) + run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTDIR/$OUTPUTFILE.cue" + ;; + *) + run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTDIR/$OUTPUTFILE.$OUTPUT.cue" + ;; + esac + else + run_command movecue-$OUTPUT cp "$ABCDETEMPDIR/$CUEFILE" "$OUTPUTFILEDIR/$CUEFILE" + fi + echo movecue-$OUTPUT >> "$ABCDETEMPDIR/status" fi - echo movecue-$OUTPUT >> "$ABCDETEMPDIR/status" fi fi fi @@ -1088,19 +1177,22 @@ do_playlist () do # Shares some code with do_move since the filenames have to match CDDBTRACKNUM=$(expr $UTRACKNUM - 1) - TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2 -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//') + #TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2 -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//') + do_getcddbinfo TRACKNAME splitvarious TRACKFILE=$(mungefilename "$TRACKNAME") ARTISTFILE=$(mungefilename "$TRACKARTIST") + ALBUMFILE=$(mungefilename "$DALBUM") # If we want to start the tracks with a given number, we need to modify the # TRACKNUM value before evaluation - if [ -n "$STARTTRACKNUMBER" ] ; then - # Get the trackpadding from the current track - CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) - TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) - else - TRACKNUM=${UTRACKNUM} - fi + # if [ -n "$STARTTRACKNUMBER" ] ; then + # # Get the trackpadding from the current track + # CURRENTTRACKPADDING=$(echo -n $UTRACKNUM | wc -c) + # TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $(expr ${UTRACKNUM} + ${STARTTRACKNUMBER} - $FIRSTTRACK )) + # else + # TRACKNUM=${UTRACKNUM} + # fi + do_gettracknum if [ "$VARIOUSARTISTS" = "y" ]; then OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT) else @@ -1977,7 +2069,8 @@ do_cdread () echo "Grabbing ${PIPE_MESSAGE}tracks $UTRACKNUM - $LASTTRACK as one track ..." >&2 else if [ -r "$CDDBDATA" ]; then - TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\]) + #TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\]) + do_getcddbinfo TRACKNAME echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM: $TRACKNAME..." >&2 else echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM..." >&2 @@ -2421,6 +2514,7 @@ DOENCODE=n DOPOSTPROCESS=n DOTAG=n DOMOVE=n +DOREPLAYGAIN=n DOPLAYLIST=n DOCLEAN=n @@ -2435,11 +2529,17 @@ do # postprocess) DOPREPROCESS=y; DOENCODE=y; DOREAD=y;; tag) DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;; move) DOMOVE=y; DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;; + replaygain) DOCDDB=y; DOREAD=y; DOENCODE=y; DOTAG=y; DOMOVE=y; DOREPLAYGAIN=y;; playlist) DOCDDB=y; DOPLAYLIST=y;; clean) DOCLEAN=y;; esac done +if [ "$DONORMALIZE" = "y" ] && [ "$DOREPLAYGAIN" = "y" ]; then + # FIXME # should we abort on error or just inform the user? + : +fi + for SHOWCDDBFIELD in $(echo $SHOWCDDBFIELDS | tr , \ ); do case $SHOWCDDBFIELD in y*|Y*) SHOWCDDBYEAR="y";; @@ -2544,7 +2644,7 @@ esac # Allow -o OUTPUT(1):OPTIONS(1),...,OUTPUT(N):OPTIONS(N) mode of operation if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then - for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do + for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do case "$OUTPUT" in vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; mp3:*) MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; @@ -2553,7 +2653,7 @@ if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then mpc:*) MPPENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; esac done - for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do + for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do TEMPOUTPUT=$( echo "$OUTPUT" | cut -d: -f1 ) TEMPOUTPUTTYPE="${TEMPOUTPUTTYPE:+$TEMPOUTPUTTYPE,}$TEMPOUTPUT" done @@ -3062,7 +3162,8 @@ do # TRACKNUM=$(printf %0.${TRACKNUMPADDING}d $(expr ${UTRACKNUM} + 0)) TRACKNUM=$UTRACKNUM CDDBTRACKNUM=$(expr $UTRACKNUM - 1) - TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')" + #TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')" + do_getcddbinfo TRACKNAME splitvarious fi fi @@ -3133,6 +3234,9 @@ if [ "$DOENCODE" = "y" -a "$USEPIPES" != "y" ]; then fi # If the above didn't catch the stragglers, this will wait +if [ "$DOREPLAYGAIN" = "y" ]; then + do_replaygain +fi # Check to see if run_command logged any errors if [ -f "$ABCDETEMPDIR/errors" ]; then echo "The following commands failed to run:"