PHP の PEAR::MP3_Id で MP3 の ID3 タグを読み込む
PHP で MP3 ファイルの ID3 タグを読み込む方法。
似たようなライブラリには、ID3v2 タグを読み込む、PEAR::MP3Idv2 なんかもあるし、PECL の実装もある。
- PEAR::MP3Id (stable)
- PEAR::MP3Idv2 (alpha)
- PECL::Package::Id3 (alpha)
1. PEAR::MP3_Id をインストール
# pear install MP3_Id
2. こんな感じでスクリプトを書く
<? require_once('MP3/Id.php'); header("Content-type: text/plain"); $filename="./test.mp3"; $m=new MP3_Id(); $m->read($filename); print($m->getTag('name')."\t"); print($m->getTag('artists')."\t"); print($m->getTag('album')."\t"); print($m->getTag('year')."\t"); print($m->getTag('comment')."\t"); print($m->getTag('track')."\t"); print($m->getTag('genre')."\t"); print($m->getTag('genreno')."\n"); ?>
文字コードを Shift-JIS から UTF-8 に変換して出力するならこんな感じ。
<? require_once('MP3/Id.php'); header("Content-type: text/plain"); $filename="./test.mp3"; $m=new MP3_Id(); $m->read($filename); print(mb_convert_encoding($m->getTag('name'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('artists'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('album'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('year'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('comment'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('track'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('genre'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('genreno'),"utf-8","sjis")."\n"); ?>
フォルダ内のファイルを一括で読み込む場合はこんな感じ
<? require_once('MP3/Id.php'); header("Content-type: text/plain"); $dirname="./mp3/"; $files=scandir($dirname); $m=new MP3_Id(); foreach($files as $file){ $m->read($dirname.$file); print(mb_convert_encoding($m->getTag('name'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('artists'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('album'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('year'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('comment'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('track'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('genre'),"utf-8","sjis")."\t"); print(mb_convert_encoding($m->getTag('genreno'),"utf-8","sjis")."\n"); } ?>