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

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-11-12 (水) 01:34:07 (5645d)