#!/usr/bin/perl -w # 2000.09.28 altblue ## use strict; use Data::Dumper; my ($min, $max) = @ARGV; die 'invalid parameters! []' unless defined $min; $max = $min unless defined $max; die 'invalid parameters! []' unless $min =~ /^\d+$/ && $max =~ /^\d+$/ && $max >= $min; for ($min .. $max) { my ($artist, $title, $year) = get_info($_); next unless defined $artist && $artist && defined $title && $title; $_ = normalize($_) for ($artist, $title); $year .= '.' if defined $year && $year; print "$_\t->\t$artist - $year$title",$/; rename $_, "$artist - $year$title" or warn "\terror: $!"; } sub get_info { local $_ = shift; return () unless -d && -x && -r; my $info = "$_/info.txt"; return () unless -f $info; if(open(INFO, $info)) { my $line = ; close INFO; if ($line =~ /^(.+?) - (.+?)\s+\((\d{4})\)\s*$/) { return ($1, $2, $3); } elsif ($line =~ /^(.+?) - (.+?)/) { return ($1, $2); } else { return (); } } else { warn "cannot open info file: $!\n"; return (); } } sub normalize { local $_ = shift; tr/[ãâîþºÃÂÎÞª]/[aaitsAAITS]/; s/[\\\/:*?"<>|]//g; tr/A-Z/a-z/; $_; }