[youtube] Fix _extract_alerts

* Sometimes one warning is split between multiple runs
* Also simplified code
pull/241/head
pukkandan 4 years ago
parent f1823403b0
commit 3ffc7c89b0
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

@ -3222,25 +3222,26 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
alert_type = alert.get('type') alert_type = alert.get('type')
if not alert_type: if not alert_type:
continue continue
message = try_get(alert, lambda x: x['text']['simpleText'], compat_str) message = try_get(alert, lambda x: x['text']['simpleText'], compat_str) or ''
if message: if message:
yield alert_type, message yield alert_type, message
for run in try_get(alert, lambda x: x['text']['runs'], list) or []: for run in try_get(alert, lambda x: x['text']['runs'], list) or []:
message = try_get(run, lambda x: x['text'], compat_str) message += try_get(run, lambda x: x['text'], compat_str)
if message: if message:
yield alert_type, message yield alert_type, message
err_msg = None errors = []
warnings = []
for alert_type, alert_message in _real_extract_alerts(): for alert_type, alert_message in _real_extract_alerts():
if alert_type.lower() == 'error': if alert_type.lower() == 'error':
if err_msg: errors.append([alert_type, alert_message])
self._downloader.report_warning('YouTube said: %s - %s' % ('ERROR', err_msg))
err_msg = alert_message
else: else:
self._downloader.report_warning('YouTube said: %s - %s' % (alert_type, alert_message)) warnings.append([alert_type, alert_message])
if err_msg: for alert_type, alert_message in (warnings + errors[:-1]):
raise ExtractorError('YouTube said: %s' % err_msg, expected=expected) self._downloader.report_warning('YouTube said: %s - %s' % (alert_type, alert_message))
if errors:
raise ExtractorError('YouTube said: %s' % errors[-1][1], expected=expected)
def _extract_webpage(self, url, item_id): def _extract_webpage(self, url, item_id):
retries = self._downloader.params.get('extractor_retries', 3) retries = self._downloader.params.get('extractor_retries', 3)

Loading…
Cancel
Save