Package: abcde
Version: 2.3.99.2-1

1.  For ogg Vorbis files, the extension in OUTPUTPATH can be wrong.

To fix that I changed $OUTPUT to $OUTPUTCONTAINER in a couple of
places. I suspect something similar will be necessary for
do_playlist().

2.  the GENRE and YEAR variables are not set in function
do_replaygain(), so $OUTPUTFILE gets an incomplete path, causing files
not to be found.

3.  Line 1247 seems to do nothing more than setting $YEAR to the value
of $CDYEAR, whether it is filled or not (the default value is $CDYEAR
itself). I didn't modify it, since I don't know exactly what would go
there.

4.  It looks like the code for munging CDDB fields, etc, and
creating filenames is repeated quite a few times times through the
script, with slight variations. Seems like a good candidate for
refactoring.

Thanks for such a great program! About a month ago I started ripping
my CD collection, and I tried quite a few rippers/encoders/taggers.
None did all I wanted, although Grip came close. I wrote a couple of
Perl scripts to hook to Grip, so I could do multiencoding, proper
munging of tags, and automatic addition of replay gain tags. But it
turned out Grip can't call a script after enconding, only after
ripping, so no replaygain. When I was almost convinced I'd have to
write my own and even had started planning what I'd code and what
modules to use, I tried abcde and discovered it did everything I
needed, and then some.


Anyway, here is a patch with the above changes (first time I submit a
patch, so be forgiving; I used diff -Naur, as the man page for patch
recommends):

--- ../../install/abcde/abcde-2.3.99.2/abcde    2005-12-12
17:06:59.000000000 -0500
+++ abcde       2006-01-25 23:36:20.772283517 -0500
@@ -363,15 +363,15 @@
 do_replaygain()
 {
        if checkstatus replaygain; then :; else
-               run_command "" echo "Adding replygain information..."
+               run_command "" echo "Adding replaygain information..."
                for OUTPUT in $( echo $OUTPUTTYPE | tr , \ )
                do
                        case $OUTPUT in
                                vorbis|ogg)
-                                       OUTPUT=$OGGOUTPUTCONTAINER
+                                       OUTPUTCONTAINER=$OGGOUTPUTCONTAINER
                                        ;;
                                flac)
-                                       OUTPUT=$FLACOUTPUTCONTAINER
+                                       OUTPUTCONTAINER=$FLACOUTPUTCONTAINER
                                        ;;
                        esac
                        OUTPUTFILES=""
@@ -384,13 +384,15 @@
                                TRACKFILE="$(mungefilename "$TRACKNAME")"
                                ARTISTFILE="$(mungefilename "$TRACKARTIST")"
                                ALBUMFILE="$(mungefilename "$DALBUM")"
+                GENRE="$(mungegenre "$GENRE")"
+                YEAR="$(echo $CDYEAR)"
                                do_gettracknum
                                if [ "$VARIOUSARTISTS" = "y" ]; then
                                        OUTPUTFILE="$(eval echo
$VAOUTPUTFORMAT)"
                                else
                                        OUTPUTFILE="$(eval echo $OUTPUTFORMAT)"
                                fi
-                              
OUTPUTFILES[$REPLAYINDEX]="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT"
+                              
OUTPUTFILES[$REPLAYINDEX]="$OUTPUTDIR/$OUTPUTFILE.$OUTPUTCONTAINER"
                                (( REPLAYINDEX = $REPLAYINDEX + 1 ))
                        done
                        case "$OUTPUT" in
@@ -1144,7 +1146,7 @@
                # TRACKNUM value before evaluation
                do_gettracknum
                # Supported variables for OUTPUTFORMAT are GENRE,
ALBUMFILE, ARTISTFILE,
-               # TRACKFILE, and TRACKNUM.
+               # TRACKFILE, TRACKNUM, YEAR and ALBUMFILE.
                if [ "$VARIOUSARTISTS" = "y" ]; then
                        OUTPUTFILE="$(eval echo "$VAOUTPUTFORMAT")"
                else


Thanks again.
Bernardo Rechea

Reply via email to