ytdl-org/youtube-dl · error · ExtractorError

%s

Error message

%s

What it means

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.

Source

Thrown at youtube_dl/extractor/metacafe.py:162

                return self.url_result('theplatform:%s' % ext_id, 'ThePlatform')

        headers = {
            # Disable family filter
            'Cookie': 'user=%s; ' % compat_urllib_parse.quote(json.dumps({'ffilter': False}))
        }

        # AnyClip videos require the flashversion cookie so that we get the link
        # to the mp4 file
        if video_id.startswith('an-'):
            headers['Cookie'] += 'flashVersion=0; '

        # Retrieve video webpage to extract further information
        webpage = self._download_webpage(url, video_id, headers=headers)

        error = get_element_by_attribute(
            'class', 'notfound-page-title', webpage)
        if error:
            raise ExtractorError(error, expected=True)

        video_title = self._html_search_meta(
            ['og:title', 'twitter:title'], webpage, 'title', default=None) or self._search_regex(r'<h1>(.*?)</h1>', webpage, 'title')

        # Extract URL, uploader and title from webpage
        self.report_extraction(video_id)
        video_url = None
        mobj = re.search(r'(?m)&(?:media|video)URL=([^&]+)', webpage)
        if mobj is not None:
            mediaURL = compat_urllib_parse_unquote(mobj.group(1))
            video_ext = determine_ext(mediaURL)

            # Extract gdaKey if available
            mobj = re.search(r'(?m)&gdaKey=(.*?)&', webpage)
            if mobj is None:
                video_url = mediaURL
            else:
                gdaKey = mobj.group(1)

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Confirm the URL in a browser — Metacafe will show its not-found page.
  2. Re-find the video through Metacafe search or the submitter's profile to get the current URL.
  3. No workaround exists client-side for removed videos; source the clip elsewhere.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    info = ydl.extract_info(url, download=False)
except ExtractorError as e:
    if 'couldn' in str(e).lower() or 'not found' in str(e).lower():
        mark_permanently_dead(url)  # Metacafe rendered its 404 page
    else:
        raise

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/8bafb509a07d75f3. Report an issue: GitHub.