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 ');
	}



トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS