{"record":{"id":"35faaf40abd05acf","repo":"ytdl-org/youtube-dl","slug":"no-entry-in-site-s-table-of-contents-for-this-url","errorCode":null,"errorMessage":"No entry in site's table of contents for this URL. Is the fragment part of the URL (after the #) correct?","messagePattern":"No entry in site's table of contents for this URL\\. Is the fragment part of the URL \\(after the #\\) correct\\?","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/wdr.py","lineNumber":323,"sourceCode":"        'info_dict': {\n            'title': 'Wippe',\n            'id': 'mdb-1198320',\n            'ext': 'mp4',\n            'age_limit': None,\n            'upload_date': '20071003'\n        },\n    }\n\n    def _real_extract(self, url):\n        display_id = self._match_id(url)\n\n        # Table of Contents seems to always be at this address, so fetch it directly.\n        # The website fetches configurationJS.php5, which links to tableOfContentsJS.php5.\n        table_of_contents = self._download_json(\n            'https://www.wdrmaus.de/elefantenseite/data/tableOfContentsJS.php5',\n            display_id)\n        if display_id not in table_of_contents:\n            raise ExtractorError(\n                'No entry in site\\'s table of contents for this URL. '\n                'Is the fragment part of the URL (after the #) correct?',\n                expected=True)\n        xml_metadata_path = table_of_contents[display_id]['xmlPath']\n        xml_metadata = self._download_xml(\n            'https://www.wdrmaus.de/elefantenseite/' + xml_metadata_path,\n            display_id)\n        zmdb_url_element = xml_metadata.find('./movie/zmdb_url')\n        if zmdb_url_element is None:\n            raise ExtractorError(\n                '%s is not a video' % display_id, expected=True)\n        return self.url_result(zmdb_url_element.text, ie=WDRIE.ie_key())\n\n\nclass WDRMobileIE(InfoExtractor):\n    _VALID_URL = r'''(?x)\n        https?://mobile-ondemand\\.wdr\\.de/\n        .*?/fsk(?P<age_limit>[0-9]+)","sourceCodeStart":305,"sourceCodeEnd":341,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/wdr.py#L305-L341","documentation":"Raised by the WDR Maus extractor when the display_id from the URL fragment is not a key in the tableOfContentsJS.php5 JSON. Die Maus pages address videos via the #fragment of the URL, so a missing or mistyped fragment means the site's table of contents has no entry for it.","triggerScenarios":"Extracting a wdrmaus.de/elefantenseite URL whose fragment-derived display_id is absent from https://www.wdrmaus.de/elefantenseite/data/tableOfContentsJS.php5 — wrong, stale, or truncated fragment.","commonSituations":"Copying the URL without the #fragment part; renaming on the site that changed fragment identifiers; old links after WDR reorganized the Elefantenseite.","solutions":["Re-copy the full URL including everything after the # from the site.","Open the page in a browser and confirm the fragment matches the current entry.","Browse the site to find the current URL for the same episode."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"toc = fetch_json('https://www.wdrmaus.de/elefantenseite/data/tableOfContentsJS.php5')\ndisplay_id = url.split('#', 1)[1] if '#' in url else None\nif display_id not in toc:\n    print('fragment missing or wrong — copy full URL with #')","typeGuard":"def has_toc_entry(display_id: str, toc: dict) -> bool:\n    return display_id in toc and 'xmlPath' in toc[display_id]","tryCatchPattern":"try:\n    info = ydl.extract_info(url)\nexcept ExtractorError as e:\n    if 'table of contents' in str(e):\n        flag_broken_fragment(url)\n    else:\n        raise","preventionTips":["Always copy Die Maus URLs together with the #fragment — it is the identifier.","Strip nothing after # when sanitizing URLs in pipelines.","Re-check old links after WDR site reorganizations."],"tags":["url-fragment","site-error","extractor","wdr","children"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}