MP3::Tag

MP3のID3を操作するMP3::Tagというモジュールを使う。

http://search.cpan.org/~ilyaz/MP3-Tag-1.12/lib/MP3/Tag.pm

ID3そのものについてはWikipediaのID3タグあたりを参照。

使い方

最小限の実用的な使い方の例

use MP3::Tag;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();

# 画像データを取ってくる
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 での書き込みについては write_v24 の項目より。

write_v24

If FALSE (default), writing of ID3v2.4 is prohibited (it is not fully supported; allow on your own risk).

操作できるタグ一覧

http://search.cpan.org/~ilyaz/MP3-Tag-1.12/lib/MP3/Tag/ID3v2-Data.pod#List_of_Complex_Frames

フレーム名が省略されているのでいちいちマニュアルを参照して書く必要がある。