es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Youtube-dl descargar desde la terminal pero pausar desde un programa de Java (mismo comando)

Pude descargar el video incrustado desde la terminal, pero cuando lo llamo desde el programa de Java no funciona.

Este es el código que uso desde Java:

for(String url: referrerSet) {
    String command = "youtube-dl " + url;
    System.out.println(command);
    Process proc = Runtime.getRuntime().exec(command);

    BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    String line = "";
    while((line = reader.readLine()) != null) {
        System.out.print(line + "\n");
    }
}
youtube-dl https://player.vimeo.com/video/2352345 --referer 'https://referrerUrl.html'

Cuando ejecuto desde la terminal:

[vimeo] 2352345: Descargando la página web
[vimeo] 2352345: Extrayendo información
[vimeo] 2352345: Descargando metadatos JSON
ADVERTENCIA: No se pueden descargar los metadatos JSON: Error HTTP 404: No encontrado

Y comienza a descargar el video. Pero cuando lo ejecuto desde Java, solo veo esta salida:

[vimeo] 2352345: Descargando la página web

Y pasa al siguiente enlace sin descargar el video.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la falta del parámetro --referer en el código Java. Cuando ejecutas el comando youtube-dl en la terminal, incluyes el parámetro --referer que especifica la URL del remitente para el video. Sin embargo, al ejecutar el comando desde Java, te falta ese parámetro, lo que puede hacer que el servidor niegue el acceso al video.

    Para resolver el problema, necesitas modificar el código Java para incluir el parámetro --referer en la cadena command, de esta manera:

    for (String url: referrerSet) {
        String refererUrl = "https://referrerUrl.html"; // reemplaza por la URL del remitente real
        String command = "youtube-dl " + url + " --referer " + refererUrl;
        // el resto del código se mantiene igual
    }
    

    Con esta modificación, el comando ejecutado desde Java debería incluir la URL del remitente adecuada y, con suerte, los videos deberían comenzar a descargarse.

Comments are closed.