|
@ -388,10 +388,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
super(YoutubeIE, self).__init__(*args, **kwargs) |
|
|
super(YoutubeIE, self).__init__(*args, **kwargs) |
|
|
self._player_cache = {} |
|
|
self._player_cache = {} |
|
|
|
|
|
|
|
|
def report_video_webpage_download(self, video_id): |
|
|
|
|
|
"""Report attempt to download video webpage.""" |
|
|
|
|
|
self.to_screen(u'%s: Downloading video webpage' % video_id) |
|
|
|
|
|
|
|
|
|
|
|
def report_video_info_webpage_download(self, video_id): |
|
|
def report_video_info_webpage_download(self, video_id): |
|
|
"""Report attempt to download video info webpage.""" |
|
|
"""Report attempt to download video info webpage.""" |
|
|
self.to_screen(u'%s: Downloading video info webpage' % video_id) |
|
|
self.to_screen(u'%s: Downloading video info webpage' % video_id) |
|
@ -1258,15 +1254,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
video_id = self._extract_id(url) |
|
|
video_id = self._extract_id(url) |
|
|
|
|
|
|
|
|
# Get video webpage |
|
|
# Get video webpage |
|
|
self.report_video_webpage_download(video_id) |
|
|
|
|
|
url = 'https://www.youtube.com/watch?v=%s&gl=US&hl=en&has_verified=1' % video_id |
|
|
url = 'https://www.youtube.com/watch?v=%s&gl=US&hl=en&has_verified=1' % video_id |
|
|
request = compat_urllib_request.Request(url) |
|
|
|
|
|
try: |
|
|
|
|
|
video_webpage_bytes = compat_urllib_request.urlopen(request).read() |
|
|
|
|
|
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: |
|
|
|
|
|
raise ExtractorError(u'Unable to download video webpage: %s' % compat_str(err)) |
|
|
|
|
|
|
|
|
|
|
|
video_webpage = video_webpage_bytes.decode('utf-8', 'ignore') |
|
|
|
|
|
|
|
|
video_webpage = self._download_webpage(url, video_id) |
|
|
|
|
|
|
|
|
# Attempt to extract SWF player URL |
|
|
# Attempt to extract SWF player URL |
|
|
mobj = re.search(r'swfConfig.*?"(https?:\\/\\/.*?watch.*?-.*?\.swf)"', video_webpage) |
|
|
mobj = re.search(r'swfConfig.*?"(https?:\\/\\/.*?watch.*?-.*?\.swf)"', video_webpage) |
|
@ -1383,6 +1372,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
else: |
|
|
else: |
|
|
video_description = u'' |
|
|
video_description = u'' |
|
|
|
|
|
|
|
|
|
|
|
def _extract_count(klass): |
|
|
|
|
|
count = self._search_regex(r'class="%s">([\d,]+)</span>' % re.escape(klass), video_webpage, klass, fatal=False) |
|
|
|
|
|
if count is not None: |
|
|
|
|
|
return int(count.replace(',', '')) |
|
|
|
|
|
return None |
|
|
|
|
|
like_count = _extract_count(u'likes-count') |
|
|
|
|
|
dislike_count = _extract_count(u'dislikes-count') |
|
|
|
|
|
|
|
|
# subtitles |
|
|
# subtitles |
|
|
video_subtitles = self.extract_subtitles(video_id, video_webpage) |
|
|
video_subtitles = self.extract_subtitles(video_id, video_webpage) |
|
|
|
|
|
|
|
@ -1515,6 +1512,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
'annotations': video_annotations, |
|
|
'annotations': video_annotations, |
|
|
'webpage_url': 'https://www.youtube.com/watch?v=%s' % video_id, |
|
|
'webpage_url': 'https://www.youtube.com/watch?v=%s' % video_id, |
|
|
'view_count': view_count, |
|
|
'view_count': view_count, |
|
|
|
|
|
'like_count': like_count, |
|
|
|
|
|
'dislike_count': dislike_count, |
|
|
}) |
|
|
}) |
|
|
return results |
|
|
return results |
|
|
|
|
|
|
|
|