X-Git-Url: https://git.hcoop.net/clinton/abcde.git/blobdiff_plain/ffd57cfc08e45a1d6a708399bfd23a3aa0ddd734..a9c088da2c38d0971991865ba0bdc603dc3df4d9:/abcde diff --git a/abcde b/abcde index 1ad68b6..660244f 100755 --- a/abcde +++ b/abcde @@ -46,6 +46,7 @@ echo "-L Use local CDDB storage directory" echo "-n No lookup. Don't query CDDB, just create and use template" echo "-N Noninteractive. Never prompt for anything" echo "-m Modify playlist to include CRLF endings, to comply with some players" +echo " WARNING: Deprecated. Use \"cue\" action" echo "-M Create a CUE file" echo "-o " echo " Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a). Defaults to vorbis" @@ -59,7 +60,6 @@ echo " Show dielfs from the CDDB info (year,genre)" echo "-S <#> Set the CD speed" echo "-t <#> Start the track numbering at a given number" echo "-T <#> Same as -t but modifies tag numbering" -echo "-u Use UNICODE (UTF8) tags and comments" echo "-U Do NOT use UNICODE (UTF8) tags and comments" echo "-v Show version number and exit" echo "-V Be a bit more verbose about what is happening behind the scenes" @@ -353,6 +353,8 @@ checkexec () if [ ! "$@" = "" ]; then # Cut off any command-line option we added in X=$(echo $@ | cut -d' ' -f2) + # Test for built-in abcde.function + [ "$X" != "${X#abcde.}" ] && type $X >/dev/null 2>&1 && return if [ "$(which $X)" = "" ]; then log error "$X is not in your path." >&2 log info "Define the full path to the executable if it exists on your system." >&2 @@ -525,16 +527,16 @@ do_replaygain() done case "$OUTPUT" in flac) - run_command replaygain-flac $METAFLAC --add-replay-gain "${OUTPUTFILES[@]}" + run_command replaygain-flac nice $ENCNICE $METAFLAC --add-replay-gain "${OUTPUTFILES[@]}" ;; vorbis|ogg) - run_command replaygain-vorbis $VORBISGAIN --album "${OUTPUTFILES[@]}" + run_command replaygain-vorbis nice $ENCNICE $VORBISGAIN --album "${OUTPUTFILES[@]}" ;; mp3) - run_command replaygain-mp3 $MP3GAIN -a "${OUTPUTFILES[@]}" + run_command replaygain-mp3 nice $ENCNICE $MP3GAIN -a "${OUTPUTFILES[@]}" ;; mpc) - run_command replaygain-mpc $MPPGAIN --auto "${OUTPUTFILES[@]}" + run_command replaygain-mpc nice $ENCNICE $MPPGAIN --auto "${OUTPUTFILES[@]}" ;; *);; esac @@ -785,7 +787,7 @@ do_tag () 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 \ + run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $TAGGER $TAGGEROPTS \ --comment=::"$COMMENTOUTPUT" -A "$DALBUM" \ -a "$TRACKARTIST" -t "$TRACKNAME" -Y "$CDYEAR" \ -G "$GENREID" -n "${TRACKNUM:-$1}" "${TRACKNUM:+-N $TRACKS}" \ @@ -794,7 +796,7 @@ do_tag () ;; # FIXME # Still not activated... id3ed) - run_command tagtrack-$OUTPUT-$1 $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \ + run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \ -a "$DALBUM" -n "$TRACKARTIST" -s "$TRACKNAME" -y "$CDYEAR" \ -g "$GENREID" -k "${TRACKNUM:-$1}" \ "$ABCDETEMPDIR/track$1.$OUTPUT" @@ -802,7 +804,7 @@ do_tag () *) # 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" \ + run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $TAGGER $TAGGEROPTS -c "$COMMENTOUTPUT" \ -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" -y "$CDYEAR" \ -g "$GENREID" -T "${TRACKNUM:-$1/$TRACKS}" \ "$ABCDETEMPDIR/track$1.$OUTPUT" @@ -835,7 +837,7 @@ do_tag () *) echo COMMENT="$COMMENTOUTPUT";; esac fi - ) | run_command tagtrack-$OUTPUT-$1 $VORBISCOMMENT $VORBISCOMMENTOPTS -w \ + ) | run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $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 @@ -865,7 +867,7 @@ do_tag () *) echo COMMENT="$COMMENTOUTPUT";; esac fi - ) | run_command tagtrack-$OUTPUT-$1 $METAFLAC $METAFLACOPTS ${IMPORTCUESHEET:+--import-cuesheet-from="$ABCDETEMPDIR/$CUEFILE"} --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER" + ) | run_command tagtrack-$OUTPUT-$1 nice $ENCNICE $METAFLAC $METAFLACOPTS ${IMPORTCUESHEET:+--import-cuesheet-from="$ABCDETEMPDIR/$CUEFILE"} --import-tags-from=- "$ABCDETEMPDIR/track$1.$FLACOUTPUTCONTAINER" ;; spx) run_command tagtrack-$OUTPUT-$1 true @@ -899,7 +901,7 @@ do_nogap_encode () case "$OUTPUT" in mp3) case "$MP3ENCODERSYNTAX" in - lame) + lame|toolame) ( cd "$ABCDETEMPDIR" TRACKFILES= @@ -1006,20 +1008,26 @@ do_encode () RUN_COMMAND="" # We need a way to store the creation of the files when using PIPES RUN_COMMAND_PIPES="run_command encodetrack-$OUTPUT-$1 true" + # When pipping it does not make sense to have a higher nice for + # reading than for encoding, since it will be hold by the + # encoding process. Setting an effective nice, to calm down a + # bit the reading process. + EFFECTIVE_NICE=$READNICE else run_command '' echo "Encoding track $1 of $TRACKS: $TRACKNAME..." RUN_COMMAND="run_command encodetrack-$OUTPUT-$1" + EFFECTIVE_NICE=$ENCNICE fi case "$OUTPUT" in mp3) case "$2" in %local*%) case "$MP3ENCODERSYNTAX" in - lame|gogo) $RUN_COMMAND nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS "$IN" "$OUT" ;; - bladeenc) $RUN_COMMAND nice $ENCNICE $MP3ENCODER $MP3ENCODEROPTS -quit "$IN" ;; - l3enc|xingmp3enc) $RUN_COMMAND nice $ENCNICE $MP3ENCODER "$IN" "$OUT" $MP3ENCODEROPTS ;; + lame|toolame|gogo) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER $MP3ENCODEROPTS "$IN" "$OUT" ;; + bladeenc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER $MP3ENCODEROPTS -quit "$IN" ;; + l3enc|xingmp3enc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER "$IN" "$OUT" $MP3ENCODEROPTS ;; # FIXME # Relates to the previous FIXME since it might need the "-if" removed. - mp3enc) $RUN_COMMAND nice $ENCNICE $MP3ENCODER -if "$IN" -of "$OUT" $MP3ENCODEROPTS ;; + mp3enc) $RUN_COMMAND nice $EFFECTIVE_NICE $MP3ENCODER -if "$IN" -of "$OUT" $MP3ENCODEROPTS ;; esac ;; *) @@ -1031,8 +1039,8 @@ do_encode () case "$2" in %local*%) case "$OGGENCODERSYNTAX" in - vorbize) $RUN_COMMAND nice $ENCNICE $OGGENCODER $OGGENCODEROPTS -w "$OUT" "$IN" ;; - oggenc) $RUN_COMMAND nice $ENCNICE $OGGENCODER $OGGENCODEROPTS -o "$OUT" "$IN" ;; + vorbize) $RUN_COMMAND nice $EFFECTIVE_NICE $OGGENCODER $OGGENCODEROPTS -w "$OUT" "$IN" ;; + oggenc) $RUN_COMMAND nice $EFFECTIVE_NICE $OGGENCODER $OGGENCODEROPTS -o "$OUT" "$IN" ;; esac ;; *) @@ -1044,7 +1052,7 @@ do_encode () case "$2" in %local*%) case "$FLACENCODERSYNTAX" in - flac) $RUN_COMMAND nice $ENCNICE $FLACENCODER -f $FLACENCODEROPTS -o "$OUT" "$IN" ;; + flac) $RUN_COMMAND nice $EFFECTIVE_NICE $FLACENCODER -f $FLACENCODEROPTS -o "$OUT" "$IN" ;; esac ;; *) @@ -1064,9 +1072,9 @@ do_encode () fi # Quick hack to avoid tagging Ogg/Speex, since there is no other way to tag than inline tagging if [ ! "$DOTAG" = "y" ]; then - $RUN_COMMAND nice $ENCNICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" "$COMMENT" "$IN" "$OUT" + $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS --author "$TRACKARTIST" --title "$TRACKNAME" "$COMMENT" "$IN" "$OUT" else - $RUN_COMMAND nice $ENCNICE $SPEEXENCODER $SPEEXENCODEROPTS "$IN" "$OUT" + $RUN_COMMAND nice $EFFECTIVE_NICE $SPEEXENCODER $SPEEXENCODEROPTS "$IN" "$OUT" fi ;; mpc) @@ -1076,12 +1084,12 @@ do_encode () # errors, so I have not tried it myself. ## FIXME ## Needs some cleanup to determine if an empty tag sent ## FIXME ## to the encoder ends up empty. - $RUN_COMMAND nice $ENCNICE $MPPENCODER $MPPENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" "$IN" "$OUT" + $RUN_COMMAND nice $EFFECTIVE_NICE $MPPENCODER $MPPENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" "$IN" "$OUT" ;; m4a) # Quick hack to avoid tagging Ogg/Speex, since there is no other way to tag than inline tagging if [ ! "$DOTAG" = "y" ]; then - $RUN_COMMAND nice $ENCNICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" -o "$OUT" "$IN" + $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" -o "$OUT" "$IN" else $RUN_COMMAND nice $ENCNICE $AACENCODER $AACENCODEROPTS -o "$OUT" "$IN" @@ -1490,6 +1498,158 @@ do_playlist () done } +# abcde.cue2discid +# This function reads a cuefile on stdin and writes an extended +# cddb query on stdout. Any PREGAP for track 1 is properly +# handled, although cue files embedded in FLAC files do not +# appear to properly store the PREGAP setting. :( +abcde.cue2discid () { + + cddb_sum () { + val=$1 + ret=0 + while [ $val -gt 0 ] ; do + ret=$(( $ret + ( $val % 10) )) + val=$(( $val / 10 )) + done + echo $ret + } + + msf2lba () { + OIFS="$IFS" + IFS=":" + set -- $1 + IFS="$OIFS" + local first second third + first=$(expr ${1} + 0 ) + second=$(expr ${2} + 0 ) + third=$(expr ${3} + 0 ) + + echo $(( ((($first * 60) + $second) * 75) + $third )) + } + + OFFSET=150 + PREGAP=0 + LEADOUT=0 + LEADIN=88200 + i=0 + N=0 + + while read line ; do + set -- $line + case "$1" in + TRACK) i=$(( i + 1 )) + ;; + INDEX) if [ "$2" -eq 1 ] ; then + LBA=$(msf2lba $3) + START=$(( $LBA + $PREGAP + $OFFSET )) + eval TRACK$i=$START + X=$(cddb_sum $(( $START / 75 )) ) + N=$(( $N + $X )) + fi + ;; + PREGAP) PREGAP=$(msf2lba $2) + ;; + REM) case "$2" in + FLAC__lead-out) + LEADOUT=$(( $4 / 588 )) + ;; + FLAC__lead-in) + LEADIN=$(( $3 / 588 )) + ;; + esac + ;; + esac + + done + + TRACKS=$i + LEADOUT=$(( $LEADOUT + $LEADIN )) + + LENGTH=$(( $LEADOUT/75 - $TRACK1/75 )) + DISCID=$(( ( $N % 255 ) * 2**24 | $LENGTH * 2**8 | $TRACKS )) + printf "%08x %i" $DISCID $TRACKS + + j=1 + while [ $j -le $TRACKS ] ; do + eval echo -n "\" \$TRACK$j\"" + j=$((j+1)) + done + echo " $(( $LEADOUT / 75 ))" +} + +# abcde.mkcue +# abcde.mkcue [--wholedisk] +# This creates a cuefile directly from the extended discid information +# The --wholedisk option controls whether we're ripping data from the +# start of track one or from the start of the disk (usually, but not +# always the same thing!) +# +# Track one leadin/pregap (if any) handeling: +# --wholedisk specified: +# TRACK 01 AUDIO +# INDEX 00 00:00:00 +# INDEX 01 +# Remaining track index values unchanged from disc TOC +# +# --wholedisk not specified +# TRACK 01 AUDIO +# PREGAP +# INDEX 01 00:00:00 +# Remaining track index values offset by +# +# Variables used: +# TRACKINFO +abcde.mkcue () { + + echomsf () { + printf "$1%02i:%02i:%02i\n" $(($2/4500)) $((($2/75)%60)) $(($2%75)) + } + + local MODE DISCID TRACKS + local i OFFSET LBA + + + if [ "$1" = --wholedisc ] ; then + MODE=INDEX + else + MODE=PREGAP + fi + + set -- $TRACKINFO + + DISCID=$1 + TRACKS=$2 + shift 2 + + echo REM DISCID $DISCID + echo FILE \"dummy.wav\" WAVE + + if [ $1 -ne 150 ] ; then + if [ $MODE = PREGAP ] ; then + OFFSET=$1 + else + OFFSET=150 + fi + fi + + i=1 + while [ $i -le "$TRACKS" ] ; do + LBA=$(( $1 - $OFFSET )) + printf " TRACK %02i AUDIO\n" $i + if [ $i -eq 1 -a $1 -ne 150 ] ; then + if [ $MODE = PREGAP ] ; then + echomsf " PREGAP " $(($OFFSET-150)) + else + echo " INDEX 00 00:00:00" + fi + fi + echomsf " INDEX 01 " $LBA + i=$(($i+1)) + shift + done +} + # do_discid # This essentially the start of things do_discid () @@ -1509,6 +1669,9 @@ do_discid () flac) if $METAFLAC $METAFLACOPTS --export-cuesheet-to=- "$CDROM" > /dev/null 2>&1 ; then case "$CUE2DISCID" in + # FIXME # right now we have 2 cue2discid internal + # implementations: builtin and abcde.cue2discid. Test + # both of them and decide which one we want to use. builtin) #vecho "Using builtin cue2discid implementation..." CUESHEET="$(metaflac $METAFLACOPTS --export-cuesheet-to=- "$CDROM")" @@ -1539,7 +1702,7 @@ do_discid () fi ;; # cdparanoia|debug) -# CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS $CDROM -Q --verbose 2>&1 )" +# CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -Q --verbose 2>&1 )" # RET=$? # if [ ! "$RET" = "0" ];then # log warning "something went wrong while querying the CD... Maybe a DATA CD?" @@ -1554,9 +1717,9 @@ do_discid () # ;; *) case "$CDDBMETHOD" in - cddb) TRACKINFO=$($CDDISCID $CDROM) ;; + cddb) TRACKINFO=$($CDDISCID "$CDROM") ;; # FIXME # musicbrainz needs a cleanup - musicbrainz) TRACKINFO=$($MUSICBRAINZ -c $CDROM ) ;; + musicbrainz) TRACKINFO=$($MUSICBRAINZ -c "$CDROM" ) ;; esac ;; esac @@ -1600,7 +1763,7 @@ do_discid () cdparanoia|debug) if [ "$WEHAVEACD" = "y" ]; then vecho "Querying the CD for audio tracks..." - CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS $CDROM -Q --verbose 2>&1 )" + CDPARANOIAOUTPUT="$( $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -Q --verbose 2>&1 )" RET=$? if [ ! "$RET" = "0" ];then log warning "something went wrong while querying the CD... Maybe a DATA CD?" @@ -1731,13 +1894,15 @@ do_discid () # Store the abcde version in the status file. echo "abcde-version=$VERSION" >> "$ABCDETEMPDIR/status" fi - if [ X"$MAKECUEFILE" = "Xy" -a X"$WEHAVEACD" = "Xy" ]; then + if [ X"$DOCUE" = "Xy" -a X"$WEHAVEACD" = "Xy" ]; then if checkstatus cuefile > /dev/null 2>&1 ; then :; else CUEFILE=cue-$(echo "$TRACKINFO" | cut -f1 -d' ').txt vecho "Creating cue file..." case $CDROMREADERSYNTAX in flac) - if $METAFLAC --export-cuesheet-to=- $CDROM > "$ABCDETEMPDIR/$CUEFILE"; then :; else + if $METAFLAC --export-cuesheet-to=- "$CDROM" > "$ABCDETEMPDIR/$CUEFILE"; then + echo cuefile=$CUEFILE >> "$ABCDETEMPDIR/status" + else log warning "the input flac file does not contain a cuesheet." fi ;; @@ -1781,15 +1946,24 @@ do_cleancue() n=1 echo "PERFORMER \"$DARTIST\"" >> "$CUEFILE_OUT" echo "TITLE \"$DALBUM\"" >> "$CUEFILE_OUT" + # Set IFS to to prevent read from swallowing spaces and tabs + OIFS="$IFS" + IFS=' +' cat "$CUEFILE_IN" | while read line do if echo "$line" | grep "INDEX 01" > /dev/null 2>&1 ; then +# FIXME # Possible patch: remove the line above, uncomment the 2 lines below. +# echo "$line" >> "$CUEFILE_OUT" +# if echo "$line" | grep "^[[:space:]]*TRACK" > /dev/null 2>&1 ; then eval track="\$TRACK$n" n=$(expr $n + 1) - echo "TITLE \"$track\"" >> "$CUEFILE_OUT" + echo " TITLE \"$track\"" >> "$CUEFILE_OUT" fi +# FIXME # If the lines above are uncommented, remove the line below. echo "$line" >> "$CUEFILE_OUT" done + IFS="$OIFS" mv "$CUEFILE_OUT" "$CUEFILE_IN" echo "cleancuefile" >> "$ABCDETEMPDIR/status" fi @@ -1965,6 +2139,7 @@ do_musicbrainzstat () do_musicbrainz () { +# Use MBE_TOCGetCDIndexId on a perl query : } @@ -2484,7 +2659,10 @@ do_cdread () UTRACKNUM=$FIRSTTRACK case "$CDROMREADERSYNTAX" in flac) READTRACKNUMS="$FIRSTTRACK.1-$(($LASTTRACK + 1)).0" ;; - cdparanoia) READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;; + cdparanoia) + #XX FIXME XX + # Add a variable to check if tracks are provided in command line and if not, use "0-" to rip the tracks + READTRACKNUMS="$FIRSTTRACK-$LASTTRACK" ;; cdda2wav) READTRACKNUMS="$FIRSTTRACK+$LASTTRACK" ;; *) echo "abcde error: $CDROMREADERSYNTAX does not support ONETRACK mode" exit 1 ;; @@ -2532,7 +2710,7 @@ do_cdread () STRIPTRACKNUM=$(expr $UTRACKNUM + 0) nice $READNICE $FLAC -d -f --cue=${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;; cdparanoia) - nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; + nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;; cdda2wav) if [ "$OSFLAVOUR" = "OSX" ] ; then # Hei, we have to unmount the device before running anything like cdda2wav in OSX @@ -2552,7 +2730,7 @@ do_cdread () ;; ## 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 @@ -2565,7 +2743,7 @@ do_cdread () else false fi ;; - debug) nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM -w $UTRACKNUM-[:1] "$FILEARG" $REDIR + debug) nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS "$CDROM" -w $UTRACKNUM-[:1] "$FILEARG" $REDIR ;; esac RETURN=$? @@ -2721,6 +2899,7 @@ KEEPWAVS=n PADTRACKS=n NOGAP=n BATCHNORM=n +NOCDDBQUERY=n # If using scsi devices, cdda2wav needs a CDROMID, instead of a device node # i.e. CDROMID="1,0,0" @@ -2822,7 +3001,7 @@ ACTIONS=cddb,read,encode,tag,move,clean # This option is basicaly for Debian package dependencies: # List of prefered outputs - by default, run with whatever we have in the path -DEFAULT_OUTPUT_BINARIES=vorbis:oggenc,flac:flac,mp3:lame,mp3:bladeenc,spx:speex,m4a:faac +DEFAULT_OUTPUT_BINARIES=vorbis:oggenc,flac:flac,mp3:toolame,mp3:lame,mp3:bladeenc,spx:speex,m4a:faac # List of prefered cdromreaders - by default, run whichever we have in the path DEFAULT_CDROMREADERS="cdparanoia cdda2wav" @@ -2913,7 +3092,7 @@ fi # Parse command line options #while getopts 1a:bc:C:d:Dehj:klLmMnNo:pPr:Rs:S:t:T:vVxw:W: opt ; do -while getopts 1a:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:uvVxX:w:W:z opt ; do +while getopts 1a:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:UvVxX:w:W:z opt ; do case "$opt" in 1) ONETRACK=y ;; a) ACTIONS="$OPTARG" ;; @@ -2937,7 +3116,7 @@ while getopts 1a:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:uvVxX:w:W:z opt ; do n) CDDBAVAIL=n ;; N) INTERACTIVE=n ;; m) DOSPLAYLIST=y ;; - M) MAKECUEFILE=y ;; + M) DOCUE=y ;; o) OUTPUTTYPE="$OPTARG" ;; p) PADTRACKS=y ;; P) USEPIPES=y ;; @@ -2947,7 +3126,6 @@ while getopts 1a:bBc:C:d:Defghj:klLmMnNo:pPr:s:S:t:T:uvVxX:w:W:z opt ; do S) CDSPEEDVALUE="$OPTARG" ;; t) STARTTRACKNUMBER="$OPTARG" ;; T) STARTTRACKNUMBER="$OPTARG" ; STARTTRACKNUMBERTAG="y" ;; - u) CDDBPROTO=6 ;; U) CDDBPROTO=5 ;; v) echo "This is abcde v$VERSION." @@ -2977,6 +3155,11 @@ shift $(($OPTIND - 1)) # ripping, we have a mixture of sanity checks, verifications, default settigs # and other crazy stuff that interdepends, but hey, someone has to do it. +# If NOCDDBQUERY is set, don't query the CDDB server. +if [ "$NOCDDBQUERY" = "y" ]; then + CDDBAVAIL="n" +fi + # If the user specified a flac file, then switch to special flac mode if echo "$CDROM" | grep -i '.flac$' > /dev/null 2>&1 ; then if [ ! -f "$CDROM" ]; then @@ -3066,11 +3249,13 @@ DOMOVE=n DOREPLAYGAIN=n DOPLAYLIST=n DOCLEAN=n +DOCUE=n for ACTION in $(echo $ACTIONS | tr , \ ) do case $ACTION in default) DOCDDB=y; DOREAD=y; DOENCODE=y; DOTAG=y; DOMOVE=y; DOCLEAN=y;; + cue) DOCUE=y ; MAKECUEFILE=y ;; cddb) DOCDDB=y;; read) DOREAD=y;; normalize) DONORMALIZE=y; DOREAD=y;; @@ -3265,7 +3450,7 @@ do [ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac [ "$DOTAG" = "y" ] && NEEDMETAFLAC=y [ "$DOREPLAYGAIN" = "y" ] && NEEDMETAFLAC=y - [ "$ONETRACK" = "y" ] && [ "$MAKECUEFILE" = "y" ] && NEEDMETAFLAC=y + [ "$ONETRACK" = "y" ] && [ "$DOCUE" = "y" ] && NEEDMETAFLAC=y ;; spx) [ "$SPEEXENCODERSYNTAX" = "default" ] && SPEEXENCODERSYNTAX=speexenc @@ -3433,7 +3618,7 @@ if [ ! "$CDDBAVAIL" = "n" ] && [ "$DOCDDB" = "y" ]; then : fi fi -if [ "$MAKECUEFILE" = "y" ]; then +if [ "$DOCUE" = "y" ]; then NEEDCUEREADER=y fi @@ -3722,7 +3907,7 @@ if [ "$EJECTCD" = "y" ] && [ -x $(which $EJECT) ]; then elif [ X"$(uname)" = X"Darwin" ] ; then disktool -e ${CDROM#/dev/} 0 else - $EJECT $EJECTOPTS $CDROM + $EJECT $EJECTOPTS "$CDROM" fi #fi fi