Youtube-dl --dump-json returning different extractor output for playlist when called from Python import vs. CLI
I am having trouble replicating the exact output of the specific --flat-playlist -j or --flat-playlist -J arguments provided to the youtube-dl cli, but using the direct python call instead.
Maybe i can't flush out the exact options i need to present or maybe the wrong function / method altogether?
I like this command because it is speedy and gives me only the YouTube ID's, without deep diving each and every video (As a simple benchmark, I can complete 4000 in about 30 seconds, vs. 4000 in 70 minutes via the regular info-only extraction).
CLI version, note that the cli somehow iterates, whereas the direct call method doesn't...
[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"
Here's what my python script is:
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)
and the result seems to only present the channel info without iterating:
[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
Can anyone please steer me in the right direction or tell me what the best way is to accomplish that quick task? Is there a template component i need to address? Do I need to treat the response before it's ready for display?
>> print (youtube_dl.version.unicode_literals)
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
python --version
Python 3.6.5
Update,
As suggested, using the returned value of "url" seems to be a good enough workaround to continue my work. I still don't know why i don't see the same results that I would when using the CLI though... there seems to be a different logic there that automatically cycles through a channel's list, without having to run the command a second time.
>>> 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'
>>>
python youtube-dl
add a comment |
I am having trouble replicating the exact output of the specific --flat-playlist -j or --flat-playlist -J arguments provided to the youtube-dl cli, but using the direct python call instead.
Maybe i can't flush out the exact options i need to present or maybe the wrong function / method altogether?
I like this command because it is speedy and gives me only the YouTube ID's, without deep diving each and every video (As a simple benchmark, I can complete 4000 in about 30 seconds, vs. 4000 in 70 minutes via the regular info-only extraction).
CLI version, note that the cli somehow iterates, whereas the direct call method doesn't...
[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"
Here's what my python script is:
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)
and the result seems to only present the channel info without iterating:
[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
Can anyone please steer me in the right direction or tell me what the best way is to accomplish that quick task? Is there a template component i need to address? Do I need to treat the response before it's ready for display?
>> print (youtube_dl.version.unicode_literals)
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
python --version
Python 3.6.5
Update,
As suggested, using the returned value of "url" seems to be a good enough workaround to continue my work. I still don't know why i don't see the same results that I would when using the CLI though... there seems to be a different logic there that automatically cycles through a channel's list, without having to run the command a second time.
>>> 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'
>>>
python youtube-dl
add a comment |
I am having trouble replicating the exact output of the specific --flat-playlist -j or --flat-playlist -J arguments provided to the youtube-dl cli, but using the direct python call instead.
Maybe i can't flush out the exact options i need to present or maybe the wrong function / method altogether?
I like this command because it is speedy and gives me only the YouTube ID's, without deep diving each and every video (As a simple benchmark, I can complete 4000 in about 30 seconds, vs. 4000 in 70 minutes via the regular info-only extraction).
CLI version, note that the cli somehow iterates, whereas the direct call method doesn't...
[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"
Here's what my python script is:
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)
and the result seems to only present the channel info without iterating:
[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
Can anyone please steer me in the right direction or tell me what the best way is to accomplish that quick task? Is there a template component i need to address? Do I need to treat the response before it's ready for display?
>> print (youtube_dl.version.unicode_literals)
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
python --version
Python 3.6.5
Update,
As suggested, using the returned value of "url" seems to be a good enough workaround to continue my work. I still don't know why i don't see the same results that I would when using the CLI though... there seems to be a different logic there that automatically cycles through a channel's list, without having to run the command a second time.
>>> 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'
>>>
python youtube-dl
I am having trouble replicating the exact output of the specific --flat-playlist -j or --flat-playlist -J arguments provided to the youtube-dl cli, but using the direct python call instead.
Maybe i can't flush out the exact options i need to present or maybe the wrong function / method altogether?
I like this command because it is speedy and gives me only the YouTube ID's, without deep diving each and every video (As a simple benchmark, I can complete 4000 in about 30 seconds, vs. 4000 in 70 minutes via the regular info-only extraction).
CLI version, note that the cli somehow iterates, whereas the direct call method doesn't...
[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"
Here's what my python script is:
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)
and the result seems to only present the channel info without iterating:
[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
Can anyone please steer me in the right direction or tell me what the best way is to accomplish that quick task? Is there a template component i need to address? Do I need to treat the response before it's ready for display?
>> print (youtube_dl.version.unicode_literals)
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
python --version
Python 3.6.5
Update,
As suggested, using the returned value of "url" seems to be a good enough workaround to continue my work. I still don't know why i don't see the same results that I would when using the CLI though... there seems to be a different logic there that automatically cycles through a channel's list, without having to run the command a second time.
>>> 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'
>>>
python youtube-dl
python youtube-dl
edited Nov 13 '18 at 22:51
Patrick Scott Best
asked Nov 13 '18 at 20:22
Patrick Scott BestPatrick Scott Best
11
11
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I believe if you are referring to the playlist then you should pass your URL as such:
url = 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw'
Then you should be able to print object and iterate through each dict, something like:
object = ydl.extract_info(url, download=False)
for jsn in object.get('entries'):
print jsn
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288922%2fyoutube-dl-dump-json-returning-different-extractor-output-for-playlist-when-ca%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I believe if you are referring to the playlist then you should pass your URL as such:
url = 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw'
Then you should be able to print object and iterate through each dict, something like:
object = ydl.extract_info(url, download=False)
for jsn in object.get('entries'):
print jsn
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
add a comment |
I believe if you are referring to the playlist then you should pass your URL as such:
url = 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw'
Then you should be able to print object and iterate through each dict, something like:
object = ydl.extract_info(url, download=False)
for jsn in object.get('entries'):
print jsn
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
add a comment |
I believe if you are referring to the playlist then you should pass your URL as such:
url = 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw'
Then you should be able to print object and iterate through each dict, something like:
object = ydl.extract_info(url, download=False)
for jsn in object.get('entries'):
print jsn
I believe if you are referring to the playlist then you should pass your URL as such:
url = 'https://www.youtube.com/playlist?list=UU6RNSPFcqY4BblL2Jg9SUtw'
Then you should be able to print object and iterate through each dict, something like:
object = ydl.extract_info(url, download=False)
for jsn in object.get('entries'):
print jsn
answered Nov 13 '18 at 20:43
LeKhan9LeKhan9
931112
931112
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
add a comment |
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
I see what you mean, I could use what's been extracted so far to re-formulate the request using the webpage_url dict item that was returned. I shall do so and test again. The larger question remains however, why does it work with the URL being youtube.com/channel/UC6RNSPFcqY4BblL2Jg9SUtw from the CLI, and what's the mechanism that is automatically traversing each individual video when the user (read:anyone) uses the /channel/ URL, and not the web URL. Stand by for more results... thank you
– Patrick Scott Best
Nov 13 '18 at 21:46
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Well, your suggestion is a good one, and is a good workaround. My reputation score is too low to bump your answer, so if other people would, that would be helpful. Thanks LeKhan9.
– Patrick Scott Best
Nov 13 '18 at 22:52
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
Glad I could help. Best of luck! Hope the discussion is useful for others too.
– LeKhan9
Nov 13 '18 at 22:54
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288922%2fyoutube-dl-dump-json-returning-different-extractor-output-for-playlist-when-ca%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown