use Getopt::Std;
use File::Find;
use File::Path;
use File::Spec;
my $mkdir_cmd = 'mkdir';
my $perl_exe = 'C:\Perl64\bin\perl.exe';
my $******_name = 'setwavinfo.pl';
my $gen_file = 'gensetwavinfo.bat';
my ($src_wav_root,$dst_wav_root,$src_wav_dir,$dst_wav _dir,$src_wav,$dst_wav,$done_dir,$last_dir,$artist ,$composition,$file_name);
my (@src_path,@dst_path);
getopt("sd:");
$src_wav_root = File::Spec->canonpath($opt_s);
$dst_wav_root = File::Spec->canonpath($opt_d);
$done_dir = $src_wav_root;
open(OUT_FILE,"> $gen_file") || die "can't open $gen_file: $!\n";
chdir ("$src_wav_root") || die "can't cd to $src_wav_root: $!\n";
finddepth(\&go, '.');
close(OUT_FILE);
sub go {
$File::Find::prune = true;
if ( uc(substr $_,-3) eq 'WAV') {
$file_name = $_;
$composition = ts($file_name);
$composition =~ s/^\d+\s*|\s*\.(?i)wav$//g;
if ( $done_dir ne $File::Find::dir) {
$done_dir = $File::Find::dir;
@src_path = File::Spec->splitdir( $done_dir );
@dst_path = @src_path;
$last_dir = '';
for ($i=1;$i<=$#src_path;$i++) {
$_ = $src_path[$i];
s/(\s|^)+(.)/uc($2)/eg;
$last_dir = $last_dir.($i>1&&' ').$_;
}
$artist = ts($src_path[1]);
$dst_path[$#dst_path] = $last_dir;
$dst_path[0] = File::Spec->canonpath($dst_wav_root);
$src_path[0] = File::Spec->canonpath($src_wav_root);
$src_wav_dir = File::Spec->catdir(@src_path);
$dst_wav_dir = ts(File::Spec->catdir(@dst_path));
print OUT_FILE "$mkdir_cmd \"$dst_wav_dir\"\n";
}
$dst_wav = File::Spec->catpath( '', $dst_wav_dir, $file_name );
$src_wav = File::Spec->catpath( '', $src_wav_dir, ts($file_name) );
print OUT_FILE "$perl_exe $******_name -i \"$src_wav\" -o \"$dst_wav\" -a \"$artist\" -n \"$composition\"\n";
}
}
sub ts($) # author:
nrg@jabber.snc.ru
{
my %hs = ('а'=>'a','А'=>'A','б'=>'b','Б'=>'B','в'=>'v','В'= >'V','г'=>'g','Г'=>'G','д'=>'d','Д'=>'D',
'е'=>'e','Е'=>'E','ё'=>'jo','Ё'=>'Jo','ж'=>'zh','Ж '=>'Zh','з'=>'z','З'=>'Z','и'=>'i','И'=>'I',
'й'=>'j','Й'=>'J','к'=>'k','К'=>'K','л'=>'l','Л'=> 'L','м'=>'m','М'=>'M','н'=>'n','Н'=>'N',
'о'=>'o','О'=>'O','п'=>'p','П'=>'P','р'=>'r','Р'=> 'R','с'=>'s','С'=>'S','т'=>'t','Т'=>'T',
'у'=>'u','У'=>'U','ф'=>'f','Ф'=>'F','х'=>'kh','Х'= >'Kh','ц'=>'c','Ц'=>'C','ч'=>'ch','Ч'=>'Ch',
'ш'=>'sh','Ш'=>'Sh','щ'=>'shh','Щ'=>'Shh','ъЪ'=>'' ,'ы'=>'y','Ы'=>'Y','ьЬ'=>'',
'э'=>'eh','Э'=>'Eh','ю'=>'ju','Ю'=>'Ju','яЯ'=>'ja' ,'Я'=>'Ja');
my $z=shift;
pop @{([\map do{$z=~s/$_/$hs{$_}/g;},keys %hs])},$z;$z
}