Desafío PPT Playlist
#3 Solución de Zubyc
Ver código
|
Ver comentarios (10)
|
Descargar código
Fecha: 19 diciembre 2003
Tamaño: 21689 caracteres
Comentarios: 10
Solución online:
Lo siento, pero no está disponible
Valoración









9.14
(14 votos)
No ha realizado ningún comentario
Valora esta solución
<?
session_start(); //Inicio de sesion
function obtener_tag($file)
{
$a=fopen($file,"r");
fseek($a,filesize($file)-128);
return fread($a,128); // Leemos los últimos 128 bytes
}
function tratar_texto($t)
{
$t=str_replace("\0","",$t);
$t=htmlspecialchars($t);
return($t);
}
function obtener_info_tag($tag)
{
$info['artista']=tratar_texto(substr($tag,3,30));
$info['cancion']=tratar_texto(substr($tag,33,30));
$info['album']=tratar_texto(substr($tag,63,30));
return $info;
}
// Devuelve la extensión de un archivo
function getExtension($archivo)
{ $a=explode(".",$archivo); return $a[count($a)-1]; }
// Adapta las rutas para que puedan ser leidas por el reproductor
function convertRuta($dir)
{
$d=explode("/",$dir);
for($i=0;$i<count($d);$i++){
if(strpos($d[$i]," ")!==false) // existe un espacio en el directorio
$d[$i]="\"".$d[$i]."\"";
}
return (implode("/",$d));
}
// Obtiene un listado de los archivos musicales del directorio
function obtener_listado_musica($dir,&$listado)
{
$f=opendir($dir);
// Recorremos el directorio
while($file=readdir($f))
{
$ruta=$dir."/".$file;
if(($file!=".")&&($file!=".."))
{
if(is_dir($ruta)) obtener_listado_musica($ruta,$listado);
else{
if(strtoupper(getExtension($file))=="MP3")
{
$i=count($listado);
$listado[$i]['file']=$file;
$listado[$i]['dir']=$dir."/";
}
}
}
}
closedir($f);
}
?>
<?
//--------------------------
// CONFIGURACION
// Ruta y parámetros
$player="c:/archiv~1/winamp3/winamp3.exe";
$param= array(
"play" =>" ",
"enqueue" =>"/ADD"
);
//--------------------------
$dir="c:/musica"; // Directorio por defecto
// PROGRAMA (NO TOCAR!)
// Se especifica una Nueva Ruta
if(isset($_GET["path"]))
{
$path=urldecode($_GET["path"]);
if(!file_exists($path)) { echo "No existe el directorio"; exit; }
$_SESSION['path']=$path;
}elseif(empty($_SESSION['path'])) $_SESSION['path']=$dir;
$path_actual=$_SESSION['path']; // Ruta que se va a usar
$listado=array();
obtener_listado_musica($path_actual,$listado);
sort($listado);
// Reproducir Cancion
if(isset($_GET['play']))
{ $id=$_GET['play']; $tipo="play"; }
// Añadir a lista de reproducción
if(isset($_GET['enqueue']))
{ $id=$_GET['enqueue']; $tipo="enqueue"; }
if(isset($tipo))
{
$ruta_normal=$listado[$id]['dir'].$listado[$id]['file'];
$ruta=convertRuta($ruta_normal);
$comando=$player." ".$param[$tipo]." ".$ruta;
system($comando);
}
?>
<html><head>
<style type="text/css"> form { margin:0px; } a {color:#645300 } a:hover{color:#645300}
.c {background-color:#FFFBF1} table { border:1px solid #000000; } td{font-size:10px; font-family:Tahoma} input{font-size:10px;}
</style></head>
<body>
<form method='get' action='<?=$PHP_SELF?>'>
<table width='60%' align='center'>
<tr><td align='center'><input type="text" name="path" size='30' value='<?=$path_actual?>'> <input type='submit' value='Ver Carpeta'></td></tr>
</table>
<table width='60%' align='center'><tr><td>PPT Playlist by Zubyc</td><td align='center'>Directorio actual: <b><?=$path_actual?></b></td><td align='right'>PHP-Hispano.NET</td></tr></table>
</form>
<table width='60%' align='center'>
<?
for($i=0;$i<count($listado);$i++)
{
$tag=obtener_tag($listado[$i]['dir'].$listado[$i]['file']);
$info=obtener_info_tag($tag);
$info_text="Artista: $info[artista]\nCanción: $info[cancion]\nAlbum: $info[album]";
$c=(!($i%2))?"c":"";
echo "<tr class='$c'><td align='center' width='15' bgcolor='#FFDF88'>$i</td>
<td >+ {$listado[$i]['file']}</td>
<td width='70'><a href='javascript:;' title=\"$info_text\">Id3 Mp3 Tag</a></td>
<td align='center' width='50'><a title='Reproducir' href='$PHP_SELF?play=$i'>Play</a></td>
<td><a title='Añadir en la lista' href='$PHP_SELF?enqueue=$i'>Enqueue</a></td></tr>";
}
?>
</table>
</body></html>