X-Git-Url: https://git.hcoop.net/clinton/abcde.git/blobdiff_plain/bef9c2d82cd6012e98838ef4fab2d65eaac03fe9..03308bc74440363b8d9eaa78ab11e336214953af:/abcde diff --git a/abcde b/abcde index fb409e2..3352478 100755 --- a/abcde +++ b/abcde @@ -62,6 +62,7 @@ echo "-W <#> Contatenate CDs: -T #01 -w \"CD #\"" echo "" echo "Tracks is a space-delimited list of tracks to grab." echo "Ranges specified with hyphens are allowed." +#echo "Double hyphens are used to concatenate tracks" } # Funtions to replace the need of seq, which is too distribution dependant. @@ -146,7 +147,7 @@ checkerrors () fi # Take the last line in the status file if there's multiple matches PATTERN="^$1(:.*)?$" - BLURB="$(egrep $PATTERN $ABCDETEMPDIR/errors | tail -n 1)" + BLURB="$(egrep $PATTERN "$ABCDETEMPDIR/errors" | tail -n 1)" if [ -z "$BLURB" ]; then # negative, we did not have a negative... @@ -504,12 +505,12 @@ do_tag () echo ARTIST="$TRACKARTIST" echo ALBUM="$DALBUM" echo TITLE="$TRACKNAME" - if [ -n "$CDYEAR" ]; then + if [ -n "$CDYEAR" ]; then echo DATE="$CDYEAR" - fi - if [ -n "$CDGENRE" ]; then + fi + if [ -n "$CDGENRE" ]; then echo GENRE="$CDGENRE" - fi + fi echo TRACKNUMBER=${TRACKNUM:-$1} echo CDDB=$CDDBDISCID if [ "$(eval echo ${COMMENT})" != "" ]; then @@ -634,12 +635,12 @@ do_encode () FILEARG="-if $IN" ;; *) - FILEARG=$IN + FILEARG="$IN" ;; esac ;; *) - FILEARG=$IN + FILEARG="$IN" ;; esac fi @@ -822,9 +823,18 @@ do_encode () # done #} +# do_single_gain +# variables used: +# FIXME # +do_single_gain () +{ +: +} + # do_batch_gain # variables used: # MP3GAIN, MP3GAINOPTS, VORBISGAIN, VORBISGAINOPTS +# FIXME # do_batch_gain () { # The commands here don't go through run_command because they're never supposed to be silenced @@ -958,6 +968,7 @@ do_playlist () ALBUMFILE=$(mungefilename "$DALBUM") ARTISTFILE=$(mungefilename "$DARTIST") GENRE=$(mungegenre "$GENRE") + YEAR=${CDYEAR:-$CDYEAR} if [ "$VARIOUSARTISTS" = "y" ] ; then PLAYLISTFILE=$(eval echo $VAPLAYLISTFORMAT) else @@ -1046,7 +1057,13 @@ do_discid () #elif [ -z "$DISCID" ]; then if [ -z "$DISCID" ]; then vecho -n "Getting CD track info... " + if [ "$OSFLAVOUR" = "OSX" ]; then + disktool -u ${CDROM#/dev/} + fi TRACKINFO=$($CDDISCID $CDROM) + if [ "$OSFLAVOUR" = "OSX" ]; then + disktool -m ${CDROM#/dev/} + fi # Make sure there's a CD in there by checking cd-discid's return code if [ "$?" = "1" ]; then echo "abcde error: CD could not be read. Perhaps there's no CD in the drive?" >&2 @@ -1203,9 +1220,10 @@ do_discid () cat /dev/null > "$ABCDETEMPDIR/status" fi if [ X"$CUEFILE" = "Xy" -a X"$WEHAVEACD" = "Xy" ]; then - if checkstatus cuefile ; then :; else - $MKCUE $MKCUEOPTS > $ABCDETEMPDIR/cue-$(echo $TRACKINFO | cut -f1 -d' ').txt - echo cuefile >> "$ABCDETEMPDIR/status" + if checkstatus cuefile >/dev/null ; then :; else + CUEFILE=cue-$(echo $TRACKINFO | cut -f3 -d' ').txt + $MKCUE $MKCUEOPTS > $ABCDETEMPDIR/$CUEFILE + echo cuefile=$CUEFILE >> "$ABCDETEMPDIR/status" fi fi # If we got the CDPARANOIA status and it is not recorded, save it now @@ -1221,6 +1239,19 @@ do_discid () echo "$TRACKINFO" > "$ABCDETEMPDIR/discid" } +# do_cleancue +# Create a proper CUE file based on the CUE file we created before. +do_cleancue() +{ + if checkstatus cuefile; then :; else + $CUEFILE_INPUT="$ABCDETEMPDIR/cue-$(echo $TRACKINFO | cut -f1 -d' ').txt" + ### FIXME ### checkstatus cddb + if [ "$DOCDDB" = "y" ]; then + MARKER + fi + fi +} + # do_cddbparse # Parses a CDDB file and outputs the title and the track names. # Variables: CDDBFILE @@ -1267,7 +1298,7 @@ do_localcddb () echo "y" >&2 fi if [ "$USELOCALRESP" = "y" ]; then - #echo "Using local copy of CDDB data" + #echo "Using local copy of CDDB data" cp "${CDDBLOCALFILE}" "$ABCDETEMPDIR/cddbread.1" echo 999 > "$ABCDETEMPDIR/cddbquery" # Assuming 999 isn't used by CDDB echo cddb-readcomplete >> "$ABCDETEMPDIR/status" @@ -1278,7 +1309,6 @@ do_localcddb () #echo "Not using local copy of CDDB data" CDDBLOCALSUCCESS="n" fi - CDDBLOCALSUCCESS="y" else CDDBLOCALSUCCESS="n" fi @@ -1526,7 +1556,7 @@ do_cddbedit () UNKNOWNDISK=y $CDDBTOOL template $(cat "$ABCDETEMPDIR/discid") > $ABCDETEMPDIR/cddbread.0 else - echo "Selected: #$CDCHOICENUM ($(grep ^DTITLE= $ABCDETEMPDIR/cddbread.$CDCHOICENUM | cut -f2- -d= | tr -d \\r\\n))" >&2 + echo "Selected: #$CDCHOICENUM ($(grep ^DTITLE= "$ABCDETEMPDIR/cddbread.$CDCHOICENUM" | cut -f2- -d= | tr -d \\r\\n))" >&2 do_cddbparse "$ABCDETEMPDIR/cddbread.$CDCHOICENUM" fi echo "cddb-choice=$CDCHOICENUM" >> "$ABCDETEMPDIR/status" @@ -1575,7 +1605,7 @@ do_cddbedit () CDCHOICENUM=1 echo "cddb-choice=$CDCHOICENUM" >> "$ABCDETEMPDIR/status" fi - echo "Selected: #$CDCHOICENUM ($(grep ^DTITLE= $ABCDETEMPDIR/cddbread.$CDCHOICENUM | cut -f2- -d= | tr -d \\r\\n))" >&2 + echo "Selected: #$CDCHOICENUM ($(grep ^DTITLE= "$ABCDETEMPDIR/cddbread.$CDCHOICENUM" | cut -f2- -d= | tr -d \\r\\n))" >&2 fi fi @@ -1610,7 +1640,7 @@ do_cddbedit () if [ -x $(which "${EDITOR%%\ *}") ]; then # That failed, try to load the preferred editor, starting # with their EDITOR variable - eval $(echo "$EDITOR") "$CDDBDATA" + eval $(echo "$EDITOR") \"$CDDBDATA\" fi # If that fails, check for a vi elif which vi >/dev/null 2>&1; then @@ -1774,9 +1804,10 @@ do_cdread () # We need the first and last track for cdda2wav FIRSTTRACK=$2 LASTTRACK=$3 + UTRACKNUM=$FIRSTTRACK case "$CDROMREADERSYNTAX" in - cdparanoia) UTRACKNUM="1-" ;; - cdda2wav) UTRACKNUM="1+$LASTRACK" ;; + cdparanoia) READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;; + cdda2wav) READTRACKNUMS="$FIRSTTRACK+$LASTRACK" ;; *) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode" exit 1 ;; esac @@ -1786,7 +1817,7 @@ do_cdread () CDDBTRACKNUM=$(expr $UTRACKNUM - 1) if [ "$USEPIPES" = "y" ]; then TEMPARG="PIPE_$CDROMREADERSYNTAX" - FILEARG=${!TEMPARG} + FILEARG="${!TEMPARG}" REDIR="" PIPE_MESSAGE="and encoding " else @@ -1797,19 +1828,24 @@ do_cdread () FILEARG="-f $WAVDATA" ;; *) - FILEARG=$WAVDATA + FILEARG="$WAVDATA" ;; esac REDIR=">&2" fi - if [ -r "$CDDBDATA" ]; then - TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\]) - echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM: $TRACKNAME..." >&2 + if [ "$1" = "onetrack" ]; then + echo "Grabbing ${PIPE_MESSAGE}tracks $UTRACKNUM - $LASTTRACK ..." >&2 else - echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM..." >&2 + if [ -r "$CDDBDATA" ]; then + TRACKNAME=$(grep ^TTITLE$CDDBTRACKNUM= "$CDDBDATA" | head -n 1 | cut -f2 -d= | tr -d \[:cntrl:\]) + echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM: $TRACKNAME..." >&2 + else + echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM..." >&2 + fi fi case "$CDROMREADERSYNTAX" in - cdparanoia) nice $READNICE $CDROMREADER -d $CDROM $UTRACKNUM $FILEARG $REDIR ;; + cdparanoia) + nice $READNICE $CDROMREADER -d $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; cdda2wav) if [ "$OSFLAVOUR" = "OSX" ] ; then # Hei, we have to unmount the device before running anything like cdda2wav in OSX @@ -1825,11 +1861,11 @@ do_cdread () CDDA2WAVCDROM="$CDROMID" fi fi - nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t $UTRACKNUM $FILEARG $REDIR + nice $READNICE $CDROMREADER -D $CDDA2WAVCDROM -t ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; ## FIXME ## We have an exception for dagrab, since it uses -f ## FIXME ## Shall we just use -f $FILEARG ?? - dagrab) nice $READNICE $CDROMREADER -d $CDROM -v $UTRACKNUM $FILEARG $REDIR + dagrab) nice $READNICE $CDROMREADER -d $CDROM -v $UTRACKNUM "$FILEARG" $REDIR ;; cddafs) # Find the track's mounted path @@ -1838,11 +1874,11 @@ do_cdread () FILEPATH=$(find "$FILEPATH" | grep "/$REALTRACKNUM "); # If the file exists, copy it if [ -e "$FILEPATH" ] ; then - nice $READNICE $CDROMREADER "$FILEPATH" $FILEARG $REDIR + nice $READNICE $CDROMREADER "$FILEPATH" "$FILEARG" $REDIR else false fi ;; - debug) nice $READNICE $CDROMREADER -d $CDROM -w $UTRACKNUM-[:1] $FILEARG $REDIR + debug) nice $READNICE $CDROMREADER -d $CDROM -w $UTRACKNUM-[:1] "$FILEARG" $REDIR ;; esac RETURN=$? @@ -1911,6 +1947,9 @@ pre_read () : } +# do_movecue +# Standalone function to move the CUE file to the final location + ############################################################################### # End of functions # @@ -2049,6 +2088,7 @@ elif [ X$(uname) = "XDarwin" ] ; then OSFLAVOUR=OSX # We should have disktool in OSX, but let's be sure... NEEDDISKTOOL=y + CDROMREADERSYNTAX=cddafs elif [ X$(uname) = "XOpenBSD" ] ; then HTTPGET=wget MD5SUM=md5 @@ -2240,6 +2280,7 @@ if [ X"$CDROM" != "X" ] ; then echo "abcde error: CDROMID not in the right format for $CDROMREADERSYNTAX" echo "Use \"cdrecord -scanbus\" to obtain a adecuate ID an set CDROMID accordingly" exit 1 + fi fi elif [ ! -e "$CDROM" -a X"$DOREAD" = "Xy" ]; then echo "abcde error: CDROM device cannot be found." >&2 @@ -2816,6 +2857,8 @@ do fi fi fi + if [ "$DOTAG" = "y" ]; then + if checkstatus encodetrack-$UTRACKNUM; then if checkstatus tagtrack-$UTRACKNUM; then :; else do_tag $UTRACKNUM; fi fi fi @@ -2826,6 +2869,12 @@ do fi ) & done + +# Lets move the cue file +if checkstatus cuefile >/dev/null ; then + do_movecue +fi + # Go through it again and make sure there's no distmp3 stragglers, otherwise # we'll delete the files they're working on ## FIXME ## Check also for files which are encoded using PIPEs.