MP3にID3v2を書き込む
MP3::Tag
MP3のID3を操作するMP3::Tagというモジュールを使います。PODをざっと見ても使い方がいまいちよくわからないので、メモしておきます。
MP3::Tag - Module for reading tags of MP3 audio files - metacpan.org
ID3そのものについてはWikipediaのID3タグあたりを参照。
使い方
最小限の実用的な使い方の例
use MP3::Tag; use LWP::UserAgent; my $ua = LWP::UserAgent->new(); # MP3の画像データを取ってくる my $pic = $ua->get("http://tn-skr3.smilevideo.jp/smile?i=8708446")->{_content}; my $mp3 = MP3::Tag->new('tmp.mp3'); # まずはタグを取得する $mp3->get_tags(); MP3::Tag->config("write_v24" => 1); # ID3v2.4 での書き込みを有効にする my $id3v2; # ID3v2が存在するかを確認する if (exists $mp3->{ID3v2}) { $id3v2 = $mp3->{ID3v2}; # 存在すれば$id3v2に代入 } else { $id3v2 = $mp3->new_tag("ID3v2"); # 存在しなければID3v2をつくってやる } # TIT2 : Title/songname/content description # TALB : Album/Movie/Show title # APIC : Attached picture Keys: MIME type, Picture Type, Description, _Data # add_frameでタグを追加 $id3v2->add_frame("TIT2", "曲名"); $id3v2->add_frame("TALB", "アルバム名"); $id3v2->add_frame("APIC", "image/jpeg", "Cover (front)", "Description", $pic); # タグを書き込む $id3v2->write_tag;
ID3v2.4 での書き込みについて、PODにはwrite_v24の解説部にIf FALSE (default), writing of ID3v2.4 is prohibited (it is not fully supported; allow on your own risk).とあります。
操作できるタグ一覧
MP3::Tag::ID3v2-Data - get_frame() data format and supported frames - metacpan.org
フレーム名が省略されているので、いちいちマニュアルを参照して書く必要がある。