CDの情報が世の中から拾ってこれるのは便利だが、大体にして全角と半角混在。~
精神衛生上、極めて悪い全角英数スペースを半角に。~
ファイル名と特定のタグだけやってる。
やっつけコードなので細かいツッコミ厳禁。
#!/usr/bin/perl
use strict;
use MP3::Tag;
use Jcode;
foreach my $path (@ARGV) {
&convert($path);
}
sub convert
{
my $path = shift;
my $mp3 = MP3::Tag->new($path);
if (not $mp3) {
warn "failure $path\n";
return;
}
$mp3->get_tags();
if (exists $mp3->{ID3v1}) {
my $id1 = $mp3->{ID3v1};
$id1->title(&z2h($id1->title));
$id1->artist(&z2h($id1->artist));
$id1->album(&z2h($id1->album));
$id1->write_tag();
}
if (exists $mp3->{ID3v2}) {
my $id2 = $mp3->{ID3v2};
$id2->change_frame('TIT2', &z2h($id2->get_frame('TIT2')));
$id2->change_frame('TALB', &z2h($id2->get_frame('TALB')));
$id2->change_frame('TPE1', &z2h($id2->get_frame('TPE1')));
$id2->change_frame('TPE2', &z2h($id2->get_frame('TPE2')));
$id2->write_tag();
}
$mp3->close();
my $newpath = &z2h_filename($path);
rename $path, $newpath if $path ne $newpath;
}
sub z2h
{
my $str = shift;
return Jcode->new($str, 'sjis')->tr('A-Za-z0-9 ', 'A-Za-z0-9 ')->sjis;
}
sub z2h_filename
{
my $str = shift;
return Jcode->new($str)->tr('A-Za-z0-9 ', 'A-Za-z0-9 ');
}