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
- Pick a URL that actually points to a video clip on the page.
- If you expected a video, the site may have replaced it — check the current page content.
- 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
- Select links that point to video clips, not games or print pages, when scraping Die Maus.
- Treat this as informational — the extractor correctly identified non-video content.
- Filter candidate URLs by the surrounding page context before queueing.
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
- not a video
- No entry in site's table of contents for this URL. Is the fr
- Invalid path
- Unauthorized user "%s"
- Missing "id" field in extractor result
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/d406b481d13a889d.
Report an issue: GitHub.