waterlgndx

PHP mp3 tag reader

Aug 16th, 2020
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.25 KB | None | 0 0
  1. <?php
  2. // From here: http://www.autistici.org/ermes/index.php?pag=1&post=15
  3. // and fixed here: http://www.barattalo.it
  4. // http://www.barattalo.it/coding/reading-mp3-informations-with-php-id3-tags/
  5. // ------------------------------
  6. // example:
  7. // print_r( tagReader ("myfile.mp3") );
  8. // ------------------------------
  9. function tagReader($file){
  10.     $id3v23 = array("TIT2","TALB","TPE1","TRCK","TDRC","TLEN","USLT");
  11.     $id3v22 = array("TT2","TAL","TP1","TRK","TYE","TLE","ULT");
  12.     $fsize = filesize($file);
  13.     $fd = fopen($file,"r");
  14.     $tag = fread($fd,$fsize);
  15.     $tmp = "";
  16.     fclose($fd);
  17.     if (substr($tag,0,3) == "ID3") {
  18.         $result['FileName'] = $file;
  19.         $result['TAG'] = substr($tag,0,3);
  20.         $result['Version'] = hexdec(bin2hex(substr($tag,3,1))).".".hexdec(bin2hex(substr($tag,4,1)));
  21.         $result['Invalid'] = false;
  22.     } else {
  23.         $result['Invalid'] = true;
  24.         return $result;
  25.     }
  26.  
  27.     if($result['Version'] == "4.0" || $result['Version'] == "3.0"){
  28.         for ($i=0;$i<count($id3v23);$i++){
  29.             if (strpos($tag,$id3v23[$i].chr(0))!= FALSE){
  30.                 $pos = strpos($tag, $id3v23[$i].chr(0));
  31.                 $len = hexdec(bin2hex(substr($tag,($pos+5),3))) +1 ;
  32.                 $data = substr($tag, $pos, 9+$len);
  33.                 for ($a=0;$a<strlen($data);$a++){
  34.                     $char = substr($data,$a,1);
  35.                     if($char >= " " && $char <= "~") $tmp.=$char;
  36.                 }                
  37.                 if(substr($tmp,0,4) == "TIT2") $result['Title'] = substr($tmp,4);
  38.                 if(substr($tmp,0,4) == "TALB") $result['Album'] = substr($tmp,4);
  39.                 if(substr($tmp,0,4) == "TPE1") $result['Author'] = substr($tmp,4);
  40.                 if(substr($tmp,0,4) == "TRCK") $result['Track'] = substr($tmp,4);
  41.                 if(substr($tmp,0,4) == "TDRC") $result['Year'] = substr($tmp,4);
  42.                 if(substr($tmp,0,4) == "TLEN") $result['Lenght'] = substr($tmp,4);
  43.                 if(substr($tmp,0,4) == "USLT") $result['Lyric'] = substr($tmp,7);
  44.                 $tmp = "";
  45.             }
  46.         }
  47.     }
  48.     if($result['Version'] == "2.0"){
  49.         for ($i=0;$i<count($id3v22);$i++){
  50.             if (strpos($tag,$id3v22[$i].chr(0))!= FALSE){
  51.                 $pos = strpos($tag, $id3v22[$i].chr(0));
  52.                 $len = hexdec(bin2hex(substr($tag,($pos+3),3)));
  53.                 $data = substr($tag, $pos, 6+$len);
  54.                 for ($a=0;$a<strlen($data);$a++){
  55.                     $char = substr($data,$a,1);
  56.                     if($char >= " " && $char <= "~") $tmp.=$char;
  57.                 }
  58.                 if(substr($tmp,0,3) == "TT2") $result['Title'] = substr($tmp,3);
  59.                 if(substr($tmp,0,3) == "TAL") $result['Album'] = substr($tmp,3);
  60.                 if(substr($tmp,0,3) == "TP1") $result['Author'] = substr($tmp,3);
  61.                 if(substr($tmp,0,3) == "TRK") $result['Track'] = substr($tmp,3);
  62.                 if(substr($tmp,0,3) == "TYE") $result['Year'] = substr($tmp,3);
  63.                 if(substr($tmp,0,3) == "TLE") $result['Lenght'] = substr($tmp,3);
  64.                 if(substr($tmp,0,3) == "ULT") $result['Lyric'] = substr($tmp,6);
  65.                 $tmp = "";
  66.             }
  67.         }
  68.     }
  69.     return $result;
  70. }
  71. ?>
  72.  
Add Comment
Please, Sign In to add comment