ytdl-org/youtube-dl · error · ExtractorError
Video %s no longer exists
Error message
Video %s no longer exists
What it means
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.
Source
Thrown at youtube_dl/extractor/springboardplatform.py:78
mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id') or mobj.group('id_2')
index = mobj.group('index') or mobj.group('index_2')
video = self._download_xml(
'http://cms.springboardplatform.com/xml_feeds_advanced/index/%s/rss3/%s'
% (index, video_id), video_id)
item = xpath_element(video, './/item', 'item', fatal=True)
content = xpath_element(
item, './{http://search.yahoo.com/mrss/}content', 'content',
fatal=True)
title = unescapeHTML(xpath_text(item, './title', 'title', fatal=True))
video_url = content.attrib['url']
if 'error_video.mp4' in video_url:
raise ExtractorError(
'Video %s no longer exists' % video_id, expected=True)
duration = int_or_none(content.get('duration'))
tbr = int_or_none(content.get('bitrate'))
filesize = int_or_none(content.get('fileSize'))
width = int_or_none(content.get('width'))
height = int_or_none(content.get('height'))
description = unescapeHTML(xpath_text(
item, './description', 'description'))
thumbnail = xpath_attr(
item, './{http://search.yahoo.com/mrss/}thumbnail', 'url',
'thumbnail')
timestamp = unified_timestamp(xpath_text(
item, './{http://cms.springboardplatform.com/namespaces.html}created',
'timestamp'))
View on GitHub (pinned to 956b8c5855)
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.
Defensive patterns
Strategy: validation
Validate before calling
video_url = content.attrib['url']
if 'error_video.mp4' in video_url:
skip(video_id) # placeholder means removed Type guard
def is_error_placeholder_url(url: str) -> bool:
return 'error_video.mp4' in url Try / catch
try:
extract(url)
except ExtractorError as e:
if 'no longer exists' in str(e):
drop(video_id)
else:
raise Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/0f6c1b755a4d8e53.
Report an issue: GitHub.