hiratake55 の作業メモ

R, Javascript, Python, Linux and Hadoop

PHP の PEAR::MP3_Id で MP3 の ID3 タグを読み込む

PHP で MP3 ファイルの ID3 タグを読み込む方法。

似たようなライブラリには、ID3v2 タグを読み込む、PEAR::MP3Idv2 なんかもあるし、PECL の実装もある。

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");
 } 
?>