Estoy usando una libreria ( getid3() ).
include('demo.audioinfo.class.php');
$getID3 = new getID3;
$list = fopen('F:\alternative/lista.txt','r');//lista de nombres de archivos mp3.
while(!feof($list)){
$line = fgets($list);
$info = $getID3->analyze('F:\alternative/'.$line);
var_dump($info);
//$duracion = $info['playtime_string'];
//echo $duracion."<br>";
}
El var_dump me arroja esto:
Citararray (size=2)
'GETID3_VERSION' => string '1.9.7-20130705' (length=14)
'error' =>
array (size=1)
0 => string 'Could not open "F:\alternative\Down - Better.mp3
" (does not exist, or is not a file)' (length=112)
Si comento el while y en la variable info , en
analyze() le cambio el
$line por
Down - Better.mp3 funciona.
¿Que puede estar pasando?
EDIT: Ahora que pude compilar PHP con mis maniaticas extensiones, pude probar tu codigo.
insisto en que es mejor usar solo un tipo de separador, y en el caso de usar el separador de windows:
$list = fopen('F:\\alternative\\lista.txt','r');//lista de nombres de archivos mp3.
Esto fue lo que consegui:
require_once("../getid3/getid3.php"); //en mi caso es asi ;)
$getid3 = new getID3;
/* FAILED
$list = fopen('lista_archivos', 'r');
while(!feof($list)){
$line = fgets($list);
$info = $getid3->analyze('carpeta_de_musica/'.$line);
var_dump($info);
}
*/
$carpeta = scandir("carpeta_de_musica"); //Carpeta donde guardas los archivos MP3
$ignorar = array(".",".."); //Archivos y directorios a ignorar, debes añadir todo archivo que no sea multimedia que se encuentre en dicho directorio.
$archivos = array_diff($carpeta, $ignorar); //Quitamos los archivos que no sean multimedia y los directorios
foreach($archivos as $archivo) {
$info = $getid3->analyze("carpeta_de_musica/".$archivo);
var_dump($info);
}
usando scandir() nos evitamos tener que leer que crear un archivo que lista los arhivos a evaluar.
además nos aseguramos que el array solo tiene los nombres de archivo y no el valor FALSE que devuelve fgets() cuando ya no encuentra nada mas que leer.
Espero que te sirva ;)