function crear() { set_time_limit(0); $ruta = "musica"; $GLOBALS['contador'] = 1; //Empesamos la estructura del archivo xml $xml = new DomDocument('1.0'); $playlist = $xml->createElement('albumList'); $playlist = $xml->appendChild($playlist); // comprobamos si lo que nos pasan es un direcotrio if (is_dir($ruta)) { // Abrimos el directorio y comprobamos que if ($aux = opendir($ruta)) { while (($archivo = readdir($aux)) !== false) { // Si quisieramos mostrar todo el contenido del directorio pondrÃÂamos lo siguiente: // echo '<br />' . $file . '<br />'; // Pero como lo que queremos es mostrar todos los archivos excepto "." y ".." if ($archivo != "." && $archivo != "..") { $ruta_completa = $ruta . '/' . $archivo; //echo "Esto: ".$ruta_completa."<br>"; if (is_dir($ruta_completa)) { // Abrimos la nueva carpeta, esta sera el nombre del album if ($aux2 = opendir($ruta_completa)) { //echo "Folder: ".$archivo."<br>"; //Aui se empiezan a crear los albums $libro = $xml->createElement('album'); //se empieza a iterar desde el album $libro = $playlist->appendChild($libro); $autor = $xml->createElement('albumID', "{$GLOBALS['contador']}"); $autor = $libro->appendChild($autor); $titulo = $xml->createElement('albumTitle', htmlspecialchars(utf8_encode($archivo))); $titulo = $libro->appendChild($titulo); $anio = $xml->createElement('albumArtist', 'unknown'); $anio = $libro->appendChild($anio); //$albumFolder = $xml->createElement('albumFolder','../data/ACDC/Back In Black/');//No se aun que es esto,parece ser la ubicacion de las imagenes $albumFolder = $xml->createElement('albumFolder', '/images'); $albumFolder = $libro->appendChild($albumFolder); $albumTracks = $xml->createElement('albumTracks'); //Empieza la lista de canciones $albumTracks = $libro->appendChild($albumTracks); $no_cancion = 1; while (($archivo2 = readdir($aux2)) !== false) { if ($archivo2 != "." && $archivo != "..") { $ruta_completa2 = $ruta_completa . '/' . $archivo2; if (is_dir($ruta_completa2)) { } else { if (substr("{$ruta_completa2}", -3, 3) == "mp3") { //El sistema solo soporta archivos con expencion mp3 $track = $xml->createElement('track'); $track = $albumTracks->appendChild($track); $trackID = $xml->createElement('trackID', "{$no_cancion}"); $trackID = $track->appendChild($trackID); $trackFile = $xml->createElement('trackFile', htmlspecialchars(utf8_encode($ruta_completa2))); //Ubicacion del archivo $trackFile = $track->appendChild($trackFile); $trackTitle = $xml->createElement('trackTitle', htmlspecialchars(utf8_encode($archivo2))); //Nombre del archivo $trackTitle = $track->appendChild($trackTitle); $trackArtist = $xml->createElement('trackArtist', "Unknow"); $trackArtist = $track->appendChild($trackArtist); //Calcular el timpo de la cancion $mp3file = new MP3File(htmlspecialchars($ruta_completa2)); $duration2 = $mp3file->getDuration(); //(slower) for VBR (or CBR) $trackLengh = $xml->createElement('trackLengh', MP3File::formatTime($duration2)); $trackLengh = $track->appendChild($trackLengh); $trackFileSize = $xml->createElement('trackFileSize', formatSizeUnits(filesize(htmlspecialchars($ruta_completa2)))); //Tamaño del archivo $trackFileSize = $track->appendChild($trackFileSize); //echo "Ubicacion del archivo: ".$ruta_completa2."<br>"; $GLOBALS['contador']++; $no_cancion++; } } //Termina else carga de archivos } } //Esto va despues del while $albumTracksCount = $xml->createElement('albumTracksCount', $no_cancion - 1); $albumTracksCount = $libro->appendChild($albumTracksCount); $no_cancion = 1; $albumCover = $xml->createElement('albumCover', "images/disco.jpg"); $albumCover = $libro->appendChild($albumCover); closedir($aux2); } } else { //No son carpetas, por lo tanto no mostramos nada } } } closedir($aux); } } //Creamos el archivo $xml->formatOutput = true; $el_xml = $xml->saveXML(); $xml->save('xml/playlistAllAlbums.xml'); }
<?php include_once "mp3file.class.php"; // You need to add server side validation and better error handling here $hostname = 'http://' . $_SERVER['SERVER_NAME']; $pathForScan = "../uploads/"; $files = preg_grep('/^([^.])/', scandir($pathForScan)); foreach ($files as &$filename) { $mp3file = new MP3File("../uploads/" . $filename); $duration2 = $mp3file->getDuration(); //(slower) for VBR (or CBR) $durationSec = MP3File::formatTime($duration2); $results[] = array("name" => $filename, "link" => $hostname . "/server/uploads/" . $filename, "duration" => $durationSec); } echo json_encode($results);