|
|
@ -2225,8 +2225,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
|
if mobj is not None:
|
|
|
|
if mobj is not None:
|
|
|
|
video_uploader_id = mobj.group('uploader_id')
|
|
|
|
video_uploader_id = mobj.group('uploader_id')
|
|
|
|
video_uploader_url = mobj.group('uploader_url')
|
|
|
|
video_uploader_url = mobj.group('uploader_url')
|
|
|
|
else:
|
|
|
|
|
|
|
|
self._downloader.report_warning('unable to extract uploader nickname')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
channel_id = (
|
|
|
|
channel_id = (
|
|
|
|
str_or_none(video_details.get('channelId'))
|
|
|
|
str_or_none(video_details.get('channelId'))
|
|
|
@ -2237,17 +2235,33 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
|
video_webpage, 'channel id', default=None, group='id'))
|
|
|
|
video_webpage, 'channel id', default=None, group='id'))
|
|
|
|
channel_url = 'http://www.youtube.com/channel/%s' % channel_id if channel_id else None
|
|
|
|
channel_url = 'http://www.youtube.com/channel/%s' % channel_id if channel_id else None
|
|
|
|
|
|
|
|
|
|
|
|
# thumbnail image
|
|
|
|
thumbnails = []
|
|
|
|
# We try first to get a high quality image:
|
|
|
|
thumbnails_list = try_get(
|
|
|
|
m_thumb = re.search(r'<span itemprop="thumbnail".*?href="(.*?)">',
|
|
|
|
video_details, lambda x: x['thumbnail']['thumbnails'], list) or []
|
|
|
|
video_webpage, re.DOTALL)
|
|
|
|
for t in thumbnails_list:
|
|
|
|
if m_thumb is not None:
|
|
|
|
if not isinstance(t, dict):
|
|
|
|
video_thumbnail = m_thumb.group(1)
|
|
|
|
continue
|
|
|
|
elif 'thumbnail_url' not in video_info:
|
|
|
|
thumbnail_url = url_or_none(t.get('url'))
|
|
|
|
self._downloader.report_warning('unable to extract video thumbnail')
|
|
|
|
if not thumbnail_url:
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
thumbnails.append({
|
|
|
|
|
|
|
|
'url': thumbnail_url,
|
|
|
|
|
|
|
|
'width': int_or_none(t.get('width')),
|
|
|
|
|
|
|
|
'height': int_or_none(t.get('height')),
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not thumbnails:
|
|
|
|
video_thumbnail = None
|
|
|
|
video_thumbnail = None
|
|
|
|
else: # don't panic if we can't find it
|
|
|
|
# We try first to get a high quality image:
|
|
|
|
video_thumbnail = compat_urllib_parse_unquote_plus(video_info['thumbnail_url'][0])
|
|
|
|
m_thumb = re.search(r'<span itemprop="thumbnail".*?href="(.*?)">',
|
|
|
|
|
|
|
|
video_webpage, re.DOTALL)
|
|
|
|
|
|
|
|
if m_thumb is not None:
|
|
|
|
|
|
|
|
video_thumbnail = m_thumb.group(1)
|
|
|
|
|
|
|
|
thumbnail_url = try_get(video_info, lambda x: x['thumbnail_url'][0], compat_str)
|
|
|
|
|
|
|
|
if thumbnail_url:
|
|
|
|
|
|
|
|
video_thumbnail = compat_urllib_parse_unquote_plus(thumbnail_url)
|
|
|
|
|
|
|
|
if video_thumbnail:
|
|
|
|
|
|
|
|
thumbnails.append({'url': video_thumbnail})
|
|
|
|
|
|
|
|
|
|
|
|
# upload date
|
|
|
|
# upload date
|
|
|
|
upload_date = self._html_search_meta(
|
|
|
|
upload_date = self._html_search_meta(
|
|
|
@ -2480,7 +2494,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
|
'creator': video_creator or artist,
|
|
|
|
'creator': video_creator or artist,
|
|
|
|
'title': video_title,
|
|
|
|
'title': video_title,
|
|
|
|
'alt_title': video_alt_title or track,
|
|
|
|
'alt_title': video_alt_title or track,
|
|
|
|
'thumbnail': video_thumbnail,
|
|
|
|
'thumbnails': thumbnails,
|
|
|
|
'description': video_description,
|
|
|
|
'description': video_description,
|
|
|
|
'categories': video_categories,
|
|
|
|
'categories': video_categories,
|
|
|
|
'tags': video_tags,
|
|
|
|
'tags': video_tags,
|
|
|
|