# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-VERSION='2.8.2-UNRELEASED'
+VERSION='2.9.2-DEV'
usage ()
{
{
PAGEFILE="$1"
local NUM_LINES=$(wc -l < "$PAGEFILE")
+ local LINES=""
+
+ # Check the terminal length every time we're called - the user
+ # might have resized since last time we were here
+ # First, try tput
+ if new_checkexec tput; then
+ LINES=$(tput lines)
+ fi
+
+ # If tput didn't work, 24 will do...
+ if [ -z "$LINES" ]; then
+ LINES=24
+ fi
# Is the text long enough to need a pager?
if [ "$NUM_LINES" -ge $LINES ]; then
if [ -n "$STARTTRACKNUMBER" ] ; then
# Get the trackpadding from the current track, also trim whitespace for MacOSX
CURRENTTRACKPADDING=$(echo -n "$UTRACKNUM" | wc -c | tr -d ' ')
- TRACKNUM=$( printf %0."${CURRENTTRACKPADDING}"d $(("${UTRACKNUM}" + "${STARTTRACKNUMBER}" - "${FIRSTTRACK}")))
+ REALTRACKNUM=$(expr $UTRACKNUM + 0) # Unpad
+ TRACKNUM=$( printf %0.${CURRENTTRACKPADDING}d $((${REALTRACKNUM} + ${STARTTRACKNUMBER} - ${FIRSTTRACK})))
else
- TRACKNUM="${UTRACKNUM}"
+ TRACKNUM=${UTRACKNUM}
fi
}
REPLAYINDEX=0
for UTRACKNUM in $TRACKQUEUE
do
- CDDBTRACKNUM=$(expr "$UTRACKNUM" - 1) # Unpad
+ CDDBTRACKNUM=$(expr $UTRACKNUM - 1) # Unpad
getcddbinfo TRACKNAME
splitvarious
TRACKFILE="$(mungetrackname "$TRACKNAME")"
## (some hardware players insist on CRLF endings)
if [ "$DOSPLAYLIST" = "y" ]; then
awk '{sub("\r$",""); printf "%s\r\n", $0}' "$OUTPUTDIR/$PLAYLISTFILE" > "${ABCDETEMPDIR}/PLAYLISTFILE.tmp"
-# mv -f "${ABCDETEMPDIR}/PLAYLISTFILE.tmp" "$OUTPUTDIR/$PLAYLISTFILE"
cat "${ABCDETEMPDIR}/PLAYLISTFILE.tmp" | sed 's/\//\\/' > "$OUTPUTDIR/$PLAYLISTFILE"
fi
echo "playlistcomplete" >> "${ABCDETEMPDIR}/status"
val=$1
ret=0
while [ "$val" -gt 0 ] ; do
- ret=$(( "$ret" + ( "$val" % 10) ))
- val=$(( "$val" / 10 ))
+ ret=$(( $ret + ( $val % 10) ))
+ val=$(( $val / 10 ))
done
echo "$ret"
}
msf2lba () {
OIFS="$IFS"
IFS=":"
- set -- "$1"
+ set -- $1
IFS="$OIFS"
local first second third
first=$(( $1 + 0 ))
second=$(( $2 + 0 ))
third=$(( $3 + 0 ))
- echo $(( ((("$first" * 60) + "$second") * 75) + "$third" ))
+ echo $(( ((($first * 60) + $second) * 75) + $third ))
}
OFFSET=150
N=0
while read line ; do
- set -- "$line"
+ set -- $line
case "$1" in
- TRACK) i=$(( i + 1 ))
+ TRACK)
+ i=$(( i + 1 ))
;;
- INDEX) if [ "$2" -eq 1 ] ; then
- LBA=$(msf2lba "$3")
- START=$(( "$LBA" + "$PREGAP" + "$OFFSET" ))
+ 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" ))
+ X=$(cddb_sum $(( $START / 75 )) )
+ N=$(( $N + $X ))
fi
;;
- PREGAP) PREGAP=$(msf2lba "$2")
+ PREGAP)
+ PREGAP=$(msf2lba $2)
;;
- REM) case "$2" in
+ REM)
+ case "$2" in
FLAC__lead-out)
- LEADOUT=$(( "$4" / 588 ))
+ LEADOUT=$(( $4 / 588 ))
;;
FLAC__lead-in)
- LEADIN=$(( "$3" / 588 ))
+ LEADIN=$(( $3 / 588 ))
;;
esac
;;
done
TRACKS=$i
- LEADOUT=$(( "$LEADOUT" + "$LEADIN" ))
+ LEADOUT=$(( $LEADOUT + $LEADIN ))
- LENGTH=$(( "$LEADOUT"/75 - "$TRACK1"/75 ))
- CDDBDISCID=$(( ( "$N" % 255 ) * 2**24 | "$LENGTH" * 2**8 | "$TRACKS" ))
- printf "%08x %i" "${CDDBDISCID}" "$TRACKS"
+ LENGTH=$(( $LEADOUT/75 - $TRACK1/75 ))
+ CDDBDISCID=$(( ( $N % 255 ) * 2**24 | $LENGTH * 2**8 | $TRACKS ))
+ printf %08x %i ${CDDBDISCID} $TRACKS
j=1
- while [ $j -le "$TRACKS" ] ; do
+ while [ $j -le $TRACKS ] ; do
eval echo -n "\" \$TRACK$j\""
j=$(( $j + 1))
done
- echo " $(( $LEADOUT / 75 ))"
+ echo $(( $LEADOUT / 75 ))
}
# abcde.mkcue
local i OFFSET LBA
local CUEWAVFILE
- if [ "$1" = --wholedisk ] ; then
+ if [ "$1" = "--wholedisk" ] ; then
MODE=INDEX
else
MODE=PREGAP
CUEWAVFILE="dummy.wav"
fi
- set -- "$CDDBTRACKINFO"
+ set -- $CDDBTRACKINFO
- DISCID="$1"
- TRACKS="$2"
+ DISCID=$1
+ TRACKS=$2
shift 2
echo "REM DISCID $DISCID"
echo FILE \""$CUEWAVFILE"\" WAVE
- if [ "$1" -ne 150 ] && [ "$MODE" = "PREGAP" ] ; then
- OFFSET="$1"
+ if [ $1 -ne 150 ] && [ $MODE = "PREGAP" ] ; then
+ OFFSET=$1
else
- OFFSET="150"
+ OFFSET=150
fi
i=1
OFFSETTIMES=( $(echo "$CUESHEET" | sed -n -e's/\ *INDEX 01\ \+//p' ) )
TRACKS=${#OFFSETTIMES[@]}
unset OFFSETS
- #echo "processing offsetimes ${OFFSETTIMES[@]}"
+ vecho "processing offsetimes ${OFFSETTIMES[@]}"
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
LEADOUT=$(( $(echo "$CUESHEET" | grep lead-out | get_last) * 75 / 44100 ))
TRACKNUMPADDING=2
fi
- ABCDETEMPDIR="$WAVOUTPUTDIR/abcde.$(echo "$CDDBTRACKINFO" | cut -f1 -d' ')"
+ ABCDETEMPDIR="$WAVOUTPUTDIR/abcde.${CDDBDISCID}"
if [ -z "$TRACKQUEUE" ]; then
if [ ! "$STRIPDATATRACKS" = "n" ]; then
case "$CDROMREADERSYNTAX" in
fi
echo -n "Grabbing entire CD - tracks: "
if [ ! "$PADTRACKS" = "y" ] ; then
- TRACKNUMPADDING=$(echo -n "$TRACKS" | wc -c | tr -d ' ')
+ TRACKNUMPADDING=$(echo -n $TRACKS | wc -c | tr -d ' ')
fi
TRACKS=$(printf "%0.${TRACKNUMPADDING}d" $TRACKS)
- X=0
- while [ "$X" -ne "$TRACKS" ]
+ X=1
+ while [ $X -le $TRACKS ]
do
- PT=$(printf "%0.${TRACKNUMPADDING}d" $(($X + 1)))
+ PT=$(printf "%0.${TRACKNUMPADDING}d" $X)
TRACKQUEUE="$TRACKQUEUE $PT"
X=$(($X + 1))
done
TRACKNUMPADDING=$(echo -n "$LASTTRACK" | wc -c | tr -d ' ')
fi
# Now we normalize the trackqueue
- for TRACK in $TRACKQUEUE ; do
- TRACKNUM=$(printf "%0.${TRACKNUMPADDING}d" $(($TRACK + 0)))
- PADTRACKQUEUE="$PADTRACKQUEUE $TRACKNUM"
+ for TRACK in $TRACKQUEUE; do
+ PADTRACKNUM=$(printf "%0.${TRACKNUMPADDING}d" $(expr ${TRACK} + 0 ))
+ PADTRACKQUEUE="$PADTRACKQUEUE $PADTRACKNUM"
done
TRACKQUEUE="$PADTRACKQUEUE"
echo Grabbing tracks: "$TRACKQUEUE"
exit 1
fi
echo .
+ # Check to see the version of abcde that was used. If it's not
+ # the same version as we are, bail.
+ RESUME_VERSION="$(checkstatus abcde-version)"
+ if [ "$RESUME_VERSION" != "$VERSION" ]; then
+ # Nope, complain and exit
+ echo >&2
+ echo "abcde: Working directory ${ABCDETEMPDIR} was created using version $RESUME_VERSION." >&2
+ echo "abcde: Current version is $VERSION." >&2
+ echo "abcde: Refusing to resume with a version mismatch." >&2
+ echo "Please remove it, and rerun abcde." >&2
+ exit 1
+ fi
+ echo .
# See if it's populated
if [ ! -f "${ABCDETEMPDIR}/cddbdiscid" ]; then
# Wipe and start fresh
else
log warning "reading the CUE sheet is still considered experimental"
log warning "and there was a problem with the CD reading. abcde will continue,"
- log warning "but consider reporting the problem to the abcde author"
+ log warning "but consider reporting the problem to the abcde authors"
fi
;;
esac
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
+ (
+ cd "${SOURCE_WORKDIR}"
+ rm -f audio_* audio.*
+ for file in cddbread.* cddbquery.* datasource.*; do
+ if [ -f "$file" ]; then
+ cp "$file" "${ABCDETEMPDIR}"
+ fi
+ done
+ )
echo "cdtext-readcomplete" >> "${ABCDETEMPDIR}/status"
echo "cdtext-entries=1" >> "${ABCDETEMPDIR}/status"
fi
# Check for no matches.
# The helper script will write disc matches out to
# cddbread.*. Count how many we have
- NUM_RESPONSES=$(echo "${SOURCE_WORKDIR}"/cddbread.* | wc -w)
- if [ "$NUM_RESPONSES" -gt 0 ] ; then
+ NUM_RESPONSES=$(ls -1 "${SOURCE_WORKDIR}"/cddbread.* 2>/dev/null | wc -l)
+ if [ $NUM_RESPONSES -gt 0 ] ; then
# One or more exact matches
i=1
- while [ $i -le "$NUM_RESPONSES" ]; do
+ while [ $i -le $NUM_RESPONSES ]; do
NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + 1))
i=$(($i + 1))
echo cddb-read-${NUM_CDDB_MATCHES}-complete >> "${ABCDETEMPDIR}/status"
# Need to re-count the entries here to be able
# to incrememnt $NUM_CDDB_MATCHES in the
# parent
- NUM_RESPONSES=$(echo "${SOURCE_WORKDIR}/datasource.*" | wc -w)
+ NUM_RESPONSES=$(ls -1 "${SOURCE_WORKDIR}"/datasource.* 2>/dev/null | wc -l)
NUM_CDDB_MATCHES=$(($NUM_CDDB_MATCHES + $NUM_RESPONSES))
vecho "done."
;;
echo "cddb-read-${NUM_CDDB_MATCHES}-complete" >> "${ABCDETEMPDIR}/status"
;;
esac
- for file in ${SOURCE_WORKDIR}/cddbread.* ${SOURCE_WORKDIR}/cddbquery.* ${SOURCE_WORKDIR}/datasource.*; do
- if [ -f "$file" ]; then
- cp "$file" "${ABCDETEMPDIR}"
- fi
- done
+ (
+ cd "${SOURCE_WORKDIR}"
+ for file in cddbread.* cddbquery.* 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
+ env LC_ALL=C $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
}
# 3. base64 the cover art image
# 4. Copy the original tags + the base64 image back to the original ogg file
#
- # Might need some fine tuning but it is a start for abcde 2.8.2 Andrew.
+ # Might need some fine tuning but it is a start for abcde 2.9. Andrew.
# FIXME: I am not sure if there is a maximum size for images converted in this
# way, but this could be perhaps handled by CONVERTOPTS called from do_getalbumart.
# ----------------
# the user said
# We need the first and last track for cdda2wav/icedax
FIRSTTRACK=$2
- LASTTRACK=$(expr $3 + 0)
+ LASTTRACK=$(expr $3 + 0) # Unpad
UTRACKNUM=$FIRSTTRACK
case "$CDROMREADERSYNTAX" in
flac) READTRACKNUMS="-" ;;
GREP_OPTIONS=""
GREP_COLOR=""
-# Length of the terminal *should* be in $LINES. If it's not, guess at
-# a reasonable number instead
-if [ -z "$LINES" ]; then
- LINES=24
-fi
-
if [ -z "$OUTPUTDIR" ]; then
OUTPUTDIR=$(pwd)
fi