Сохранение метаданных для видео в файле с помощью youtube-dl можно выполнить в bash, вызвав
youtube-dl -j https://www.youtube.com/watch?v=${video_id} > metadata.json
Однако, когда видео упоминается в контексте плейлиста, то есть путем вызова
youtube-dl -j https://www.youtube.com/watch?v=${video_id}&list=${list_id}&index=${index} > metadata.json
затем youtube-dl разветвляется или отсоединяется от оболочки (я правильно понимаю?) и вывод отправляется на терминал вместо файла. Процесс как будто застревает в ожидании чего-то. Его можно завершить с помощью ctrl-c.
Почему youtube-dl делает это и можно ли этого избежать? Я хочу хранить метаданные, относящиеся к плейлисту, а также метаданные, относящиеся к видео.
решение1
Theоболочкапереводит процессы в фоновый режим, если вы запускаете их с помощью &
оператора.
Поскольку рассматриваемые URL-адреса YouTube содержат символ «&», разделяющий параметры запроса, они должны бытьцитируетсяЧтобы оболочка не интерпретировала «&» как оператор, либо заключите весь URL в двойные кавычки (рекомендуется, если вы также используете переменные в URL), либо хотя бы добавьте к & обратную косую черту:
"https://host?a=b&c=d"
https//host?a=b\&c=d