У меня проблемы с репликацией точного вывода определенных - flat-playlist -j или - flat-playlist -J аргументов, предоставленных youtube-dl cli,но вместо этого используется прямой вызов Python.
Может быть, я не могу указать точные параметры, которые мне нужно представить, или, возможно, неправильную функцию / метод вообще?
Мне нравится эта команда, потому что она быстрая и дает мне только идентификаторы YouTube, без глубокого погружения в каждое видео (в качестве простого теста я могу выполнить 4000 примерно за 30 секунд против 4000 за 70 минутчерез обычное извлечение только для информации).
CLI-версия, обратите внимание, что cli каким-то образом повторяется, тогда как метод прямого вызова не ...
[root@tjds temp]# /usr/local/bin/youtube-dl --flat-playlist -J https://www.youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw
{"extractor": "youtube:playlist", "_type": "playlist", "uploader": "Patrick Best", "entries": [{"url": "IaNEfhPmhPM", "_type": "url", "ie_key": "Youtube", "id": "IaNEfhPmhPM", "title": "Rona in Aurora - the death of a big box"}, {"url": "JN-2vTf8-WM", "_type": "url", "ie_key": "Youtube", "id": "JN-2vTf8-WM", "title": "RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - After Poweroff"}, {"url": "NmQmM36ja3o", "_type": "url", "ie_key": "Youtube", "id": "NmQmM36ja3o", "title": "RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - During the Test"}, {"url": "MsrgW1Rdlso", "_type": "url", "ie_key": "Youtube", "id": "MsrgW1Rdlso", "title": "Raspberry Pi powered by AA batteries direct"}], "id": "UU6RNSPFcqY4BblL2Jg9SUtw", "title": "Uploads from Patrick Best", "extractor_key": "YoutubePlaylist", "uploader_id": "patrickscottbest", "uploader_url": "https://www.youtube.com/user/patrickscottbest", "webpage_url": "https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw", "webpage_url_basename": "playlist"}
[root@tjds temp]# /usr/local/bin/youtube-dl --flat-playlist -j https://www.youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw
{"url": "IaNEfhPmhPM", "_type": "url", "ie_key": "Youtube", "id": "IaNEfhPmhPM", "title": "Rona in Aurora - the death of a big box"}
{"url": "JN-2vTf8-WM", "_type": "url", "ie_key": "Youtube", "id": "JN-2vTf8-WM", "title": "RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - After Poweroff"}
{"url": "NmQmM36ja3o", "_type": "url", "ie_key": "Youtube", "id": "NmQmM36ja3o", "title": "RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - During the Test"}
{"url": "MsrgW1Rdlso", "_type": "url", "ie_key": "Youtube", "id": "MsrgW1Rdlso", "title": "Raspberry Pi powered by AA batteries direct"}
Вот что мой скрипт на pythonэто:
import youtube_dl
ydl_opts = {
'extract_flat': True, ## --flat-playlist according to options.py
'dumpjson': True, ## lower -j
#'dump_single_json': True, ## UPPER -J
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
object = ydl.extract_info(providedURL, download=False)
print (object)
print len(object)
и результат, кажется, только представляет информацию о канале без итерации:
[youtube:channel] UC6RNSPFcqY4BblL2Jg9SUtw: Downloading channel page
{'_type': 'url', 'url': 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw', 'ie_key': 'YoutubePlaylist', 'extractor': 'youtube:channel', 'webpage_url': 'https://www.youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw', 'webpage_url_basename': 'UC6RNSPFcqY4BblL2Jg9SUtw', 'extractor_key': 'YoutubeChannel'}
7
Может кто-нибудь, пожалуйста, направьте меня в правильном направлении или скажите мне, как лучшечтобы выполнить эту быструю задачу?Есть ли компонент шаблона, к которому мне нужно обратиться?Нужно ли обрабатывать ответ до того, как он будет готов к отображению?
>> print (youtube_dl.version.unicode_literals)
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
python --version
Python 3.6.5
Обновление,
Как и предполагалось, использование возвращенного значения "url" представляется достаточно хорошим решением для продолжениямоя работа.Я до сих пор не знаю, почему я не вижу те же результаты, которые я получал бы при использовании CLI, хотя ... там, кажется, другая логика, которая автоматически циклически перебирает список каналов, не выполняя команду секундувремя.
>>> with youtube_dl.YoutubeDL(ydl_opts) as ydl:
... object = ydl.extract_info(providedURL, download=False)
... print (len(object))
... object2 = ydl.extract_info(object['url'], download=False)
... print (len(object2))
... print (object2)
...
[youtube:channel] UC6RNSPFcqY4BblL2Jg9SUtw: Downloading channel page
7
[download] Downloading playlist: Uploads from Patrick Best
[youtube:playlist] playlist Uploads from Patrick Best: Downloading 4 videos
[download] Downloading video 1 of 4
[download] Downloading video 2 of 4
[download] Downloading video 3 of 4
[download] Downloading video 4 of 4
[download] Finished downloading playlist: Uploads from Patrick Best
11
{'_type': 'playlist', 'entries': [{'_type': 'url', 'url': 'IaNEfhPmhPM', 'ie_key': 'Youtube', 'id': 'IaNEfhPmhPM', 'title': 'Rona in Aurora - the death of a big box'}, {'_type': 'url', 'url': 'JN-2vTf8-WM', 'ie_key': 'Youtube', 'id': 'JN-2vTf8-WM', 'title': 'RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - After Poweroff'}, {'_type': 'url', 'url': 'NmQmM36ja3o', 'ie_key': 'Youtube', 'id': 'NmQmM36ja3o', 'title': 'RealWorldNumbers - How to Test a Raspberry Pi Powered by Alkaline AA Batteries - During the Test'}, {'_type': 'url', 'url': 'MsrgW1Rdlso', 'ie_key': 'Youtube', 'id': 'MsrgW1Rdlso', 'title': 'Raspberry Pi powered by AA batteries direct'}], 'id': 'UU6RNSPFcqY4BblL2Jg9SUtw', 'title': 'Uploads from Patrick Best', 'uploader': 'Patrick Best', 'uploader_id': 'patrickscottbest', 'uploader_url': 'https://www.youtube.com/user/patrickscottbest', 'extractor': 'youtube:playlist', 'webpage_url': 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw', 'webpage_url_basename': 'playlist', 'extractor_key': 'YoutubePlaylist'}
>>>