El almacenamiento de los metadatos de un video en un archivo usando youtube-dl se puede realizar en bash llamando
youtube-dl -j https://www.youtube.com/watch?v=${video_id} > metadata.json
Sin embargo, cuando se hace referencia al vídeo en el contexto de una lista de reproducción, es decir, llamando
youtube-dl -j https://www.youtube.com/watch?v=${video_id}&list=${list_id}&index=${index} > metadata.json
luego youtube-dl se bifurca o se separa del shell (¿estoy entendiendo esto correctamente?) y la salida se envía a la terminal en lugar de al archivo. El proceso parece quedarse atascado esperando algo. Se puede finalizar usando Ctrl-c.
¿Por qué youtube-dl hace esto y puedo evitar que suceda? Quiero almacenar los metadatos relacionados con la lista de reproducción, así como los metadatos relacionados con el vídeo.
Respuesta1
Elcaparazónpone los procesos en segundo plano si los ejecuta con el &
operador.
Debido a que las URL de YouTube en cuestión tienen un "&" que separa los parámetros de consulta, deben sercitadoPara evitar que el shell interprete ese "&" como un operador, coloque toda la URL entre comillas dobles (recomendado si también usa variables en la URL), o al menos anteponga & con una barra invertida:
"https://host?a=b&c=d"
https//host?a=b\&c=d