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

  1. Open the article in a browser to confirm the player shows an error/empty state.
  2. Search the site or YouTube for a copy of the clip - news videos are often cross-posted.
  3. Try the Wayback Machine for the page's older embed URL.
  4. 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

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.