3

Попытка получить только содержимое списка воспроизведения (должно быть более 600 записей) из URL, таким образом:

youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

который в соответствии с man-страницей должен содержать список записей плейлиста, не допуская загрузки файлов.

Вместо этого он зависает после создания этого вывода:

~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  
[1] 4531  
~ $ [debug] System config: []  
[debug] User config: []  
[debug] Custom config: []  
[debug] Command-line args: ['-i', '-v', '--flat-playlist', '--skip-download', 'https://www.youtube.com/watch?v=CNotezuR73g']  
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8  
[debug] youtube-dl version 2018.07.10  
[debug] Python version 3.6.6 (CPython) - Linux-4.17.6-1-ARCH-x86_64-with-arch  
[debug] exe versions: ffmpeg 4.0.1, ffprobe 4.0.1, rtmpdump 2.4  
[debug] Proxy map: {}  
[youtube] CNotezuR73g: Downloading webpage  
[youtube] CNotezuR73g: Downloading video info webpage  
[debug] Default format spec: bestvideo+bestaudio/best  

Как мне это сделать?

3 ответа3

5

Вы читали страницу, предложенную wysiwig в своем комментарии? (спасибо @wysiwig!)

Список Youtube плейлист с youtube-dl

В любом случае, здесь я попытаюсь объяснить, что вы могли бы сделать (извлечено из предыдущего веб-сайта)

Попробуйте использовать эту команду:

youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > result.log

Это приведет к выводу, подобному этому в result.log:

https://youtu.be/0gvUCLL-UGE
https://youtu.be/CPV7zcUy4J0
https://youtu.be/4wyZNwIrH9I
...

что должно быть то, что вам нужно (список отдельных ссылок на видео YT).

Объяснение команды С помощью опции -j youtube-dl создаст вывод JSON, который содержит всю информацию о передаваемой вами ссылке (в данном случае плейлист).

Затем этот вывод JSON передается процессору jq JSON (его необходимо установить перед тем, как посмотреть веб-сайт JQ) в поисках всех ключей "id", содержащихся в выводе JSON (0gvUCLL-UGE, CPV7zcUy4J0,4wyZNwIrH9I, ...). Затем мы передаем эти "идентификаторы" в sed которые префиксируют каждый из них https://youtu.be/ давая результат, который я показал ранее.

Примечание 1: Для установки JQ вы можете просто использовать: sudo apt-get install jq

Примечание 2: этот подход работает только для Youtube .

1

Похоже, вы не цитируете URL. Всегда указывайте URL. На любой операционной системе.

В вашем примере проблема хорошо видна:

~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
[1] 4531

[1] 4531 означает, что задание (ID 1) запущено и выполняется с PID 4531.

Эта командная строка более или менее эквивалентна:

youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g &
list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

Амперсанд в конце означает, что строка 1 будет выполняться в фоновом режиме. Он все еще будет подключен к вашей оболочке, поэтому вы увидите его вывод. Вероятно, он не зависает, только что закончил: в конце концов, это просто ссылка на видео.

Строка 2 - это присвоение переменной в Bash. Он определит переменную с именем list если она еще не существует. Это можно будет использовать так:

~ $ echo $list
PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

Правильная командная строка, которую вы хотите использовать:

youtube-dl -i -v --flat-playlist --skip-download "https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr"
0

@wysiwig производит вывод на Linux, но не то, что я искал, таким образом:

$ youtube-dl --flat-playlist --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  

Выход :

[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: загрузка веб-страницы
[скачать] Загрузка плейлиста: полнометражные фильмы Arthouse
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Страница загрузки № 1
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: страница загрузки №2
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: страница загрузки № 3
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: страница загрузки №4
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Страница загрузки № 5
[youtube: плейлист] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Страница загрузки № 6
[youtube: playlist] плейлист Полнометражные фильмы Arthouse: скачивание 636 видео
[скачать] Загрузка видео 1 из 636
[скачать] Загрузка видео 2 из 636
[скачать] Загрузка видео 3 из 636
...

То, что я действительно хотел получить из плейлиста, это названия видео, чтобы я мог выбрать только те, которые я хочу загрузить, с которыми я получаю:

$ youtube-dl -i --get-filename --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  

Выход :

Официанты (полнометражный фильм, весь художественный фильм, полный фильм) _смотрите полный фильм бесплатно-CNotezuR73g.mp4
Малкольм Икс (MORGAN FREEMAN, полный фильм, английский, полнометражный фильм) _смотреть полные фильмы бесплатно-3C8j1C7HMj8.mp4
The Arizona Kid - Western, полнометражный фильм, полнометражный художественный фильм с участием РОЯ РОДЖЕРС, Classic Movies-8McZ6G2Uud8.mp4
Desperado Man aka Sagebrush Trail (западное кино, полнометражное кино, художественный фильм, классическое кино) -7udmB5M6IIE.mp4
...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .