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
- Wait and retry later — maintenance mode is temporary by definition.
- Try a mirror of the same video on another host from the extractor's _VALID_URL list.
- Check the host's main site in a browser to confirm the maintenance notice.
- 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
- Mark maintenance-mode failures as retryable in job queues; other failures as permanent.
- Keep alternative mirror URLs for the same content.
- Probe host availability before launching large batches against file lockers.
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
- Video %s does not exist
- Invalid path
- Unauthorized user "%s"
- Missing "id" field in extractor result
- Missing "title" field in extractor result
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/904d3ad23418b94b.
Report an issue: GitHub.