PerlでID3タグ編集

大量のMP3ファイル(1万ファイル程度)があって、一括でタグを付けたい。が、WindowsではGUIのツールしかないので、すごくめんどくさい。
CUIで処理するには色々方法がありそうですが・・・MP3::Tagというpure perlで実装されたID3タグ編集モジュールがあるらしい。pure perlって。

念のため既存のタグ情報は全部消して、アルバム名とアーティスト名を振り直す。podにはID3v1/v2へのlow level acccessはオススメしない(discouraged)と書いてあるけど、まーいいでしょ。high level APIに同等の機能はなさそうだし・・・。

use strict;
use warnings;
use MP3::Tag;
use Smart::Comments;

while(my $filename = shift @ARGV){  ### Editting [===|             ] % done
  my $mp3 = MP3::Tag->new($filename) || die;
  $mp3->{ID3v1}->remove_tag() if exists $mp3->{ID3v1};
  $mp3->{ID3v2}->remove_tag() if exists $mp3->{ID3v2};
  $mp3->update_tags({
    artist => 'RococoWorks',
    album  => 'airyFairy',
  });
}
$ find stream_mp3 -type f -name '*.mp3' -print0 | xargs -0 perl tag.pl

余談ですが、個人で買ったものを個人使用の範囲で使うのはfair useだと思ってます。声高に主張する気はないけど。要は多めに見てね、ってことで・・・。

なんでこんなめんどくさいことをしてるかというと!ipodに入れて聞くですよ!憂鬱な通勤時間もこれではぴはぴはっぴーですよ!