[mythtv-users] MythMusic AlbumArt

Brad DerManouelian myth at dermanouelian.com
Fri Jan 6 23:24:44 UTC 2006


I was trying to find a script to automatically add album art to my  
MythMusic directories. I came across the one in this thread: http:// 
www.gossamer-threads.com/lists/mythtv/users/140895 but it only adds  
art as you RIP a CD. I have way too many albums already ripped so  
this wasn't going to work for me.

So I wrote a little script to use in concert with Paul's amazon.pl  
script. Now I can use the AlbumArt visualization and see most of my  
collection. I'm posting it here in case anyone's in the same boat as  
me. The script assumes you have your music organized by musicroot/ 
artist/album. It will also detect when album art can't be found and  
skips it if it runs across the album name again during the same run  
(in the event that you have albums with many artists on a single  
album and you're strictly organizing by artist/album). It's also  
smart enough to skip an album if the art is already there (from a  
previous run). Feel free to mod as needed.

Make sure amazon.pl is in your path, then pass your music directory  
root as an argument to this script (e.g. ./albumart.pl /mythtv/music/):


#!/usr/bin/perl -w
use strict;

my $musicdir = shift || die( "Specify the music directory root\n" );
$musicdir =~ s/\/$//g;
my @albumsnoart;

opendir MYDIR, $musicdir || die( "Couldn't open $musicdir\n" );
my @artists = grep !/^\.\.?$/, readdir MYDIR;
closedir MYDIR;

foreach my $artist ( @artists )
{
     my $artistdir = $musicdir."/".$artist;
     if ( -d $artistdir )
     {
         next if $artist eq "Compilations";
         opendir MYDIR, $artistdir || die( "Couldn't open $artistdir 
\n" );
         my @albums = grep !/^\.\.?$/, readdir MYDIR;
         closedir MYDIR;
         foreach my $album ( @albums )
         {
             next if ( grep(/$album/, at albumsnoart) );
             my $albumdir = $artistdir."/".$album;
             if ( -d $albumdir )
             {
                 print "Grabbing art for $artist - $album...";
                 if (-f $albumdir."/folder_large.jpg" )
                 {
                     print "SKIPPING: I already have art for this  
album.\n";
                     next;
                 }
                 `amazon.pl "$musicdir/$artist/$album" "$artist"  
"$album"`;
                 if ( -f $albumdir."/folder_large.jpg" )
                 {
                     print "DONE\n";
                 }
                 else
                 {
                     print "NOT FOUND: Sorry, no album art found.\n";
                     push( @albumsnoart, $album );
                 }
             }
         }
     }
}



Also, I had to patch amazon.pl with this so the script won't bail  
when it can't find any art:
--- amazon.pl   2006-01-06 18:16:00.000000000 -0500
+++ /usr/local/bin/amazon.pl    2006-01-06 06:48:22.000000000 -0500
@@ -116,6 +116,8 @@
     $titleid++;

     my $image = get $ama_uri if (defined($ama_uri) && $ama_uri ne "");
+if ( $image )
+{
     if ($ama_uri ne "" && length($image) eq "807") {
        if (defined $opt_d) { printf("# this image is blank\n"); }
        $ama_uri = "";
@@ -138,7 +140,7 @@
     close INFO;
}
-
+}
#
# Main Program
#


-Brad



More information about the mythtv-users mailing list