last=$stdin
done
else
- for last in "$@" ; do :; done
+ for last in $@ ; do :; done
fi
echo "$last"
}
REPLAYINDEX=0
for UTRACKNUM in $TRACKQUEUE
do
- CDDBTRACKNUM=$(eval "$UTRACKNUM" - 1) # Unpad
+ CDDBTRACKNUM=$(expr "$UTRACKNUM" - 1) # Unpad
getcddbinfo TRACKNAME
splitvarious
TRACKFILE="$(mungetrackname "$TRACKNAME")"
for UTRACKNUM in $TRACKQUEUE
do
# Shares some code with do_move since the filenames have to match
- CDDBTRACKNUM=$(eval $UTRACKNUM - 1) # Unpad
+ CDDBTRACKNUM=$(expr $UTRACKNUM - 1) # Unpad
getcddbinfo TRACKNAME
splitvarious
TRACKFILE="$(mungetrackname "$TRACKNAME")"
TRACKS=${#OFFSETTIMES[@]}
unset OFFSETS
#echo "processing offsetimes ${OFFSETTIMES[@]}"
- for OFFSETTIME in "${OFFSETTIMES[@]}"; do
+ for OFFSETTIME in ${OFFSETTIMES[@]}; do
OFFSETS="$OFFSETS $(( 10#${OFFSETTIME:0:2} * 4500 + 10#${OFFSETTIME:3:2} * 75 + 10#${OFFSETTIME:6:2} ))"
#OFFSETS[${#OFFSETS[*]}]=$(( 10#${OFFSETTIME:0:2} * 4500 + 10#${OFFSETTIME:3:2} * 75 + 10#${OFFSETTIME:6:2} ))
done
# Everything is fine. Check for ^encodetracklocation-
# and encode-output entries in the status file and
# remove them. These are not relevant across sessions.
+ echo "Resuming" >> "${ABCDETEMPDIR}/status"
if [ -f "${ABCDETEMPDIR}/status" ]; then
mv "${ABCDETEMPDIR}/status" "${ABCDETEMPDIR}/status.old"
grep -v ^encodetracklocation- < "${ABCDETEMPDIR}/status.old" \
return 0
fi
- vecho "Obtaining CD-Text results..."
- local SOURCE_WORKDIR="${ABCDETEMPDIR}/data-cdtext"
- mkdir -p "${SOURCE_WORKDIR}"
-
- if [ "$OSFLAVOUR" = "OSX" ] ; then
- # Hei, we have to unmount the device before running anything like cdda2wav/icedax in OSX
- diskutil unmount "${CDROM#/dev/}"
- # Also, in OSX the cdrom device for cdda2wav/icedax changes...
- CDDA2WAVCDROM="IODVDServices"
- elif [ "$OSFLAVOUR" = "FBSD" ] || [ "$OSFLAVOUR" = "IRIX" ]; then
- CDDA2WAVCDROM="$CDROMID"
+ if checkstatus cdtext-readcomplete; then
+ NUM_RESPONSES=$(checkstatus "cdtext-entries")
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
+ vecho "Re-using existing data from CD-Text"
else
- if [ "$CDROMID" = "" ]; then
- CDDA2WAVCDROM="$CDROM"
- else
+ vecho "Obtaining CD-Text results..."
+ local SOURCE_WORKDIR="${ABCDETEMPDIR}/data-cdtext"
+ mkdir -p "${SOURCE_WORKDIR}"
+
+ if [ "$OSFLAVOUR" = "OSX" ] ; then
+ # Hei, we have to unmount the device before running anything like cdda2wav/icedax in OSX
+ diskutil unmount "${CDROM#/dev/}"
+ # Also, in OSX the cdrom device for cdda2wav/icedax changes...
+ CDDA2WAVCDROM="IODVDServices"
+ elif [ "$OSFLAVOUR" = "FBSD" ] || [ "$OSFLAVOUR" = "IRIX" ]; then
CDDA2WAVCDROM="$CDROMID"
+ else
+ if [ "$CDROMID" = "" ]; then
+ CDDA2WAVCDROM="$CDROM"
+ else
+ CDDA2WAVCDROM="$CDROMID"
+ fi
fi
- fi
- # Do we have CD-Text on the disc (and can the drive read it?)
- (
- cd "${SOURCE_WORKDIR}" && rm -f audio.* audio_*
- ${CDTEXT_READER} -J -v titles -D "${CDDA2WAVCDROM}" > "${SOURCE_WORKDIR}/cd-text" 2>&1
- )
- grep -a -q '^CD-Text: detected' "${SOURCE_WORKDIR}/cd-text"
- ERRORCODE=$?
- if [ $ERRORCODE -ne 0 ]; then
- # No CD-Text found, bail
- return 0
- fi
-
- NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + 1))
- # Make an empty template
- $CDDBTOOL template "$(cat "${ABCDETEMPDIR}/cddbdiscid")" > "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
- echo "cddb-read-${NUM_CDDB_MATCHES}-complete" >> "${ABCDETEMPDIR}/status"
- rm -f "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
-
- # XXX FIXME - this is a hack and should be replaced by proper
- # character set tracking for the CDDB data we have.
- if [ "$CDDBPROTO" -ge 6 ]; then
- # convert to Unicode
- iconv -f iso-8859-1 -t utf-8 <"${SOURCE_WORKDIR}/audio.cddb" >"${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
- else
- # copy verbatim, assuming CD-TEXT is in ISO-8859-1 format
- # apparently icedax/cdda2wav have no support for 16-bit
- # characters yet, either
- cp -p "${SOURCE_WORKDIR}/audio.cddb" "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
- fi
+ # Do we have CD-Text on the disc (and can the drive read it?)
+ (
+ cd "${SOURCE_WORKDIR}" && rm -f audio.* audio_*
+ ${CDTEXT_READER} -J -v titles -D "${CDDA2WAVCDROM}" > "${SOURCE_WORKDIR}/cd-text" 2>&1
+ )
+ grep -a -q '^CD-Text: detected' "${SOURCE_WORKDIR}/cd-text"
+ ERRORCODE=$?
+ if [ $ERRORCODE -ne 0 ]; then
+ # No CD-Text found, bail
+ return 0
+ fi
- CDDBDISCID=$(echo "$CDDBTRACKINFO" | cut -d' ' -f1)
- ATITLE=$(grep -a -e '^DTITLE=' "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}" | cut -c8- | tr -d \\r\\n)
- echo "CD-Text" > "${SOURCE_WORKDIR}/datasource.${NUM_CDDB_MATCHES}"
- echo "none ${CDDBDISCID} ${ATITLE}" >> "${SOURCE_WORKDIR}/cddbquery.${NUM_CDDB_MATCHES}"
-
- ( cd "${SOURCE_WORKDIR}" && rm -f audio_* audio.* )
- for file in ${SOURCE_WORKDIR}/cddbread.* ${SOURCE_WORKDIR}/cddbquery.* ${SOURCE_WORKDIR}/datasource.*; do
- if [ -f "$file" ]; then
- cp "$file" "${ABCDETEMPDIR}"
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + 1))
+ # Make an empty template
+ $CDDBTOOL template "$(cat "${ABCDETEMPDIR}/cddbdiscid")" > "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
+ echo "cddb-read-${NUM_CDDB_MATCHES}-complete" >> "${ABCDETEMPDIR}/status"
+ rm -f "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
+
+ # XXX FIXME - this is a hack and should be replaced by proper
+ # character set tracking for the CDDB data we have.
+ if [ "$CDDBPROTO" -ge 6 ]; then
+ # convert to Unicode
+ iconv -f iso-8859-1 -t utf-8 <"${SOURCE_WORKDIR}/audio.cddb" >"${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
+ else
+ # copy verbatim, assuming CD-TEXT is in ISO-8859-1 format
+ # apparently icedax/cdda2wav have no support for 16-bit
+ # characters yet, either
+ cp -p "${SOURCE_WORKDIR}/audio.cddb" "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
fi
- done
- echo "cdtext-readcomplete" >> "${ABCDETEMPDIR}/status"
+
+ CDDBDISCID=$(echo "$CDDBTRACKINFO" | cut -d' ' -f1)
+ ATITLE=$(grep -a -e '^DTITLE=' "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}" | cut -c8- | tr -d \\r\\n)
+ echo "CD-Text" > "${SOURCE_WORKDIR}/datasource.${NUM_CDDB_MATCHES}"
+ echo "none ${CDDBDISCID} ${ATITLE}" >> "${SOURCE_WORKDIR}/cddbquery.${NUM_CDDB_MATCHES}"
+
+ ( cd "${SOURCE_WORKDIR}" && rm -f audio_* audio.* )
+ for file in ${SOURCE_WORKDIR}/cddbread.* ${SOURCE_WORKDIR}/cddbquery.* ${SOURCE_WORKDIR}/datasource.*; do
+ if [ -f "$file" ]; then
+ cp "$file" "${ABCDETEMPDIR}"
+ fi
+ done
+ echo "cdtext-readcomplete" >> "${ABCDETEMPDIR}/status"
+ echo "cdtext-entries=1" >> "${ABCDETEMPDIR}/status"
+ fi
}
# do_musicbrainz_read
#
do_musicbrainz_read ()
{
- if checkstatus musicbrainz-readcomplete; then :; else
+ if checkstatus musicbrainz-readcomplete; then
+ NUM_RESPONSES=$(checkstatus "musicbrainz-entries")
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
+ vecho "Re-using existing data from $NUM_RESPONSES Musicbrainz match(es)"
+ else
vecho "Obtaining Musicbrainz results..."
# If MB is to be used, interpret the query results and read all
# the available entries.
done
fi
echo "musicbrainz-readcomplete" >> "${ABCDETEMPDIR}/status"
+ echo "musicbrainz-entries=$NUM_RESPONSES" >> "${ABCDETEMPDIR}/status"
fi
}
# If it's not to be used, generate a template.
# Then, display it (or them) and let the user choose/edit it
- if checkstatus cddb-readcomplete; then :; else
+ if checkstatus cddb-readcomplete; then
+ NUM_RESPONSES=$(checkstatus "cddb-entries")
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
+ vecho "Re-using existing data from $NUM_RESPONSES cddb match(es)"
+ else
RESPONSECODE=$(head -n 1 "${SOURCE_WORKDIR}/cddbquery" | cut -f1 -d' ')
vecho "Obtaining CDDB results..."
case "$RESPONSECODE" in
200)
# One exact match, retrieve it
# 200 [section] [discid] [artist] / [title]
- NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + 1))
+ NUM_RESPONSES=1
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
$CDDBTOOL read "$CDDBURL" "$CDDBPROTO" "$CDDBUSER" "$CDDBHOST" \
$(cut -f2,3 -d' ' "${SOURCE_WORKDIR}/cddbquery") \
> "${SOURCE_WORKDIR}/cddbread.${NUM_CDDB_MATCHES}"
# Need to re-count the entries here to be able
# to incrememnt $NUM_CDDB_MATCHES in the
# parent
- NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $(echo "${SOURCE_WORKDIR}/datasource.*" | wc -w)))
+ NUM_RESPONSES=$(echo "${SOURCE_WORKDIR}/datasource.*" | wc -w)
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
vecho "done."
;;
999)
# Using local copy.
- NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + 1))
+ NUM_RESPONSES=1
+ NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
echo "cddb-read-${NUM_CDDB_MATCHES}-complete" >> "${ABCDETEMPDIR}/status"
;;
esac
- echo "cddb-readcomplete" >> "${ABCDETEMPDIR}/status"
for file in ${SOURCE_WORKDIR}/cddbread.* ${SOURCE_WORKDIR}/cddbquery.* ${SOURCE_WORKDIR}/datasource.*; do
if [ -f "$file" ]; then
cp "$file" "${ABCDETEMPDIR}"
fi
done
+ echo "cddb-readcomplete" >> "${ABCDETEMPDIR}/status"
+ echo "cddb-entries=$NUM_RESPONSES" >> "${ABCDETEMPDIR}/status"
fi
}
# try to download CD cover
do_getalbumart()
{
- # set variables
- ALBUMFILE="$(mungealbumname "$DALBUM")"
- ARTISTFILE="$(mungeartistname "$DARTIST")"
- GENRE="$(mungegenre "$GENRE")"
- YEAR=${CDYEAR:-$CDYEAR}
- # have we got a musicbrainz mbid or amazon asin?
- case "$CDDBMETHOD" in
- *musicbrainz*)
- # try musicbrainz mbid
- if [ -s "${ABCDETEMPDIR}/mbid.$(checkstatus cddb-choice)" ]; then
- MBID=$(cat "${ABCDETEMPDIR}/mbid.$(checkstatus cddb-choice)")
- vecho "trying to get cover from coverartarchive.orq with musicbrainz mbid $MBID" >&2
- ALBUMARTURL="http://coverartarchive.org/release/$MBID/front"
- vecho "cover URL: $ALBUMARTURL" >&2
- $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
- if [ $? -ne 0 ]; then
- vecho "could not download cover from musicbrainz" >&2
- # try amazon asin
- if [ -s "${ABCDETEMPDIR}/asin.$(checkstatus cddb-choice)" ]; then
- ASIN=$(cat "${ABCDETEMPDIR}/asin.$(checkstatus cddb-choice)")
- vecho "trying to get cover from amazon.com with asin $ASIN" >&2
- ALBUMARTURL="http://ec1.images-amazon.com/images/P/$ASIN.01.LZZZZZZZZ.jpg"
- vecho "cover URL: $ALBUMARTURL" >&2
- $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
- if [ $? -ne 0 ]; then
- vecho "could not download cover from amazon" >&2
- else
- # Check that size is reasonable; sometimes when there is no cover image
- # on amazon.com a 1x1 pixel gif image will be downloaded instead:
- FILESIZE=$(wc -c < "${ABCDETEMPDIR}/$ALBUMARTFILE")
- if [ "$FILESIZE" -lt 1024 ]; then
- rm "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ if checkstatus "get-album-art"; then :; else
+ # set variables
+ ALBUMFILE="$(mungealbumname "$DALBUM")"
+ ARTISTFILE="$(mungeartistname "$DARTIST")"
+ GENRE="$(mungegenre "$GENRE")"
+ YEAR=${CDYEAR:-$CDYEAR}
+ # have we got a musicbrainz mbid or amazon asin?
+ case "$CDDBMETHOD" in
+ *musicbrainz*)
+ # try musicbrainz mbid
+ if [ -s "${ABCDETEMPDIR}/mbid.$(checkstatus cddb-choice)" ]; then
+ MBID=$(cat "${ABCDETEMPDIR}/mbid.$(checkstatus cddb-choice)")
+ vecho "trying to get cover from coverartarchive.orq with musicbrainz mbid $MBID" >&2
+ ALBUMARTURL="http://coverartarchive.org/release/$MBID/front"
+ vecho "cover URL: $ALBUMARTURL" >&2
+ $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ if [ $? -ne 0 ]; then
+ vecho "could not download cover from musicbrainz" >&2
+ # try amazon asin
+ if [ -s "${ABCDETEMPDIR}/asin.$(checkstatus cddb-choice)" ]; then
+ ASIN=$(cat "${ABCDETEMPDIR}/asin.$(checkstatus cddb-choice)")
+ vecho "trying to get cover from amazon.com with asin $ASIN" >&2
+ ALBUMARTURL="http://ec1.images-amazon.com/images/P/$ASIN.01.LZZZZZZZZ.jpg"
+ vecho "cover URL: $ALBUMARTURL" >&2
+ $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ if [ $? -ne 0 ]; then
vecho "could not download cover from amazon" >&2
+ else
+ # Check that size is reasonable; sometimes when there is no cover image
+ # on amazon.com a 1x1 pixel gif image will be downloaded instead:
+ FILESIZE=$(wc -c < "${ABCDETEMPDIR}/$ALBUMARTFILE")
+ if [ "$FILESIZE" -lt 1024 ]; then
+ rm "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ vecho "could not download cover from amazon" >&2
+ fi
fi
+ else
+ vecho "no amazon ID found" >&2
fi
- else
- vecho "no amazon ID found" >&2
fi
+ else
+ vecho "no musicbrainz ID found" >&2
fi
+ ;;
+ esac
+ # use glyrc
+ if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
+ vecho "trying to get cover with glyrc for $ARTISTFILE / $ALBUMFILE" >&2
+ $GLYRC cover --artist "$ARTISTFILE" --album "$ALBUMFILE" --write "${ABCDETEMPDIR}/$ALBUMARTFILE" $GLYRCOPTS
+ if [ $? -ne 0 ]; then
+ vecho "could not download cover with glyrc" >&2
else
- vecho "no musicbrainz ID found" >&2
+ ALBUMARTURL="glyrc"
fi
- ;;
- esac
- # use glyrc
- if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
- vecho "trying to get cover with glyrc for $ARTISTFILE / $ALBUMFILE" >&2
- $GLYRC cover --artist "$ARTISTFILE" --album "$ALBUMFILE" --write "${ABCDETEMPDIR}/$ALBUMARTFILE" $GLYRCOPTS
- if [ $? -ne 0 ]; then
- vecho "could not download cover with glyrc" >&2
- else
- ALBUMARTURL="glyrc"
fi
- fi
- if [ "$INTERACTIVE" = "y" ]; then
- if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
- # display properties of coverart when identify is available
- if new_checkexec "$IDENTIFY"; then
- $IDENTIFY $IDENTIFYOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE" >&2
- fi
- # display coverart when DISPLAY is set and display command is available
- if new_checkexec "$DISPLAYCMD" && [ "$DISPLAY" != "" ]; then
- $DISPLAYCMD $DISPLAYCMDOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE" >&2 &
+ if [ "$INTERACTIVE" = "y" ]; then
+ if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
+ # display properties of coverart when identify is available
+ if new_checkexec "$IDENTIFY"; then
+ $IDENTIFY $IDENTIFYOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE" >&2
+ fi
+ # display coverart when DISPLAY is set and display command is available
+ if new_checkexec "$DISPLAYCMD" && [ "$DISPLAY" != "" ]; then
+ $DISPLAYCMD $DISPLAYCMDOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE" >&2 &
+ fi
+ else
+ # nothing downloaded yet
+ vecho "automatic album art downloading failed" >&2
fi
- else
- # nothing downloaded yet
- vecho "automatic album art downloading failed" >&2
- fi
- # see if the user can find a better album art manually
- echo -n "Do you want to enter URL or local path for the album art [y/N]? " >&2
- read YESNO
- while [ "$YESNO" != "y" ] && [ "$YESNO" != "n" ] && [ "$YESNO" != "Y" ] && \
- [ "$YESNO" != "N" ] && [ "$YESNO" != "" ]
- do
- echo -n 'Invalid selection. Please answer "y" or "n": ' >&2
+ # see if the user can find a better album art manually
+ echo -n "Do you want to enter URL or local path for the album art [y/N]? " >&2
read YESNO
- done
- if [ "$YESNO" = "y" ] || [ "$YESNO" = "Y" ]; then
- echo -n "Enter URL or local path (ENTER to cancel) :" >&2
- read ALBUMARTURL
- if [ ! -z "$ALBUMARTURL" ]; then
- if [[ ${ALBUMARTURL} =~ (https?|ftp|file)://.* ]]; then
- $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
- if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
- vecho "unable to download $ALBUMARTURL" >&2
- fi
- else # it's a local path
- cp "$ALBUMARTURL" "${ABCDETEMPDIR}/$ALBUMARTFILE"
- if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
- vecho "unable to copy $ALBUMARTURL to ${ABCDETEMPDIR}/$ALBUMARTFILE" >&2
+ while [ "$YESNO" != "y" ] && [ "$YESNO" != "n" ] && [ "$YESNO" != "Y" ] && \
+ [ "$YESNO" != "N" ] && [ "$YESNO" != "" ]
+ do
+ echo -n 'Invalid selection. Please answer "y" or "n": ' >&2
+ read YESNO
+ done
+ if [ "$YESNO" = "y" ] || [ "$YESNO" = "Y" ]; then
+ echo -n "Enter URL or local path (ENTER to cancel) :" >&2
+ read ALBUMARTURL
+ if [ ! -z "$ALBUMARTURL" ]; then
+ if [[ ${ALBUMARTURL} =~ (https?|ftp|file)://.* ]]; then
+ $HTTPGET "$ALBUMARTURL" > "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
+ vecho "unable to download $ALBUMARTURL" >&2
+ fi
+ else # it's a local path
+ cp "$ALBUMARTURL" "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ if [ ! -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
+ vecho "unable to copy $ALBUMARTURL to ${ABCDETEMPDIR}/$ALBUMARTFILE" >&2
+ fi
fi
fi
fi
fi
- fi
- # convert to ALBUMARTTYPE if ImageMagick is available, if not assume correct type
- if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ] && new_checkexec "$IDENTIFY"; then
- ALBUMARTURLTYPE=$($IDENTIFY "${ABCDETEMPDIR}/$ALBUMARTFILE" | cut -d' ' -f2)
- if [ "$ALBUMARTURLTYPE" != "$ALBUMARTTYPE" ] || [ "$ALBUMARTALWAYSCONVERT" = "y" ]; then
- if new_checkexec "$CONVERT"; then
- mv "${ABCDETEMPDIR}/$ALBUMARTFILE" "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp"
- $CONVERT "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp" $CONVERTOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE"
- rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp"
- else
- rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE"
- vecho "sorry, cannot convert $ALBUMARTURLTYPE to $ALBUMARTTYPE" >&2
- vecho "without ImageMagick convert" >&2
+ # convert to ALBUMARTTYPE if ImageMagick is available, if not assume correct type
+ if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ] && new_checkexec "$IDENTIFY"; then
+ ALBUMARTURLTYPE=$($IDENTIFY "${ABCDETEMPDIR}/$ALBUMARTFILE" | cut -d' ' -f2)
+ if [ "$ALBUMARTURLTYPE" != "$ALBUMARTTYPE" ] || [ "$ALBUMARTALWAYSCONVERT" = "y" ]; then
+ if new_checkexec "$CONVERT"; then
+ mv "${ABCDETEMPDIR}/$ALBUMARTFILE" "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp"
+ $CONVERT "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp" $CONVERTOPTS "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE.tmp"
+ else
+ rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ vecho "sorry, cannot convert $ALBUMARTURLTYPE to $ALBUMARTTYPE" >&2
+ vecho "without ImageMagick convert" >&2
+ fi
fi
fi
- fi
- # copy to target directories
- if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
- for OUTPUT in $(echo "$OUTPUTTYPE" | tr , \ )
- do
- # put cover in the same place as the album
- if [ "$ONETRACK" = "y" ] ; then
- if [ "$VARIOUSARTISTS" = "y" ] ; then
- ALBUMARTDIR="$(eval echo "$VAONETRACKOUTPUTFORMAT")"
+ # copy to target directories
+ if [ -s "${ABCDETEMPDIR}/$ALBUMARTFILE" ]; then
+ for OUTPUT in $(echo "$OUTPUTTYPE" | tr , \ )
+ do
+ # put cover in the same place as the album
+ if [ "$ONETRACK" = "y" ] ; then
+ if [ "$VARIOUSARTISTS" = "y" ] ; then
+ ALBUMARTDIR="$(eval echo "$VAONETRACKOUTPUTFORMAT")"
+ else
+ ALBUMARTDIR="$(eval echo "$ONETRACKOUTPUTFORMAT")"
+ fi
else
- ALBUMARTDIR="$(eval echo "$ONETRACKOUTPUTFORMAT")"
- fi
+ if [ "$VARIOUSARTISTS" = "y" ] ; then
+ ALBUMARTDIR="$(eval echo "$VAOUTPUTFORMAT")"
+ else
+ ALBUMARTDIR="$(eval echo "$OUTPUTFORMAT")"
+ fi
+ fi
+ FINALALBUMARTDIR="$(dirname "$OUTPUTDIR/$ALBUMARTDIR")"
+ vecho "copying cover to target directory $FINALALBUMARTDIR" >&2
+ mkdir -p "$FINALALBUMARTDIR"
+ cp "${ABCDETEMPDIR}/$ALBUMARTFILE" "$FINALALBUMARTDIR"
+ done
+ rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE"
+ echo "get-album-art=$ALBUMARTURL" >> "${ABCDETEMPDIR}/status"
else
- if [ "$VARIOUSARTISTS" = "y" ] ; then
- ALBUMARTDIR="$(eval echo "$VAOUTPUTFORMAT")"
- else
- ALBUMARTDIR="$(eval echo "$OUTPUTFORMAT")"
- fi
+ log warning "could not get cover"
+ echo "get-album-art=none" >> "${ABCDETEMPDIR}/status"
fi
- FINALALBUMARTDIR="$(dirname "$OUTPUTDIR/$ALBUMARTDIR")"
- vecho "copying cover to target directory $FINALALBUMARTDIR" >&2
- mkdir -p "$FINALALBUMARTDIR"
- cp "${ABCDETEMPDIR}/$ALBUMARTFILE" "$FINALALBUMARTDIR"
- done
- rm -f "${ABCDETEMPDIR}/$ALBUMARTFILE"
- echo "get-album-art=$ALBUMARTURL" >> "${ABCDETEMPDIR}/status"
- else
- log warning "could not get cover"
- echo "get-album-art=none" >> "${ABCDETEMPDIR}/status"
fi
}
# the user said
# We need the first and last track for cdda2wav/icedax
FIRSTTRACK=$2
- LASTTRACK=$(($3 + 0))
+ LASTTRACK=$(expr $3 + 0)
UTRACKNUM=$FIRSTTRACK
case "$CDROMREADERSYNTAX" in
flac) READTRACKNUMS="-" ;;
else
UTRACKNUM=$1
fi
- CDDBTRACKNUM=$(eval $UTRACKNUM - 1) # Unpad
+ CDDBTRACKNUM=$(expr $UTRACKNUM - 1) # Unpad
if [ "$USEPIPES" = "y" ]; then
TEMPARG="PIPERIPPER_$CDROMREADERSYNTAX"
FILEARG="$( eval echo "\$$TEMPARG" )"
### FIXME ### Shall we just use -o $FILEARG ??
flac)
# Avoid problems with math expressions by unpadding the given UTRACKNUM
- STRIPTRACKNUM=$(eval $UTRACKNUM + 0 )
+ STRIPTRACKNUM=$(expr $UTRACKNUM + 0 )
nice $READNICE $FLAC -d -f --cue="${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0}" "$FILEARG" "$CDROM" ;;
cdparanoia|libcdio)
if [ "$USEPIPES" = "y" ]; then
;;
cddafs)
# Find the track's mounted path
- REALTRACKNUM=$(eval $UTRACKNUM + 0) # Unpad
+ REALTRACKNUM=$(expr $UTRACKNUM + 0) # Unpad
FILEPATH=$(mount | grep "$CDROM on" | sed 's/^[^ ]* on \(.*\) (.*/\1/')
FILEPATH=$(find "$FILEPATH" | grep "/$REALTRACKNUM ");
# If the file exists, copy it
esac
# Parse command line options
-while getopts 1a:bBc:C:d:DefgGhj:klLmMnNo:pP:Q:r:s:S:t:T:UvVxX:w:W:z opt ; do
+while getopts 1a:bBc:C:d:DefgGhj:klLmMnNo:pPQ:r:s:S:t:T:UvVxX:w:W:z opt ; do
case "$opt" in
1) ONETRACK=y ;;
a) ACTIONS="$OPTARG" ;;
# Hey, for grins, as of 2016-08-30 this is now line 4814! -GR
# Export needed things so they can be read in this subshell
-export CDDBTOOL ABCDETEMPDIR TRACKQUEUE LOWDISK EJECTCD EJECT EJECTOPTS
-export CDROM CDDBDATA REMOTEHOSTS MAXPROCS HTTPGET MD5SUM
+export CDDBTOOL # Path and options for the tool to query CDDB
+export ABCDETEMPDIR # Path to the tmpdir for this rip
+export TRACKQUEUE # 0-padded list of tracks to be processed
+export LOWDISK # Are we using the low-diskspace algorithm?
+export EJECTCD # Should we eject the CD when we're finished ripping?
+export EJECT # The commend to use to eject the CD, if we have one
+export EJECTOPTS # Options to that command
+export CDROM # Device path for the CD device
+export CDDBDATA # The filename we're using for CD lookup data
+export REMOTEHOSTS # List of remote hosts for parallel encoding, if given
+export MAXPROCS # The number of *local* encodes to do in parallel
+export HTTPGET # Program to use to grab files via http
+export MD5SUM # Program to calculate MD5 checksums
if [ "$DOREAD" = "y" ]; then
# User-definable function to set some things. Use it for
fi
if [ "$ONETRACK" = "y" ]; then
- TRACKS="$FIRSTTRACK"
+ TRACKS=$FIRSTTRACK
if [ "$USEPIPES" = "y" ]; then
if checkstatus "readencodetrack-$FIRSTTRACK"; then :; else
- do_cdread onetrack "$FIRSTTRACK" "$LASTTRACK" | do_encode "$FIRSTTRACK" %local0% > /dev/null 2>&1
+ do_cdread onetrack $FIRSTTRACK $LASTTRACK | do_encode $FIRSTTRACK %local0% > /dev/null 2>&1
fi
else
if checkstatus "readtrack-$FIRSTTRACK"; then :; else
- do_cdread onetrack "$FIRSTTRACK" "$LASTTRACK"
+ do_cdread onetrack $FIRSTTRACK $LASTTRACK
fi
fi
else
if [ "$USEPIPES" = "y" ]; then
if checkstatus "readencodetrack-$UTRACKNUM"; then :; else
# Read, pipe, shut up!
- do_cdread "$UTRACKNUM" | do_encode "$UTRACKNUM" %local0% > /dev/null 2>&1
+ do_cdread $UTRACKNUM | do_encode $UTRACKNUM %local0% > /dev/null 2>&1
fi
else
if checkstatus "readtrack-$UTRACKNUM"; then :; else
- do_cdread "$UTRACKNUM"
+ do_cdread $UTRACKNUM
fi
if [ "$?" != "0" ]; then
# CD read failed - don't give the goahead to
splitvarious
else
TRACKNUM="$UTRACKNUM"
- CDDBTRACKNUM=$(eval $UTRACKNUM - 1) # Unpad
+ CDDBTRACKNUM=$(expr $UTRACKNUM - 1) # Unpad
getcddbinfo TRACKNAME
splitvarious
fi