ytdl-org/youtube-dl · error · ExtractorError
Content is no longer available
Error message
Content is no longer available
What it means
Raised by the ORF TVthek extractor when the video webpage contains the German 'Nicht mehr verfügbar' (no longer available) marker div. ORF deliberately avoids HTTP 410/404 for removed TV content, so the extractor must sniff the HTML. Marked expected=True, so it is a site-side content-removal condition, not a downloader bug.
Source
Thrown at youtube_dl/extractor/orf.py:610
'_embedded', 'subtitle',
('xml_url', 'sami_url', 'stl_url', 'ttml_url', 'srt_url', 'vtt_url'),
T(url_or_none))):
self._merge_subtitles({'de': [{'url': sub_url}]}, target=subtitles)
return merge_dicts({
'id': video_id,
'formats': formats,
'subtitles': subtitles,
# '_old_archive_ids': [self._downloader._make_archive_id({'ie_key': 'ORFTVthek', 'id': video_id})],
}, self._parse_metadata(api_json), rev=True)
def _real_extract(self, url):
video_id, segment_id = self._match_valid_url(url).group('id', 'segment')
webpage = self._download_webpage(url, video_id)
# ORF doesn't like 410 or 404
if self._search_regex(r'<div\b[^>]*>\s*(Nicht mehr verfügbar)\s*</div>', webpage, 'Availability', default=False):
raise ExtractorError('Content is no longer available', expected=True, video_id=video_id)
return merge_dicts({
'id': video_id,
'title': self._html_search_meta(['og:title', 'twitter:title'], webpage, default=None),
'description': self._html_search_meta(
['description', 'og:description', 'twitter:description'], webpage, default=None),
}, self._search_json_ld(webpage, video_id, default={}),
self._extract_video(video_id, segment_id),
rev=True)
class ORFONIE(ORFONBase):
IE_NAME = 'orf:on'
_VALID_URL = r'https?://on\.orf\.at/video/(?P<id>\d+)(?:/(?P<segment>\d+))?'
_TESTS = [{
'url': 'https://on.orf.at/video/14210000/school-of-champions-48',
'info_dict': {
'id': '14210000',View on GitHub (pinned to 956b8c5855)
Solutions
- Accept that ORF has expired the content and find a re-broadcast or alternative source
- Extract promptly after broadcast while content is still in ORF's on-demand window
- Check the URL in a browser to confirm the 'Nicht mehr verfügbar' page before debugging the extractor
Defensive patterns
Strategy: try-catch
Try / catch
try:
ydl.download([url])
except ExtractorError as e:
if e.expected and 'no longer available' in str(e):
log.info('ORF expired this item; skipping')
else:
raise Prevention
- Download ORF TVthek items within the on-demand retention window
- Check e.expected before surfacing errors to users
- Schedule recordings soon after broadcast ends
When it happens
Trigger: Extracting any ORF TVthek URL (video or segment) whose webpage renders '<div ...>Nicht mehr verfügbar</div>'. The regex looks for that exact German text inside a div, so only German-locale removal pages (the default served to the extractor) trigger it.
Common situations: ORF removed the broadcast after its retention window (typically 7 days); user saved a link weeks later; ORF changed the removal page wording, in which case extraction instead fails later with missing metadata rather than this error.
Related errors
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/9ac66eb800cab0dc.
Report an issue: GitHub.