{"record":{"id":"c95e3b3b2b842b23","repo":"ytdl-org/youtube-dl","slug":"video-s-is-no-longer-available-c95e3b","errorCode":null,"errorMessage":"Video %s is no longer available","messagePattern":"Video (.+?) is no longer available","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/srmediathek.py","lineNumber":48,"sourceCode":"            'ext': 'mp4',\n            'title': 'Love, Cakes and Rock\\'n\\'Roll',\n            'description': 'md5:18bf9763631c7d326c22603681e1123d',\n        },\n        'params': {\n            # m3u8 download\n            'skip_download': True,\n        },\n    }, {\n        'url': 'http://sr-mediathek.de/index.php?seite=7&id=7480',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        webpage = self._download_webpage(url, video_id)\n\n        if '>Der gew&uuml;nschte Beitrag ist leider nicht mehr verf&uuml;gbar.<' in webpage:\n            raise ExtractorError('Video %s is no longer available' % video_id, expected=True)\n\n        media_collection_url = self._search_regex(\n            r'data-mediacollection-ardplayer=\"([^\"]+)\"', webpage, 'media collection url')\n        info = self._extract_media_info(media_collection_url, webpage, video_id)\n        info.update({\n            'id': video_id,\n            'title': get_element_by_attribute('class', 'ardplayer-title', webpage),\n            'description': self._og_search_description(webpage),\n            'thumbnail': self._og_search_thumbnail(webpage),\n        })\n        return info\n","sourceCodeStart":30,"sourceCodeEnd":60,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/srmediathek.py#L30-L60","documentation":"Raised by SRMediathekIE when the SR-Mediathek (saechsischer Rundfunk) page for the matched video id contains the marker text '>Der gew&uuml;nschte Beitrag ist leider nicht mehr verf&uuml;gbar.<' ('The desired contribution is unfortunately no longer available'). It is marked expected=True, so youtube-dl treats it as a known site condition rather than a bug. The video was taken down by the broadcaster.","triggerScenarios":"Calling the extractor with a URL like http://sr-mediathek.de/index.php?seite=7&id=<id> where the downloaded webpage contains that German unavailability marker (HTML-escaped).","commonSituations":"Users downloading old ARD/SR media library links whose content expired; test URLs in playlists that have rotted since the extractor was written.","solutions":["Accept that the video is gone: the content was removed server-side, no client change recovers it.","Find the same content on the current ARD Mediathek (ardmediathek.de) or the broadcaster's YouTube mirror and use that URL instead.","If running a bulk job, catch ExtractorError and check .expected / the message to skip dead entries instead of aborting the whole playlist."],"exampleFix":"# before: dead link aborts a batch download\n# after: skip expected unavailability errors\ntry:\n    ydl.extract_info(url, download=True)\nexcept ExtractorError as e:\n    if e.expected and 'no longer available' in str(e):\n        log.warning('skipping dead video: %s', url)\n    else:\n        raise","handlingStrategy":"try-catch","validationCode":"# Pre-check availability marker on the page (mirror of extractor logic)\nimport re\nfrom youtube_dl.utils import int_or_none  # not needed; keep deps minimal\npage = ydl.urlopen('http://sr-mediathek.de/index.php?seite=7&id=%s' % vid).read().decode('utf-8', 'replace')\nif '>Der gew&uuml;nschte Beitrag ist leider nicht mehr verf&uuml;gbar.<' in page:\n    print('skip: taken down')","typeGuard":null,"tryCatchPattern":"try:\n    info = ydl.extract_info(url)\nexcept ExtractorError as e:\n    if e.expected and 'no longer available' in str(e):\n        continue  # dead broadcaster video, skip\n    raise","preventionTips":["Treat SR Mediathek links as perishable; archive promptly after publication.","In playlist jobs, catch expected ExtractorErrors per-entry instead of aborting the run.","Prefer current ARD Mediathek URLs over legacy sr-mediathek.de links."],"tags":["site-unavailable","geo-restricted","expected-error","extractor"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}