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

  1. Confirm the file is gone by opening the streamcloud.eu URL in a browser.
  2. Locate a re-upload of the file (streamcloud links rotate frequently) or another host for the same content.
  3. 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

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


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