{"record":{"id":"0f6c1b755a4d8e53","repo":"ytdl-org/youtube-dl","slug":"video-s-no-longer-exists","errorCode":null,"errorMessage":"Video %s no longer exists","messagePattern":"Video (.+?) no longer exists","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/springboardplatform.py","lineNumber":78,"sourceCode":"        mobj = re.match(self._VALID_URL, url)\n        video_id = mobj.group('id') or mobj.group('id_2')\n        index = mobj.group('index') or mobj.group('index_2')\n\n        video = self._download_xml(\n            'http://cms.springboardplatform.com/xml_feeds_advanced/index/%s/rss3/%s'\n            % (index, video_id), video_id)\n\n        item = xpath_element(video, './/item', 'item', fatal=True)\n\n        content = xpath_element(\n            item, './{http://search.yahoo.com/mrss/}content', 'content',\n            fatal=True)\n        title = unescapeHTML(xpath_text(item, './title', 'title', fatal=True))\n\n        video_url = content.attrib['url']\n\n        if 'error_video.mp4' in video_url:\n            raise ExtractorError(\n                'Video %s no longer exists' % video_id, expected=True)\n\n        duration = int_or_none(content.get('duration'))\n        tbr = int_or_none(content.get('bitrate'))\n        filesize = int_or_none(content.get('fileSize'))\n        width = int_or_none(content.get('width'))\n        height = int_or_none(content.get('height'))\n\n        description = unescapeHTML(xpath_text(\n            item, './description', 'description'))\n        thumbnail = xpath_attr(\n            item, './{http://search.yahoo.com/mrss/}thumbnail', 'url',\n            'thumbnail')\n\n        timestamp = unified_timestamp(xpath_text(\n            item, './{http://cms.springboardplatform.com/namespaces.html}created',\n            'timestamp'))\n","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/springboardplatform.py#L60-L96","documentation":"SpringboardPlatformIE reads the mrss <content> element's url attribute; the platform signals a dead video by pointing it at a placeholder clip named 'error_video.mp4'. When that filename appears in the resolved URL, the extractor raises 'Video <id> no longer exists' as an expected error rather than downloading the placeholder.","triggerScenarios":"Extracting any Springboard-hosted video (many local US news sites) whose platform response substitutes error_video.mp4 for the real content URL - i.e. the video was deleted from the Springboard CMS or the publisher's account no longer has it.","commonSituations":"Local-news embeds removed after a retention window (newsroom clips expire routinely); publisher migrating off Springboard leaving dead embeds; typo'd video ids resolving to the error placeholder.","solutions":["Open the article in a browser to confirm the player shows an error/empty state.","Search the site or YouTube for a copy of the clip - news videos are often cross-posted.","Try the Wayback Machine for the page's older embed URL.","If the page plays fine, the extractor's mrss endpoint mapping may be stale - update yt-dlp."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"video_url = content.attrib['url']\nif 'error_video.mp4' in video_url:\n    skip(video_id)  # placeholder means removed","typeGuard":"def is_error_placeholder_url(url: str) -> bool:\n    return 'error_video.mp4' in url","tryCatchPattern":"try:\n    extract(url)\nexcept ExtractorError as e:\n    if 'no longer exists' in str(e):\n        drop(video_id)\n    else:\n        raise","preventionTips":["Test resolved content URLs for the error_video.mp4 placeholder before downloading.","Archive news-site embeds promptly; retention is short.","Use Wayback to recover older embed URLs when articles outlive videos."],"tags":["springboard","dead-link","placeholder-url","extractor"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}