Hallo Leute!
Ich hatte gestern mal angefangen mit dem Mediaplayer im IPS rumzuspielen und sah mich dann vor dem Problem mit dem Einbinden von Musikdateien in die Playlist der Instanz. Da ich nur grobe Kenntnisse von PHP besitze und mir der Code anderer Leute sowieso immer sehr verschleiert wirkt, bin ich aus der Funktion die in der Doku (guckstu hier) zu finden ist nicht schlau geworden und sie machte auch nicht das, was ich wollte.
Also hab ich mich mal hingesetzt und mir eine eigene Funktion gebastelt, die mir aus einem Ordner und allen seinen Unterordnern die mp3- und wma-Dateien ausliest und in meine Playlist packt. Das Ganze sieht dann wie folgt aus:
<?
// Hier gibt man den Ordner an, in dem die Musik-Dateien liegen:
$path = "C:\\Beispiel";
$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 = 12345 /*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);
}
?>
Da ich auch gerne wissen will, wie groß meine Playlist ist, habe ich bei mir auch noch eine eigene Variable angelegt, in der ich die Anzahl der Lieder in der Liste speichere. Damit diese immer aktuell ist, hab ich noch folgenden Codeschnipsel an das Script angehängt:
$pl = WAC_GetPlaylistLength(12345 /*Mediaplayer ID*/);
SetValueInteger(54321 /*Playlist-Länge Datei*/, $pl);
?>
Ein Teil des Codes habe ich dem Script aus der Doku entnommen, hier nochmal einen herzlichen Dank an den Ersteller von diesem (weiß leider grad nicht wer das war).
Eventuell kann ja der ein oder andere mein Script gebrauchen, wenn nicht ist auch nicht schlimm, ich benutz es auf jeden Fall.
Mit freundlichen Grüßen,
Markus
PS: Sollte der Code arg grausig sein, so bitte ich um Entschuldigung, bin wie gesagt nur mit groben PHP-Kenntnissen gesegnet.