Lista de archivos media para VLC Media Player desde servidor local

Hola muchachos en esta ocasión quiero compartirles un código al que le dediqué unas horas solo por calmar mi necesidad de aprender cosas nuevas.
Los pasados días estuve instalando varias aplicaciones para hacerme a un Media Center en casa, debido a que la mayoría de aplicativos son bastante pesados quedé muy descepcionado y seguí buscando otras opciones por lo que se me ocurrió utilizar VLC como servidor de medios lo cual no fué sencillo y por esta razón decidí crear una lista dinámica de mi carpeta de descargas que mi cliente VLC sea capaz de leer cada vez que accedo a este recurso.

Encontré que un archivo de texto M3U me permite cargar una lista de reproducción de archivos y que los recursos pueden ser direcciones web por lo que me puse a esto,  a continuación describiré lo que hice.

  1. Instalar mi servidor web, realicé la instalación de un servidor AMP (Apche, Mysql, PHP) que me permite tener un servidor web Apache y le adiciona PHP; usé XAMPP que es uno de los que más conozco y modifiqué para que me creara un "alias" que redirecciona a mi directorio de descargas. En el archivo de configuracion "httpd.conf" agregué el siguiente bloque de código:

        Alias /peliculas "D:/Descargas/Peliculas/"
        <Directory "D:/Descargas/Peliculas">
           Options Indexes FollowSymLinks Includes ExecCGI
           Allow from all
           AllowOverride All
           Require all granted
        </Directory>


  2. Dentro demi carpeta creé un archivo index.php con el siguiente código:

    #EXTM3U
    <?php
    // Carpeta en donde se encuentran mis archivos multimedia
    define("Maindir", "D:\\Descargas\\Peliculas");

    listFiles(Maindir);

    function listFiles($dir) {
        $base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http');
        $base_url .= '://' . $_SERVER['HTTP_HOST'];
        $base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']),'' , $_SERVER['SCRIPT_NAME']);
       
        if (is_dir($dir)) {
          if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if(valido($file)) {
                    if(is_file($file) && strpos(substr($file, -4),".")===0) {
                       
                        echo '
                            #EXTINF:-1,' . str_replace(Maindir, "", $file) . '
                            ' . $base_url . $file . '
                        ';
                       
                    } else {
                        listFiles($dir . DIRECTORY_SEPARATOR . $file);
                    }
                  }
            }
            closedir($dh);
          }
        }else {
            if(valido($dir)) {
                echo '
                        #EXTINF:-1,' .  str_replace(Maindir, "", $dir) . '
                        ' . $base_url . str_replace(DIRECTORY_SEPARATOR, "/", str_replace(Maindir . DIRECTORY_SEPARATOR, "", $dir)) . '
                    ';
            }
        }
    }

    // Función que descarta los archivos que no quiero listar
    // En mayusculas evalúo los ultimos cuatro caracteres del nombre
    function valido($file){
        $res = FALSE;
        if(    $file!="." && $file!= ".."
            && strtoupper(substr($file, -4))!= ".PHP"
            && strtoupper(substr($file, -4))!= ".NFO"
            && strtoupper(substr($file, -4))!= ".TXT"
            && strtoupper(substr($file, -4))!= ".URL"
            && strtoupper(substr($file, -4))!= ".BUP"
            && strtoupper(substr($file, -4))!= ".IFO"
            && strtoupper(substr($file, -4))!= ".XLS"
            && strtoupper(substr($file, -4))!= ".DOC"
            && strtoupper(substr($file, -4))!= ".PPT"
            && strtoupper(substr($file, -4))!= ".COM"
            && strtoupper(substr($file, -4))!= ".BAT"
            && strtoupper(substr($file, -4))!= "XLSX"
            && strtoupper(substr($file, -4))!= "DOCX"
            && strtoupper(substr($file, -4))!= "PPTX"
            && strtoupper(substr($file, -4))!= "INFO"
        ) {
            $res = TRUE;
        }
        return $res;
    }
    ?>
  3. Una vez el servidor está iniciado y tenemos nuestro archivo index.php completo, podemos desde nuestro VLC acceder a solicitar una direccion URL

Te invito a probarlo y si puedes mejorarlo compartelo

Comentarios

Entradas más populares de este blog

Arreglar escritorio remoto Windows 10

Killall java parra windows