Album art (Part 3 of3)
authorAndrew Strong <andrew.david.strong@gmail.com>
Sat, 2 May 2015 11:00:11 +0000 (21:00 +1000)
committerAndrew Strong <andrew.david.strong@gmail.com>
Sat, 2 May 2015 11:00:11 +0000 (21:00 +1000)
Documentation for getalbumart. The most instructive document
will be the abcde FAQ.

FAQ
abcde.1
changelog

diff --git a/FAQ b/FAQ
index e46ddc4..7c346bf 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -187,7 +187,145 @@ A. Yes. When asked which one you want to select, use "X,Y" where X and Y are
 Q. I don't like CDDB/FreeDB. How can I use Musicbrainz instead?
 A. Set CDDBMETHOD=musicbrainz and try it!
 
-3. FORMATS
+4. abcde and Album Art
+   ===================
+
+Q. Can abcde download album art?   
+A. As of abcde 2.6.1 it is possible to download a suitable cover
+   image from within abcde that can be used by applications such
+   as Audacious and vlc to illustrate playback with an album cover.
+   Many hardware playback devices such as iPODs will also use this
+   image during playback and show it on the device's display.
+
+Q. How does album art downloading work?
+A. The details are contained in abcde within a new function called
+   'getalbumart' which can be called either from the commandline or 
+   from within an ~/.abcde.conf file. The technique works in 3 possible
+   ways:
+
+    1. If CDDBMETHOD is musicbrainz the album art is downloaded from
+       coverartarchive by MBID (MusicBrainz Identifier)
+    2. If 1 fails, download is tried from amazon by ASIN (Amazon 
+       Standard Identification Number)
+    3. If if 1 and 2 fail or CDDBMETHOD is cddb the album art will 
+       be downloaded using glyrc by artist + album title
+
+   You  will need to install your distro's package of glyr, a music 
+   related metadata search engine, and it is strongly advised that
+   you use 'musicbrainz' for your cddb lookups. To access the more 
+   advanced features of getalbumart it is also strongly advised that
+   you install the ImageMagick package of your distro. getalbumart 
+   will work without ImageMagick but functionality will be reduced.
+
+Q. What settings and options should I select?
+A. If you want to operate abcde from the commandline only you will
+   get reasonable results with something like either of the following:
+
+     abcde -o mp3:-V2 -a default,getalbumart
+     abcde -o mp3:-V2 -G
+
+   But to experience all of the options of getalbumart you should also
+   consider setting the following in your ~/.abcde.conf file:
+
+    #----------------------------------------------------------------#
+    CDDBMETHOD=musicbrainz       # Use MusicBrainz for CDDB 
+    ACTIONS=default,getalbumart  # Select the album art action + default
+
+    # Give the path to the metadata search application glyrc. Add any
+    # glyrc options:
+    GLYRC=glyrc
+    GLYRCOPTS= 
+
+    # Give the path to ImageMagick's 'identify' which is used to give a 
+    # commandline summary of the album art and also assist in any conversions.
+    # Add any 'identify' options:
+    IDENTIFY=identify
+    IDENTIFYOPTS=
+
+    # Give the path to ImageMagick's 'display' which will show the album art. 
+    # The options below are the abcde default, feel free to add your own:  
+    DISPLAYCMD=display
+    DISPLAYCMDOPTS="-resize 512x512 -title abcde_album_art"
+
+    # Give the path to ImageMagick's 'convert' which is used to convert album 
+    # art to the format specified in ALBUMARTTYPE. Add any 'convert' options:   
+    CONVERT=convert
+    CONVERTOPTS=
+    # If you want to run CONVERTOPTS on all files (including those specified
+    # in ALBUMARTTYPE) set the following to "y":
+    ALBUMARTALWAYSCONVERT="n"
+
+    # By default the filename will be cover.jpg and the file format will
+    # be jpeg. 'convert' will automagically change other formats to jpeg:
+    ALBUMARTFILE="cover.jpg"
+    ALBUMARTTYPE="JPEG"
+    #----------------------------------------------------------------#
+
+   There are more hints concerning commandline options in the sample 
+   abcde.conf file included with your abcde package. Good news is that
+   the existing defaults will work well without any extra adjustments :).
+
+Q. Can I manually select album art?
+A. If you have set INTERACTIVE=y (this is the default) then you will have
+   the opportunity to manually select the album art of your choice either
+   from online by typing in a URL or by typing in the path to a local file.
+   
+Q. What if I want my album art embedded?
+A. The philosophy of getalbumart at the moment is to simply place the album
+   art in the same location as the encoded files. Perhaps this will change
+   one day. In the meantime you can use abcde's post_encode function in
+   your ~/.abcde.conf file to embed the album art. Here is an example for
+   mp3 embedding using eyeD3:
+
+   #----------------------------------------------------------------#
+   post_encode ()
+   {
+    ARTISTFILE="$(mungefilename "$TRACKARTIST")"
+    ALBUMFILE="$(mungefilename "$DALBUM")"
+
+   if [ "$OUTPUTTYPE" = "mp3" ] && [ "$TAGGER" = "$EYED3" ] ; then
+    vecho "Preparing to embed the album art..." >&2
+   else
+    vecho "Not embedding album art, you need mp3 output and eyeD3 tagging..." >&2
+    return 1
+   fi
+
+   if [ "$VARIOUSARTISTS" = "y" ] ; then
+     FINDPATH="$(eval echo "$VAOUTPUTFORMAT")"
+   else
+     FINDPATH="$(eval echo "$OUTPUTFORMAT")"
+   fi
+
+   TRIMPATH="$(dirname "$OUTPUTDIR/$FINDPATH")"
+   cd "$TRIMPATH"
+
+    if [ -e "cover.jpg" ] ; then
+      for i in *.mp3
+      do
+      eyeD3 --add-image cover.jpg:FRONT_COVER "$i"
+      done
+      mkdir backup && mv cover.jpg backup
+      vecho "Your files have had the album art embedded..." >&2
+    else
+     vecho "No album art found so no image embedded..." >&2
+    fi
+   }
+  #----------------------------------------------------------------#
+
+  Variations of the 'for' loop in this example should work for other encoding 
+  types. For example with flac:
+
+   #--------------------
+   for i in *.flac
+   do 
+    metaflac --import-picture-from=cover.jpg "$i"
+   done
+   #--------------------
+
+  With other appropriate adjustments to the $OUTPUTTYPE and $TAGGER checks of 
+  course...
+  
+4. FORMATS
    =======
 
 Q. What formats can I encode my music to?
@@ -249,8 +387,8 @@ A. Faac uses mp4v2 to create aac files in an m4a or mp4 container. Some
    support and then appropriately  places the audio either in .m4a or .aac. 
    Note that tagging is not possible with mpeg-2/ADTS streams in .aac.
 
-4. MISC PROBLEMS
-   ==== ========
+5. MISC PROBLEMS
+   =============
 
 Q. What happened with normalize?
 A. Normalize has changed its name under Debian, which is the GNU/Linux
@@ -284,3 +422,4 @@ A. The default action set includes clean, which cleans the temp directory,
 
 --
 Jesus Climent <jesus.climent@hispalinux.es>
+Andrew Strong <andrew.david.strong@gmail.com>
diff --git a/abcde.1 b/abcde.1
index 5b067d6..fa270c2 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -21,6 +21,10 @@ use a locally stored CDDB entry, or read CD-TEXT from your CD as a
 fallback for track information
 .TP
 .B *
+Download the album art appropriate for your music tracks with many
+user configurable options for download and post download alterations
+.TP
+.B *
 Grab an audio track (or all the audio CD tracks) from your CD
 .TP
 .B *
@@ -62,11 +66,11 @@ flac \-a default,cue" for obtaining such a file.
 .TP
 .B \-a [actions]
 Comma-delimited list of actions to perform. Can be one or more of: cddb, cue,
-read, normalize, encode, tag, move, replaygain, playlist, clean. Normalize and
-encode imply read. Tag implies cddb, read, encode. Move implies cddb, read,
-encode, tag. Replaygain implies cddb, read, encode, tag and move.  Playlist
-implies cddb. The default is to do all actions except cue, normalize,
-replaygain and playlist.
+read, getalbumart, normalize, encode, tag, move, replaygain, playlist, clean.
+Normalize and encode imply read. Tag implies cddb, read, encode. Move implies
+cddb, read, encode, tag. Replaygain implies cddb, read, encode, tag and move.
+Playlist implies cddb. The default is to do all actions except cue, normalize,
+replaygain, getalbumart and playlist.
 .TP
 .B \-b
 Enable batch mode normalization. See the BATCHNORM configuration variable.
@@ -107,6 +111,12 @@ Enable lame's \-\-nogap option.  See the NOGAP variable. WARNING: lame's
 \-\-nogap disables the Xing mp3 tag.  This tag is required for mp3 players to
 correctly display track lengths when playing variable-bit-rate mp3 files.
 .TP
+.B \-G
+Download album art using the getalbumart function. This is best done with
+CDDBMETHOD set to musicbrainz and requires the installation of glyrc.
+ImageMagick is an optional but highly recommended package. Further details
+of getalbumart can be found in the abcde FAQ document packaged with abcde.
+.TP
 .B \-h
 Get help information.
 .TP
@@ -371,7 +381,8 @@ respective utilities: LAME, TOOLAME, GOGO, BLADEENC, L3ENC, XINGMP3ENC, MP3ENC,
 VORBIZE, OGGENC, FLAC, SPEEXENC, MPCENC, AACENC, WVENC, APENC, OPUSENC, ID3, EYED3,
 METAFLAC, CDPARANOIA, CD_PARANOIA, CDDA2WAV, PIRD, CDDAFS, CDDISCID, CDDBTOOL, 
 EJECT, MD5SUM, DISTMP3, VORBISCOMMENT, NORMALIZE, CDSPEED, MP3GAIN, VORBISGAIN, 
-MPCGAIN, MKCUE, MKTOC, CUE2DISCID (see option "\-X"), DIFF and HTTPGET.
+MPCGAIN, MKCUE, MKTOC, CUE2DISCID (see option "\-X"), DIFF, HTTPGET, GLYRC,
+IDENTIFY, DISPLAYCMD and CONVERT.
 .TP
 .B COMMAND-LINE OPTIONS
 If you wish to specify command-line options to any of the programs \fBabcde\fR uses,
@@ -380,7 +391,8 @@ BLADEENCOPTS, L3ENCOPTS, XINGMP3ENCOPTS, MP3ENCOPTS, VORBIZEOPTS, WVENCOPTS, APE
 OGGENCOPTS, FLACOPTS, SPEEXENCOPTS, MPCENCOPTS, FAACENCOPTS, NEROAACENCOPTS, FDKAACENCOPTS, 
 OPUSENCOPTS, ID3OPTS, EYED3OPTS, MP3GAINOPTS, CDPARANOIAOPTS, CDDA2WAVOPTS, PIRDOPTS, 
 CDDAFSOPTS, CDDBTOOLOPTS, EJECTOPTS, DISTMP3OPTS, NORMALIZEOPTS, CDSPEEDOPTS, MKCUEOPTS, 
-VORBISCOMMMENTOPTS, METAFLACOPTS, DIFFOPTS, FLACGAINOPTS, VORBISGAINOPTS and HTTPGETOPTS.
+VORBISCOMMMENTOPTS, METAFLACOPTS, DIFFOPTS, FLACGAINOPTS, VORBISGAINOPTS, HTTPGETOPTS,
+GLYRCOPTS, IDENTIFYOPTS, CONVERTOPTS and DISPLAYCMDOPTS.
 .TP
 .B CDSPEEDVALUE
 Set the value of the CDROM speed. The default is to read the disc as fast as
@@ -586,6 +598,10 @@ information about the CD.
 For Monkey's Audio (ape) tagging Robert Muth's 'apetag' is required.
 .TP
 .B *
+To retrieve album art a glyrc package is required and optionally the
+ImageMagick package should be installed.
+.TP
+.B *
 (optional) distmp3, a client/server for distributed mp3 encoding.
 .TP
 .B *
@@ -612,6 +628,9 @@ For Monkey's Audio (ape) tagging Robert Muth's 'apetag' is required.
 .BR mpcenc (1),
 .BR faac (1),
 .BR fdkaac (1),
+.BR identify (1),
+.BR display (1),
+.BR convert (1),
 .BR wavpack (1),
 .BR wvgain (1),
 .BR id3 (1),
index b39f984..80edde7 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,5 +1,13 @@
 abcde 2.6.1
 
+  * Support added for the downloading of album art. A huge
+    thank you to Johannes Gernemann who came forward with
+    the technique used and also the original patch. An equally
+    huge thanks to Richard who extended and greatly enhanced
+    the original patch. Detailed documentation added to the
+    abcde FAQ document although the sane defaults in place
+    will guarantee a good experience even for those who do
+    not read documentation! This closes Issue 33.
   * Support added for ripping with the GNU Compact Disc 
     Input and Control library (libcdio) as requested by
     both gentoo and NixOS. The utility used is cd-paranoia