ytdl-org/youtube-dl · warning · ExtractorError

%s is not a video

Error message

%s is not a video

What it means

Raised by the WDR Maus extractor when the XML metadata for a table-of-contents entry has no ./movie/zmdb_url element. Such entries are non-video content (games, print pages, interactive features), so the extractor refuses and tells the user the ID is not a video.

Source

Thrown at youtube_dl/extractor/wdr.py:333

        display_id = self._match_id(url)

        # Table of Contents seems to always be at this address, so fetch it directly.
        # The website fetches configurationJS.php5, which links to tableOfContentsJS.php5.
        table_of_contents = self._download_json(
            'https://www.wdrmaus.de/elefantenseite/data/tableOfContentsJS.php5',
            display_id)
        if display_id not in table_of_contents:
            raise ExtractorError(
                'No entry in site\'s table of contents for this URL. '
                'Is the fragment part of the URL (after the #) correct?',
                expected=True)
        xml_metadata_path = table_of_contents[display_id]['xmlPath']
        xml_metadata = self._download_xml(
            'https://www.wdrmaus.de/elefantenseite/' + xml_metadata_path,
            display_id)
        zmdb_url_element = xml_metadata.find('./movie/zmdb_url')
        if zmdb_url_element is None:
            raise ExtractorError(
                '%s is not a video' % display_id, expected=True)
        return self.url_result(zmdb_url_element.text, ie=WDRIE.ie_key())


class WDRMobileIE(InfoExtractor):
    _VALID_URL = r'''(?x)
        https?://mobile-ondemand\.wdr\.de/
        .*?/fsk(?P<age_limit>[0-9]+)
        /[0-9]+/[0-9]+/
        (?P<id>[0-9]+)_(?P<title>[0-9]+)'''
    IE_NAME = 'wdr:mobile'
    _WORKING = False  # no such domain
    _TEST = {
        'url': 'http://mobile-ondemand.wdr.de/CMS2010/mdb/ondemand/weltweit/fsk0/42/421735/421735_4283021.mp4',
        'info_dict': {
            'title': '4283021',
            'id': '421735',
            'ext': 'mp4',

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Pick a URL that actually points to a video clip on the page.
  2. If you expected a video, the site may have replaced it — check the current page content.
  3. No extractor fix is needed; this is correct behavior for non-video entries.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    info = ydl.extract_info(url)
except ExtractorError as e:
    if 'is not a video' in str(e):
        skip_non_video(url)
    else:
        raise

Prevention

When it happens

Trigger: A valid table-of-contents entry whose XML (at the xmlPath the TOC provides) lacks the movie/zmdb_url node; i.e. the URL points at a Die Maus interactive/print item instead of a video.

Common situations: Following links to games or coloring pages in the children's section; assuming every Elefantenseite fragment is a video.

Related errors


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