Perl/ツール/MP3タグ全角半角変換Top / Perl / ツール / MP3タグ全角半角変換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 '); } |