#!/usr/bin/perl -w use strict; use MP3::Tag; use File::Basename; my $albumdir = join ' ',@ARGV;; my @a = split('/',$albumdir); if($#a < 1 || $a[$#a] =~ /^\./ || $a[$#a-1] =~ /^\./){ print "Invalid Album Path: $albumdir\n"; exit; } if(! -d $albumdir){ print "\"$albumdir\" does not exist\"\n"; exit; } my $artist = $a[$#a-1]; my $album = $a[$#a]; my $year; print "Artist: $artist\tAlbum: $album\n"; if(open YEAR,"$albumdir/.year"){ $year = ; chomp $year; close YEAR; } else { $year = undef; } my @files = <"$albumdir/*.mp3">; foreach my $file (@files){ my $song = basename($file); $song =~ s/\.mp3$//; print "Processing $song...\n"; my $mp3 = MP3::Tag->new($file); $mp3->new_tag("ID3v2"); my $tag = $mp3->{ID3v2}; if($album eq 'Singles'){ $tag->add_frame("TPE1",$artist); $tag->add_frame("TIT2",$song); } else { unless($song =~ /^(\d\d) - (.*)$/){ print "Warning: $song not in correct format\n"; next; } my $title = $2; my $track = $1; $track =~ s/^0//; $track .= '/' . scalar(@files); $tag->add_frame("TPE1",$artist); $tag->add_frame("TIT2",$title); $tag->add_frame("TALB",$album); $tag->add_frame("TRCK",$track); $tag->add_frame("TYER",$year) if(defined $year); } $tag->write_tag; $mp3->close(); }