{"record":{"id":"4978d2ce5ade7f38","repo":"ytdl-org/youtube-dl","slug":"error-msg-video-id","errorCode":null,"errorMessage":"error_msg % video_id","messagePattern":"error_msg % video_id","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/vk.py","lineNumber":385,"sourceCode":"                r'<!>Access denied':\n                'Access denied to video %s.',\n\n                r'<!>Видеозапись недоступна, так как её автор был заблокирован.':\n                'Video %s is no longer available, because its author has been blocked.',\n\n                r'<!>This video is no longer available, because its author has been blocked.':\n                'Video %s is no longer available, because its author has been blocked.',\n\n                r'<!>This video is no longer available, because it has been deleted.':\n                'Video %s is no longer available, because it has been deleted.',\n\n                r'<!>The video .+? is not available in your region.':\n                'Video %s is not available in your region.',\n            }\n\n            for error_re, error_msg in ERRORS.items():\n                if re.search(error_re, info_page):\n                    raise ExtractorError(error_msg % video_id, expected=True)\n\n            player = self._parse_json(self._search_regex(\n                r'var\\s+playerParams\\s*=\\s*({.+?})\\s*;\\s*\\n',\n                info_page, 'player params'), video_id)\n\n        youtube_url = YoutubeIE._extract_url(info_page)\n        if youtube_url:\n            return self.url_result(youtube_url, YoutubeIE.ie_key())\n\n        vimeo_url = VimeoIE._extract_url(url, info_page)\n        if vimeo_url is not None:\n            return self.url_result(vimeo_url, VimeoIE.ie_key())\n\n        pladform_url = PladformIE._extract_url(info_page)\n        if pladform_url:\n            return self.url_result(pladform_url, PladformIE.ie_key())\n\n        m_rutube = re.search(","sourceCodeStart":367,"sourceCodeEnd":403,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/vk.py#L367-L403","documentation":"The message is a template (error_msg % video_id) applied in VKIE's ERRORS dict loop: when the video_ext.php page matches one of several known VK error markers (author blocked, video deleted, region-locked, rightholder complaint), the matching human-readable string is formatted with the video ID and raised. The placeholder in the report represents the template, not literal output.","triggerScenarios":"The embed page contains one of the ERRORS markers, e.g. '<!>This video is no longer available, because its author has been blocked.' or '<!>The video .+? is not available in your region.'; each maps to a 'Video %s ...' message with expected=True.","commonSituations":"Dead playlist links whose authors were banned; copyright takedowns; region restrictions when downloading from another country.","solutions":["Read the formatted message to identify the category: author blocked, deleted, region-locked, or rightholder complaint","For region errors, retry from an IP in an allowed region","For deleted/removed videos, no download is possible — drop the entry from batch jobs"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from youtube_dl.utils import ExtractorError\nimport re\ntry:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    m = str(e)\n    if 'not available in your region' in m:\n        retry_via_proxy(url)\n    elif re.search(r'(deleted|blocked|removed)', m):\n        drop(url)  # permanent — do not retry","preventionTips":["Classify ERRORS-dict messages into permanent vs region-retryable before queueing","Track per-URL failure reasons so batch jobs skip known-dead entries","For region errors, match proxy exit country to the video's allowed region"],"tags":["vk","video-unavailable","region","copyright"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}