ytdl-org/youtube-dl · warning · ExtractorError

clean_html(container_div)

Error message

clean_html(container_div)

What it means

Raised by the XFileShare-family extractor when the embed page's container div contains '>This server is in maintenance mode.'. The full container markup is passed through clean_html and raised verbatim, so the user sees the host's maintenance notice text.

Source

Thrown at youtube_dl/extractor/xfileshare.py:207

        def yield_urls():
            for regex in cls._EMBED_REGEX:
                for mobj in re.finditer(regex, webpage):
                    yield mobj.group('url')

        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,

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Wait and retry later — maintenance mode is temporary by definition.
  2. Try a mirror of the same video on another host from the extractor's _VALID_URL list.
  3. Check the host's main site in a browser to confirm the maintenance notice.
  4. In batch runs, use --ignore-errors and requeue failed items after a delay.
Defensive patterns

Strategy: retry

Validate before calling

if 'This server is in maintenance mode' in webpage:
    schedule_retry(url, delay_hours=6)

Try / catch

try:
    info = ydl.extract_info(url)
except ExtractorError as e:
    if 'maintenance mode' in str(e):
        requeue_later(url, delay=6 * 3600)
    else:
        raise

Prevention

When it happens

Trigger: Downloading from any of the many XFileShare mirrors (govid.me, vidlo.us, etc.) while the specific host displays its maintenance-mode banner in the #container element.

Common situations: File-locker hosts going down for maintenance or being seized; per-host outages while sister mirrors still work; link lists spanning many unstable mirrors.

Related errors


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