ytdl-org/youtube-dl · error · ExtractorError

Video %s does not exist

Error message

Video %s does not exist

What it means

Raised by the XFileShare-family extractor when the page container matches one of the _FILE_NOT_FOUND_REGEXES. These regexes cover the various 'file not found' / 'file deleted' wordings used across the mirrored hosts, so the error means the requested file no longer exists on that host.

Source

Thrown at youtube_dl/extractor/xfileshare.py:211

        return list(yield_urls())

    def _real_extract(self, url):
        host, video_id = self._match_valid_url(url).group('host', 'id')

        url = 'https://%s/%s' % (
            host,
            'embed-%s.html' % video_id if host in ('govid.me', 'vidlo.us') else video_id)
        webpage = self._download_webpage(url, video_id)
        container_div = get_element_by_id('container', webpage) or webpage
        if self._search_regex(
                r'>This server is in maintenance mode\.', container_div,
                'maint error', group=0, default=None):
            raise ExtractorError(clean_html(container_div), expected=True)
        if self._search_regex(
                self._FILE_NOT_FOUND_REGEXES, container_div,
                'missing video error', group=0, default=None):
            raise ExtractorError('Video %s does not exist' % video_id, expected=True)

        fields = self._hidden_inputs(webpage)

        if fields.get('op') == 'download1':
            countdown = int_or_none(self._search_regex(
                r'<span id="countdown_str">(?:[Ww]ait)?\s*<span id="cxc">(\d+)</span>\s*(?:seconds?)?</span>',
                webpage, 'countdown', default=None))
            if countdown:
                self._sleep(countdown, video_id)

            webpage = self._download_webpage(
                url, video_id, 'Downloading video page',
                data=urlencode_postdata(fields), headers={
                    'Referer': url,
                    'Content-type': 'application/x-www-form-urlencoded',
                })

        title = (

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Confirm the link is dead by opening it in a browser.
  2. Find a re-upload or alternative host for the same content.
  3. Remove the URL from your queue — the file will not come back under the same ID.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    info = ydl.extract_info(url)
except ExtractorError as e:
    if 'does not exist' in str(e):
        drop_from_queue(url)
    else:
        raise

Prevention

When it happens

Trigger: Requesting a video ID whose page shows a file-deleted notice matched by _FILE_NOT_FOUND_REGEXES (checked right after the maintenance-mode check and before form handling).

Common situations: Files removed for inactivity or ToS violations on file lockers; dead links in scraped or archived playlists; mistyped video IDs.

Related errors


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