Skip to content

Commit

Permalink
[youtube:tab] Capture and output alerts (closes #27340)
Browse files Browse the repository at this point in the history
  • Loading branch information
dstftw committed Dec 7, 2020
1 parent 3ded751 commit 5bd7ad2
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions youtube_dl/extractor/youtube.py
Original file line number Diff line number Diff line change
Expand Up @@ -3060,6 +3060,24 @@ def _extract_uploader(data):
try_get(owner, lambda x: x['navigationEndpoint']['browseEndpoint']['canonicalBaseUrl'], compat_str))
return uploader

@staticmethod
def _extract_alert(data):
alerts = []
for alert in try_get(data, lambda x: x['alerts'], list) or []:
if not isinstance(alert, dict):
continue
alert_text = try_get(
alert, lambda x: x['alertRenderer']['text'], dict)
if not alert_text:
continue
text = try_get(
alert_text,
(lambda x: x['simpleText'], lambda x: x['runs'][0]['text']),
compat_str)
if text:
alerts.append(text)
return '\n'.join(alerts)

def _extract_from_tabs(self, item_id, webpage, data, tabs, identity_token):
selected_tab = self._extract_selected_tab(tabs)
renderer = try_get(
Expand Down Expand Up @@ -3127,6 +3145,10 @@ def _real_extract(self, url):
compat_str) or video_id
if video_id:
return self.url_result(video_id, ie=YoutubeIE.ie_key(), video_id=video_id)
# Capture and output alerts
alert = self._extract_alert(data)
if alert:
raise ExtractorError(alert, expected=True)
# Failed to recognize
raise ExtractorError('Unable to recognize tab page')

Expand Down

0 comments on commit 5bd7ad2

Please sign in to comment.