Added METAFLAC and PIPE_bladeenc config options.
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index 352b20a..6fe90c3 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -242,40 +242,40 @@ splitvarious ()
        if [ "$VARIOUSARTISTS" = "y" ] && [ ! "$ONETRACK" = "y" ]; then
                case "$VARIOUSARTISTSTYLE" in
                forward)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's- / -~-g')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f1 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f2 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's- / -~-g')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
                        ;;
                forward-dash)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's, - ,~,g')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f1 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f2 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's, - ,~,g')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
                        ;;
                reverse)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's- / -~-g')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f2 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f1 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's- / -~-g')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
                        ;;
                reverse-dash)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's, - ,~,g')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f2 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f1 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's, - ,~,g')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
                        ;;
                colon)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's-: -~-g')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f1 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f2 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's-: -~-g')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f1 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f2 -d~)
                        ;;
                trailing-paren)
-                       DTITLEARTIST="$(echo $TRACKNAME | sed 's,^\(.*\) (\(.*\)),\1~\2,')"
-                       TRACKARTIST="$(echo $DTITLEARTIST | cut -f2 -d~)"
-                       TRACKNAME="$(echo $DTITLEARTIST | cut -f1 -d~)"
+                       DTITLEARTIST=$(echo "$TRACKNAME" | sed 's,^\(.*\) (\(.*\)),\1~\2,')
+                       TRACKARTIST=$(echo "$DTITLEARTIST" | cut -f2 -d~)
+                       TRACKNAME=$(echo "$DTITLEARTIST" | cut -f1 -d~)
                        ;;
                esac
        elif [ "$ONETRACK" = "y" ]; then
                TRACKARTIST="Various"
        else
-               TRACKARTIST=$DARTIST
+               TRACKARTIST="$DARTIST"
        fi
 }
 
@@ -458,11 +458,9 @@ do_tag ()
        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}")
-
-               # FIXME # track numbers in mp3 come with 1/10, so we cannot happily substitute them with $TRACKNUM
                GENREID=$(do_getgenreid "${CDGENRE}")
 
+               # 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}" \
@@ -477,9 +475,9 @@ do_tag ()
                                fi
                                (
                                # These are from http://www.xiph.org/ogg/vorbis/doc/v-comment.html
-                               echo ARTIST=$TRACKARTIST
+                               echo ARTIST="$TRACKARTIST"
                                echo ALBUM="$DALBUM"
-                               echo TITLE=$TRACKNAME
+                               echo TITLE="$TRACKNAME"
                                        if [ -n "$CDYEAR" ]; then
                                        echo DATE="$CDYEAR"
                                        fi
@@ -506,6 +504,7 @@ do_tag ()
                esac
                ;;
        flac)
+## FIXME ##            [ "$FLACONOGG" = "y" ] && OUTPUT=ogg
                 (
                echo ARTIST="$TRACKARTIST"
                echo ALBUM="$DALBUM"
@@ -1616,7 +1615,7 @@ do_cddbedit ()
 
        # Some heuristics first. Look at Disc Title, and if it starts with
        # "Various", then we'll assume Various Artists
-       if [ "$(grep ^DTITLE= "$CDDBDATA" | cut -f2 -d= | egrep -ci '^(various|soundtrack|varios|sonora|ost)')" != "0" ]; then
+       if [ "$(grep ^DTITLE= "$CDDBDATA" | cut -f2- -d= | egrep -ci '^(various|soundtrack|varios|sonora|ost)')" != "0" ]; then
                echo "Looks like a Multi-Artist CD" >&2
                VARIOUSARTISTS=y
        else
@@ -1871,7 +1870,8 @@ fi
 # Custom filename munging:
 mungefilename ()
 {
-       echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?\[:cntrl:\]
+       #echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?\[:cntrl:\]
+       echo "$@" | sed s,:,\ -,g | tr \ / __ | tr -d \'\"\?\[:cntrl:\]
 }
 
 # Custom genre munging:
@@ -2137,7 +2137,7 @@ shift $(($OPTIND - 1))
 if [ "$ONETRACK" = "y" ]; then 
        # FIXME # remove check as soon as we find out about the other readers
        case "$CDROMREADERSYNTAX" in
-               dagrab|cddafs|debug) echo "abcde error: ONETRACK reading is not suported with "$CDROMREADERSYNTAX" yet"
+               dagrab|cddafs|debug) echo "abcde error: ONETRACK reading is not suported with $CDROMREADERSYNTAX yet"
                                         exit 1 ;;
        esac
        if [ "$BATCH" = "y" ]; then
@@ -2208,12 +2208,12 @@ if [ X"$CDROM" != "X" ] ; then
                                exit 1
                        fi
                fi
-       elif [ ! -e "$CDROM" -a X"$DOREAD" = "y" ]; then
+       elif [ ! -e "$CDROM" -a X"$DOREAD" = "Xy" ]; then
                echo "abcde error: CDROM device cannot be found." >&2
                exit 1
        fi
 # avoid processing if we are not going to hit the CDROM.
-elif [ X"$DOREAD" = "y" ]; then
+elif [ X"$DOREAD" = "Xy" ]; then
        echo "abcde error: CDROM has not been defined or cannot be found" >&2
        exit 1
 fi
@@ -2359,7 +2359,11 @@ esac
 case "$FLACENCODERSYNTAX" in
        flac)
                FLACENCODEROPTS="${FLACENCODEROPTSCLI:-$FLACOPTS}"
-               FLACENCODER="$FLAC"
+               FLACENCODER="$FLAC"     
+               ## FIXME ## FLAC streams can be encapsulated on a Ogg transport layer
+               if echo "$FLACENCODEROPTS" | egrep -q -- "(^| )--ogg($| )" ;then
+                       FLACONOGG=y
+               fi
                ;;
 esac
 case "$SPEEXENCODERSYNTAX" in
@@ -2418,6 +2422,7 @@ PIPE_cdparanoia="-"
 # Encoders with USEPIPE support
 # FIXME # Include here all the encoders we can figure out support pipes
 PIPE_lame="-"
+PIPE_bladeenc="-"
 PIPE_oggenc="-"
 
 # Figure out if we can use pipes with the ripper/encoder combination
@@ -2551,7 +2556,8 @@ else
                if [ "$DOREAD" = "y" ]; then
                        if [ "$USEPIPES" = "y" ]; then
                                if checkstatus readencodetrack-$UTRACKNUM; then :; else
-                                       do_cdread $UTRACKNUM | do_encode $UTRACKNUM %local0%
+                                       # Read, pipe, shut up!
+                                       do_cdread $UTRACKNUM | do_encode $UTRACKNUM %local0% > /dev/null 2>&1
                                fi
                        else
                                if checkstatus readtrack-$UTRACKNUM; then :; else
@@ -2734,8 +2740,8 @@ do
                else
 #                      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/\ \+$//')
+                       CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
+                       TRACKNAME="$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | cut -f2- -d= | tr -d \[:cntrl:\] | sed 's/\ \+$//')"
                        splitvarious
                fi
        fi