diff --git a/youtube_dlc/extractor/youtube.py b/youtube_dlc/extractor/youtube.py
index 97cc793f9..cc54f4d91 100644
--- a/youtube_dlc/extractor/youtube.py
+++ b/youtube_dlc/extractor/youtube.py
@@ -2947,26 +2947,26 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):
url = self._TEMPLATE_URL % playlist_id
page = self._download_webpage(url, playlist_id)
- # the yt-alert-message now has tabindex attribute (see https://github.com/ytdl-org/youtube-dl/issues/11604)
- for match in re.findall(r'
]*>([^<]+)
', page):
- match = match.strip()
- # Check if the playlist exists or is private
- mobj = re.match(r'[^<]*(?:The|This) playlist (?Pdoes not exist|is private)[^<]*', match)
- if mobj:
- reason = mobj.group('reason')
- message = 'This playlist %s' % reason
- if 'private' in reason:
- message += ', use --username or --netrc to access it'
- message += '.'
- raise ExtractorError(message, expected=True)
- elif re.match(r'[^<]*Invalid parameters[^<]*', match):
- raise ExtractorError(
- 'Invalid parameters. Maybe URL is incorrect.',
- expected=True)
- elif re.match(r'[^<]*Choose your language[^<]*', match):
- continue
- else:
- self.report_warning('Youtube gives an alert message: ' + match)
+ prefix_reg = r'"alerts":\[\{"alertRenderer":.*?'
+ noexist_private_reg = r'(?:The|This) playlist (?Pdoes not exist|is private)'
+ mobj = re.search(prefix_reg + noexist_private_reg, page)
+ mobj_other_reason = re.search(prefix_reg + r'"runs":\[\{"text":"(?P[^"]+)', page)
+ if mobj:
+ reason = mobj.group('reason')
+ message = 'This playlist %s' % reason
+ if 'private' in reason:
+ message += ', use --username or --netrc to access it'
+ message += '.'
+ raise ExtractorError(message, expected=True)
+ elif re.search(prefix_reg + r'Invalid parameters', page):
+ raise ExtractorError(
+ 'Invalid parameters. Maybe URL is incorrect.',
+ expected=True)
+ elif re.search(prefix_reg + r'Choose your language', page):
+ pass
+ elif mobj_other_reason:
+ message = mobj_other_reason.group("message")
+ self.report_warning('Youtube gives an alert message: ' + message)
playlist_title = self._html_search_regex(
r'(?s)',