All pastes #101258 Raw Edit

Untitled

public text v1 · immutable
#101258 ·published 2006-07-26 19:29 UTC
rendered paste body
# uses http://home.wanadoo.nl/squell/id3.html

use warnings;
use strict;
use MP3::Info;
use File::Find;

my $dir = '.';
my $info;
my %tags;
my $file;

finddepth(\&tagit, $dir);

sub tagit {
  if (-f) {
    if ($File::Find::name =~ /\.mp3$/) {
      $info = get_mp3tag($_);
      if (!defined $_{"TITLE"}) {
      	buildhash($File::Find::name);
      	writehash($file);
      }
    }
  }
}

sub buildhash {
	my $path = shift;
	$path = substr($path, 2, length($path) - 2); # strip leading ./
	$file = substr($path, rindex($path, '/') + 1, length $path);
	my $folder = substr($path, index($path, '/') + 1, rindex($path, '/') - 6);
	print $folder."\n";
	($tags{"GENRE"}) = substr($path, 0, index($path, '/'));
	($tags{"ARTIST"}) = $folder =~ /^(.*?) - .*?/;
	($tags{"ALBUM"}) = $folder =~ /^.*? - (.*?)( \(|$)/;
	($tags{"TRACK"}) = $file =~ /^(\d\d).*/;
	($tags{"YEAR"}) = $folder =~ /\((\d\d\d\d)\)/;			
	($tags{"TITLE"}) = $file =~ /\d\d(.*)\.mp3/;
	($tags{"TITLE"}) = $tags{"TITLE"} =~ /([b..Z].*)/;
}

sub writehash {
	my $command;
	$command .= "C:/id3.exe -2 -1 -v -M";
	if (defined $tags{"GENRE"}) { $command .= " -g \"".$tags{"GENRE"}."\""; }
	if (defined $tags{"ARTIST"}) { $command .= " -a \"".$tags{"ARTIST"}."\""; }
	if (defined $tags{"ALBUM"})  { $command .= " -l \"".$tags{"ALBUM"}."\"";  }
	if (defined $tags{"TRACK"})  { $command .= " -n \"".$tags{"TRACK"}."\"";  }
	if (defined $tags{"TITLE"})  { 
		$tags{"TITLE"} = join(" ", map ucfirst(lc($_)), split(/\s+/, $tags{"TITLE"}));
		$command .= " -t \"".$tags{"TITLE"}."\"";  
	}
	if (defined $tags{"YEAR"})   { $command .= " -y \"".$tags{"YEAR"}."\"";   }
	$command .= " \"$file\"";
	#print "\n$command\n";
	system($command);
	#system("C:/id3.exe -d -M -v -2 \"$file\"");
}