All pastes #886431 Raw Edit

Something

public text v1 · immutable
#886431 ·published 2008-01-31 17:50 UTC
rendered paste body
#!/usr/bin/perl

use File::Find;

# top-level directory input as CLI argument
my $root = shift;

# Change this to the directory you want artwork copied to
my $artwork_path = $root . '/artwork';

mkdir $artwork_path, '0777' or die "Error: Cannot create directory. [ $! ]" unless (-d $artwork_path);

find(\&process, $root);

sub rename_cover {
	
	my $infile = shift;
	my $music_root = shift;
	
	# make a copy of filename
	my $file = $infile;

	# remove root from path
	$file =~ s/$music_root\/?//ig;

	# strip - & . from album or artist
	$file =~ s/[\-\.]//g;

	# split artist and album into two pieces
	$file =~ /^([^\/]+)\/(.+)\/.+$/;

	my $artist = $1;

	my $album = $2;

	# remove trailing in parentheses w/ contents from album
	$album =~ s/\(.*\)\s*$//g;
	
	# put backtogether with -
	$file = $artist . '-' . $album . '.jpg';	

	# lowercase
	$file = lc $file;

	# remove anything that isn't alpha-numeric, - or .
	$file =~ s/[^0-9a-z\-\.]//g;

	# copy the file w/ new name
	my $test = copy($infile, $artwork_path . '/' . $file);

	# return new filename or 0 if failed
	return (($test) ? $file : '0');
}


# search for all cover.jpg beneath root, and rename them
sub process {
	/cover\.jpg$/ig && rename_cover($File::Find::name, $root);
}