Code zum Auslesen von MP3-Files

Html

Erfahrenes Mitglied
Also mein Problem ist folgendes: Habe mir ein kleines Scrip geschrieben mit dem ich den ID3-Tag aller mp3 in einem Verzeichnis ausliest. Nun ist folgendes das Script findet alle Dateien doch später bei der Ausgabe der ID3-Tag Informationen werden nur die Informationen des letzten Titels ausgegeben.

Woran liegt das?


PHP:
<?php



////// verzeichnis auslesen

   function read_recursiv($path)  //Beginn Funktion in Klammern wird die Variable für den übergeben Wert festgelegt.
   {  
      $result = array(); //Resultat in ein Array schreiben

      $handle = opendir($path);  //Ordner "Lieder" öffnen

      if ($handle)  //Prüfen ob Variable $handle nicht leer ist
      {  
         while (false !== ($file = readdir($handle)))  //While schleife für jedes einzelne Element im Ordner
         {  
             if ($file != "." && $file != ".." )  //Wenn Dateiname ungleich "." oder ".." ist
             {  
                $name = $path . "/" . $file; //Name erstellen aus pfad und dateiname
                if (is_dir($name)) //Wenn der Name ein Ordner ist dann die Funktion nochmals aufrufen
                {  
                   $ar = read_recursiv($name); //Resultat wird in Array "$ar" geschrieben
                   foreach ($ar as $value) //Schleiffe um das Array auszulesen
                   {   
						
					 $result[] = $value; //Aktuelle Schleife in $result speichern
                   
				   } 
                }  
               
			   else  //Wenn kein Ordner dann
                
				{  
                   $ext  = strtolower(substr($name, strrpos($name,'.')+1)); //Dateiendung filtern
					
					if($ext=="mp3"){ //nur Endung: mp3 zulassen
				
				  $result[] = $name; //Name in $result speichern
                
				}
				}  
             }  
         }  
      }  
      closedir($handle); //Ordner schliessen
      return $result;  //$result als Rückgabewert der Funktion
   }  

$data = read_recursiv("E:\Eigene_Dateien\mp3");  

echo "<b>" . count($data) . "Dateien gefunden</b><br>\n"; 



// Ausgelesen Dateien an Funktion übergeben

foreach($data as $value)
{
echo $value."<br>";
$files = id3($value);
}

print_r($files);



// ID3Tag auslesen
$genre = array(0 => "Blues", 1 => "Classic Rock", 2 => "Country", 3 => "Dance", 4 => "Disco", 5 => "Funk",
   6 => "Grunge", 7 => "Hip-Hop", 8 => "Jazz", 9 => "Metal", 10 => "New Age",
   11 => "Oldies", 12 => "Other", 13 => "Pop", 14 => "R&B", 15 => "Rap",
   16 => "Reggae", 17 => "Rock", 18 => "Techno", 19 => "Industrial", 20 => "Alternative",
   21 => "Ska", 22 => "Death Metal", 23 => "Pranks", 24 => "Soundtrack", 25 => "Euro-Techno",
   26 => "Ambient", 27 => "Trip-Hop", 28 => "Vocal", 29 => "Jazz+Funk", 30 => "Fusion",
   31 => "Trance", 32 => "Classical", 33 => "Instrumental", 34 => "Acid", 35 => "House",
   36 => "Game", 37 => "Sound Clip", 38 => "Gospel", 39 => "Noise", 40 => "Alternative Rock",
   41 => "Bass", 42 => "Soul", 43 => "Punk", 44 => "Space", 45 => "Meditative",
   46 => "Instrumental Pop", 47 => "Instrumental Rock", 48 => "Ethnic", 49 => "Gothic", 50 => "Darkwave",
   51 => "Techno-Industrial", 52 => "Electronic", 53 => "Pop-Folk", 54 => "Eurodance", 55 => "Dream",
   56 => "Southern Rock", 57 => "Comedy", 58 => "Cult", 59 => "Gangsta", 60 => "Top 40",
   61 => "Christian Rap", 62 => "Pop/Funk", 63 => "Jungle", 64 => "Native American", 65 => "Cabaret",
   66 => "New wave", 67 => "Psychadelic", 68 => "Rave", 69 => "Showtunes", 70 => "Trailer",
   71 => "Lo-Fi", 72 => "Tribal", 73 => "Acid Punk", 74 => "Acid Jazz", 75 => "Polka",
   80 => "Folk", 81 => "Folk-Rock", 82 => "National Folk", 83 => "Swing", 84 => "Fast Fusion", 85 => "Bebob",
   86 => "Latin", 87 => "Revival", 88 => "Celtic", 89 => "Bluegrass", 90 => "Avantgarde",
   91 => "Gothic Rock", 92 => "Progressive Rock", 93 => "Psychedelic Rock", 94 => "Symphonic Rock", 95 => "Slow Rock",
   96 => "Big Band", 97 => "Chorus", 98 => "Easy Listening", 99 => "Acoustic", 100 => "Humour",
   101 => "Speech", 102 => "Chanson", 103 => "Opera", 104 => "Chamber Music", 105 => "Sonata",
   106 => "Symphony", 107 => "Booty Bass", 108 => "Primus", 109 => "Porn Groove", 110 => "Satire",
   111 => "Slow Jam", 112 => "Club", 113 => "Tango", 114 => "Samba", 115 => "Folklore",
   116 => "Ballad", 117 => "Power Ballad", 118 => "Rhythmic Soul", 119 => "Free Style", 120 => "Duet",
   121 => "Punk Rock", 123 => "A capella", 124 => "Euro-House", 125 => "Dance Hall");



//ID3-Tag auslesen

function id3($filename)
{
  global $genre;
  if (!is_file($filename) or filesize($filename) < 128)
  {
	return false;
    break;
  }
  
 
  $fp = fopen($filename, "r");
  fseek($fp, filesize($filename) - 128);
  $id3 = fread($fp, 128);
  $arr = array();
  if (strtoupper(substr($id3, 0, 3)) == "TAG")
  {
    $arr["song"] = trim(substr($id3, 3, 30));
    $arr["artist"] = trim(substr($id3, 33, 30));
    $arr["album"] = trim(substr($id3, 63, 30));
    $arr["year"] = trim(substr($id3, 93, 4));
    $arr["comment"] = trim(substr($id3, 97, 30));
    $arr["genre"] = $genre[ord($id3[127])];
    
	return $arr;
  
 }
  else
    return false;
  	fclose($fp);
}

?>


Vielen Dank schon mal, Olli
 
PHP:
foreach($data as $value)
{
echo $value."<br>";
$files = id3($value);
}

Das gesamte Ergebnis wird einer Variable zu geordnet, also kann es nur einen Wert haben.

PHP:
foreach($data as $value)
{
echo $value."<br>";
$files[] = id3($value);
}

So wird es einem Array zugeordnet, es können also alle Daten gespeichert werden.
 
Gut super so gehts... Nun habe ich noch ein Problem bezüglich der Ausgabe: Möchte gerne das immer der Pfad ($value) und darunter der Song ($liste["song"]) etc. und dann das nächste Lied mit den Informationen da steht.

So ungefähr:

Pfad Lied1
Song Lied1

Pfad Lied2
Song Lied2

Mein Code sieht nun so aus:

PHP:
foreach($data as $value) 
{ 
echo $value."<br>";        //Pfad ausgeben
$files[] = id3($value); 
}  

foreach($files as $liste) 
{ 
echo $liste["song"]."<br>";    //Songname ausgeben
}
 
Hier noch etwas: getid3() ist eine Sammlung von MP3-Tools, geschrieben in PHP - benötigt auch kein PEAR. es kann eine MP3 validieren, erkennt aber auch sämtliche andere Formate (ogg, wav etc)

Link:
 

Neue Beiträge

Zurück