ytdl-org/youtube-dl · error · ExtractorError
Video %s does not exist
Error message
Video %s does not exist
What it means
Raised by StreamcloudIE when the initial page for the matched id contains '>File Not Found<'. Marked expected=True. The id was accepted by the URL pattern but the host has no such file — deleted, expired, or never existed.
Source
Thrown at youtube_dl/extractor/streamcloud.py:38
'info_dict': {
'id': 'skp9j99s4bpz',
'ext': 'mp4',
'title': 'youtube-dl test video \'/\\ ä ↭',
},
'skip': 'Only available from the EU'
}, {
'url': 'http://streamcloud.eu/ua8cmfh1nbe6/NSHIP-148--KUC-NG--H264-.mp4.html',
'only_matching': True,
}]
def _real_extract(self, url):
video_id = self._match_id(url)
url = 'http://streamcloud.eu/%s' % video_id
orig_webpage = self._download_webpage(url, video_id)
if '>File Not Found<' in orig_webpage:
raise ExtractorError(
'Video %s does not exist' % video_id, expected=True)
fields = re.findall(r'''(?x)<input\s+
type="(?:hidden|submit)"\s+
name="([^"]+)"\s+
(?:id="[^"]+"\s+)?
value="([^"]*)"
''', orig_webpage)
self._sleep(6, video_id)
webpage = self._download_webpage(
url, video_id, data=urlencode_postdata(fields), headers={
b'Content-Type': b'application/x-www-form-urlencoded',
})
try:
title = self._html_search_regex(View on GitHub (pinned to 956b8c5855)
Solutions
- Confirm the file is gone by opening the streamcloud.eu URL in a browser.
- Locate a re-upload of the file (streamcloud links rotate frequently) or another host for the same content.
- In bulk jobs, catch this expected error and drop the dead link instead of aborting.
Defensive patterns
Strategy: validation
Validate before calling
# Pre-check file existence on streamcloud
html = ydl.urlopen('http://streamcloud.eu/%s' % vid).read().decode('utf-8', 'replace')
if '>File Not Found<' in html:
print('dead streamcloud link: %s' % vid) Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if e.expected and 'does not exist' in str(e):
drop_dead_link(url)
else:
raise Prevention
- Never queue unchecked streamcloud links — most die from inactivity deletion.
- Scrape a fresh mirror URL at download time rather than caching old ones.
- Filter expected 'does not exist' errors in crawlers.
When it happens
Trigger: Extracting any http://streamcloud.eu/<id> URL whose page renders the 'File Not Found' marker.
Common situations: Streamcloud deletes files after inactivity periods; dead links scraped from forums/old posts; typo'd or truncated ids in copied URLs.
Related errors
- Video %s is no longer available
- %s said: %s
- This video is no longer available.
- %s said: %s
- Unable to login: %s
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/8f22c8a857239098.
Report an issue: GitHub.