ytdl-org/youtube-dl · error · ExtractorError
Unable to download video info
Error message
Unable to download video info
What it means
Raised when AfreecaTV's two-pass view-info loop completes both iterations without break — i.e. neither a usable flag path nor success was reached. The for/else construct makes this a generic 'could not obtain video info' failure after exhausting retries (including the PARTIAL_ADULT retry).
Source
Thrown at youtube_dl/extractor/afreecatv.py:273
flag = xpath_text(video_xml, './track/flag', 'flag', default=None)
if flag and flag == 'SUCCEED':
break
if flag == 'PARTIAL_ADULT':
self._downloader.report_warning(
'In accordance with local laws and regulations, underage users are restricted from watching adult content. '
'Only content suitable for all ages will be downloaded. '
'Provide account credentials if you wish to download restricted content.')
partial_view = True
continue
elif flag == 'ADULT':
error = 'Only users older than 19 are able to watch this video. Provide account credentials to download this content.'
else:
error = flag
raise ExtractorError(
'%s said: %s' % (self.IE_NAME, error), expected=True)
else:
raise ExtractorError('Unable to download video info')
video_element = video_xml.findall(compat_xpath('./track/video'))[-1]
if video_element is None or video_element.text is None:
raise ExtractorError(
'Video %s does not exist' % video_id, expected=True)
video_url = video_element.text.strip()
title = xpath_text(video_xml, './track/title', 'title', fatal=True)
uploader = xpath_text(video_xml, './track/nickname', 'uploader')
uploader_id = xpath_text(video_xml, './track/bj_id', 'uploader id')
duration = int_or_none(xpath_text(
video_xml, './track/duration', 'duration'))
thumbnail = xpath_text(video_xml, './track/titleImage', 'thumbnail')
common_entry = {
'uploader': uploader,View on GitHub (pinned to 956b8c5855)
Solutions
- Retry the command after a short delay — this path usually indicates a transient server condition
- If extracting a just-started live stream, wait until the stream metadata is published
- If persistent, capture the view-info URL response manually and inspect why it produces neither flag nor break
- Check upstream yt-dlp for extractor fixes if AfreecaTV changed the info API
Defensive patterns
Strategy: retry
Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if str(e) == 'Unable to download video info':
retry_with_backoff(url, max_attempts=3) # transient server condition
else:
raise Prevention
- Classify this error as retryable in automation — it fires only after the extractor's own two attempts
- Wait for stream metadata to publish before extracting just-started live broadcasts
When it happens
Trigger: Two consecutive requests to the station view-info URL return responses that neither break the loop nor raise a flag error; PARTIAL_ADULT retry also fails; transient server error pages parsed as XML without flags.
Common situations: AfreecaTV server-side hiccups; live broadcasts whose view info is not yet published; partially broken XML responses on very new videos.
Related errors
- Video %s does not exist
- A network error has occurred.
- This video is currently unavailable. It may still be uploadi
- Unable to login: %s said: %s
- Video %s has been deleted
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/bb532447736480b7.
Report an issue: GitHub.