{"record":{"id":"8f22c8a857239098","repo":"ytdl-org/youtube-dl","slug":"video-s-does-not-exist-8f22c8","errorCode":null,"errorMessage":"Video %s does not exist","messagePattern":"Video (.+?) does not exist","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/streamcloud.py","lineNumber":38,"sourceCode":"        'info_dict': {\n            'id': 'skp9j99s4bpz',\n            'ext': 'mp4',\n            'title': 'youtube-dl test video  \\'/\\\\ ä ↭',\n        },\n        'skip': 'Only available from the EU'\n    }, {\n        'url': 'http://streamcloud.eu/ua8cmfh1nbe6/NSHIP-148--KUC-NG--H264-.mp4.html',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        url = 'http://streamcloud.eu/%s' % video_id\n\n        orig_webpage = self._download_webpage(url, video_id)\n\n        if '>File Not Found<' in orig_webpage:\n            raise ExtractorError(\n                'Video %s does not exist' % video_id, expected=True)\n\n        fields = re.findall(r'''(?x)<input\\s+\n            type=\"(?:hidden|submit)\"\\s+\n            name=\"([^\"]+)\"\\s+\n            (?:id=\"[^\"]+\"\\s+)?\n            value=\"([^\"]*)\"\n            ''', orig_webpage)\n\n        self._sleep(6, video_id)\n\n        webpage = self._download_webpage(\n            url, video_id, data=urlencode_postdata(fields), headers={\n                b'Content-Type': b'application/x-www-form-urlencoded',\n            })\n\n        try:\n            title = self._html_search_regex(","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/streamcloud.py#L20-L56","documentation":"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.","triggerScenarios":"Extracting any http://streamcloud.eu/<id> URL whose page renders the 'File Not Found' marker.","commonSituations":"Streamcloud deletes files after inactivity periods; dead links scraped from forums/old posts; typo'd or truncated ids in copied URLs.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Pre-check file existence on streamcloud\nhtml = ydl.urlopen('http://streamcloud.eu/%s' % vid).read().decode('utf-8', 'replace')\nif '>File Not Found<' in html:\n    print('dead streamcloud link: %s' % vid)","typeGuard":null,"tryCatchPattern":"try:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    if e.expected and 'does not exist' in str(e):\n        drop_dead_link(url)\n    else:\n        raise","preventionTips":["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."],"tags":["file-deleted","site-unavailable","expected-error"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}