{"record":{"id":"8bafb509a07d75f3","repo":"ytdl-org/youtube-dl","slug":"s-8bafb5","errorCode":null,"errorMessage":"%s","messagePattern":"%s","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/metacafe.py","lineNumber":162,"sourceCode":"                return self.url_result('theplatform:%s' % ext_id, 'ThePlatform')\n\n        headers = {\n            # Disable family filter\n            'Cookie': 'user=%s; ' % compat_urllib_parse.quote(json.dumps({'ffilter': False}))\n        }\n\n        # AnyClip videos require the flashversion cookie so that we get the link\n        # to the mp4 file\n        if video_id.startswith('an-'):\n            headers['Cookie'] += 'flashVersion=0; '\n\n        # Retrieve video webpage to extract further information\n        webpage = self._download_webpage(url, video_id, headers=headers)\n\n        error = get_element_by_attribute(\n            'class', 'notfound-page-title', webpage)\n        if error:\n            raise ExtractorError(error, expected=True)\n\n        video_title = self._html_search_meta(\n            ['og:title', 'twitter:title'], webpage, 'title', default=None) or self._search_regex(r'<h1>(.*?)</h1>', webpage, 'title')\n\n        # Extract URL, uploader and title from webpage\n        self.report_extraction(video_id)\n        video_url = None\n        mobj = re.search(r'(?m)&(?:media|video)URL=([^&]+)', webpage)\n        if mobj is not None:\n            mediaURL = compat_urllib_parse_unquote(mobj.group(1))\n            video_ext = determine_ext(mediaURL)\n\n            # Extract gdaKey if available\n            mobj = re.search(r'(?m)&gdaKey=(.*?)&', webpage)\n            if mobj is None:\n                video_url = mediaURL\n            else:\n                gdaKey = mobj.group(1)","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/metacafe.py#L144-L180","documentation":"Raised by the Metacafe extractor when the downloaded webpage contains an element with class 'notfound-page-title' — the rendered 404/not-found heading. The element's text is used verbatim as the error message, so the user sees Metacafe's own not-found title (e.g. 'WE COULDN'T FIND THAT PAGE'). Expected=True.","triggerScenarios":"self._download_webpage(url, ...) succeeds but the returned HTML contains any tag with class='notfound-page-title'; get_element_by_attribute returns its text, which is truthy.","commonSituations":"Video removed for copyright or terms violations; typo in the video id segment of the URL; Metacafe rewriting old URLs; rare false positive if an unrelated page element reuses the class name.","solutions":["Confirm the URL in a browser — Metacafe will show its not-found page.","Re-find the video through Metacafe search or the submitter's profile to get the current URL.","No workaround exists client-side for removed videos; source the clip elsewhere."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    info = ydl.extract_info(url, download=False)\nexcept ExtractorError as e:\n    if 'couldn' in str(e).lower() or 'not found' in str(e).lower():\n        mark_permanently_dead(url)  # Metacafe rendered its 404 page\n    else:\n        raise","preventionTips":["Double-check Metacafe ids for typos before download.","Re-resolve video URLs from Metacafe search; old share links rot quickly."],"tags":["not-found","webpage-scrape","expected-error"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}