Musikdateien aus Ordnerstruktur einlesen

Hallo,

ich bekomme leider diesen Fehler:

Fatal error: Call-time pass-by-reference has been removed in [Multimedia\Media Player"C:\MUSIK" mit Unterordner einlesen ] on line 26


 <?
// Hier gibt man den Ordner an, in dem die Musik-Dateien liegen:
$path = "C:\\MUSIK";

$playlist = array();

// Diese Funktion durchsucht den Ordner und überprüft, dann ob es sich um
// einen Unterordner oder eine Datei handelt.
// Ist es ein Unterordner, so ruft sich die Funktion selbst wieder auf und prüft
// innerhalb von diesem weiter, ist das gefunden Objekt eine Datei, so wird
// geprüft, ob diese ein zugelassenes Dateiformat hat und fügt diese, sollte das
// der Fall sein in das Playlist-Array ein.
function getDirectoryTree($path, $playlist)
{
    $content = scandir($path);
    $maindata = array_diff($content, Array(".",".."));

    // Hier gibt man die Dateitypen an, welche in die Playlist eingelesen werden sollen:
    $allowed = Array("mp3", "wma");

    foreach($maindata as $d)
    {
        $actpath = $path . "\\" . $d;
        if(is_dir($actpath))
        {
            getDirectoryTree($actpath, &$playlist);
        }
        else
        {
            $ext = pathinfo($actpath, PATHINFO_EXTENSION);
            if(in_array(strtolower($ext), $allowed))
            {
                $playlist[] = $actpath;
            }
        }
    }
}

getDirectoryTree($path, &$playlist);

$id = 24049 /*Mediaplayer ID*/;

// Leeren der vorher bestehenden Playlist:
WAC_ClearPlaylist($id);

// Durchlaufen des Playlist-Arrays und anhängen an die Mediaplayer-Instanz-Playlist
foreach($playlist as $data)
{
        WAC_AddFile($id, $data);
}
?>

Die Instanz meines MP ist 24049 und das Verzeichnis der Musik C:MUSIK

Wo ist der Fehler?

…vielleicht hier $path = „C:\MUSIK“;
Da ist wohl ein \ zu viel, oder?

Grüße
Andrge

Ich denke das ist ein weggefallener Syntax in der neuen PHP Version.
Es gibt ja im Forum noch ne Menge anderer Beispiele.


function getDirectoryTree($path, &$playlist) 
{ 
    $content = scandir($path); 
    $maindata = array_diff($content, Array(".","..")); 

    // Hier gibt man die Dateitypen an, welche in die Playlist eingelesen werden sollen: 
    $allowed = Array("mp3", "wma"); 

    foreach($maindata as $d) 
    { 
        $actpath = $path . "\\" . $d; 
        if(is_dir($actpath)) 
        { 
            getDirectoryTree($actpath, $playlist); 
        } 
        else 
        { 
            $ext = pathinfo($actpath, PATHINFO_EXTENSION); 
            if(in_array(strtolower($ext), $allowed)) 
            { 
                $playlist[] = $actpath; 
            } 
        } 
    } 
} 

getDirectoryTree($path, $playlist);

So sollte es gehen

paresy

super. vielen Dank. Damit funktioniert es jetzt. :slight_smile:

Kann man eigentlich die ausgelesenen Dateien auch in einer Linkliste ausgeben lassen sodass man dann direkt den Titel auswählen kann?

Gruß
Martin

Hi Markus,

Kannst du vielleicht mal paar Screenshots von deinem Mediaplayer WF reinstellen? Mich würde interessieren wie du das gelöst hast :o

DANKE, genau das was ich gesucht habe!!!

Wie funktioniert das mit dem Zugriff auf ein Netzwerklaufwerk?
Bekomm das nämlich gar nicht hin, hab folgendes zugefügt

$path = „//A1modem\a“;

funktioniert aber leider nicht??
Bekomm immer die Meldung:

Fatal error: Maximum execution time of 30 seconds exceeded in [Media Player\Media Player\Playlist aktualisieren] on line 25

Besteht auch die möglichkeit, das man die Ordner der Festplatte einlesen kann und danach im Web Front anzeigen zu lassen und danach auswählen kann welchen Ordner man Abspielen kann?