{"record":{"id":"bb532447736480b7","repo":"ytdl-org/youtube-dl","slug":"unable-to-download-video-info","errorCode":null,"errorMessage":"Unable to download video info","messagePattern":"Unable to download video info","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/afreecatv.py","lineNumber":273,"sourceCode":"\n            flag = xpath_text(video_xml, './track/flag', 'flag', default=None)\n            if flag and flag == 'SUCCEED':\n                break\n            if flag == 'PARTIAL_ADULT':\n                self._downloader.report_warning(\n                    'In accordance with local laws and regulations, underage users are restricted from watching adult content. '\n                    'Only content suitable for all ages will be downloaded. '\n                    'Provide account credentials if you wish to download restricted content.')\n                partial_view = True\n                continue\n            elif flag == 'ADULT':\n                error = 'Only users older than 19 are able to watch this video. Provide account credentials to download this content.'\n            else:\n                error = flag\n            raise ExtractorError(\n                '%s said: %s' % (self.IE_NAME, error), expected=True)\n        else:\n            raise ExtractorError('Unable to download video info')\n\n        video_element = video_xml.findall(compat_xpath('./track/video'))[-1]\n        if video_element is None or video_element.text is None:\n            raise ExtractorError(\n                'Video %s does not exist' % video_id, expected=True)\n\n        video_url = video_element.text.strip()\n\n        title = xpath_text(video_xml, './track/title', 'title', fatal=True)\n\n        uploader = xpath_text(video_xml, './track/nickname', 'uploader')\n        uploader_id = xpath_text(video_xml, './track/bj_id', 'uploader id')\n        duration = int_or_none(xpath_text(\n            video_xml, './track/duration', 'duration'))\n        thumbnail = xpath_text(video_xml, './track/titleImage', 'thumbnail')\n\n        common_entry = {\n            'uploader': uploader,","sourceCodeStart":255,"sourceCodeEnd":291,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/afreecatv.py#L255-L291","documentation":"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).","triggerScenarios":"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.","commonSituations":"AfreecaTV server-side hiccups; live broadcasts whose view info is not yet published; partially broken XML responses on very new videos.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    if str(e) == 'Unable to download video info':\n        retry_with_backoff(url, max_attempts=3)  # transient server condition\n    else:\n        raise","preventionTips":["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"],"tags":["afreecatv","transient","retry","video-info"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}