ytdl-org/youtube-dl · error · ExtractorError
Video %s is no longer available
Error message
Video %s is no longer available
What it means
Raised by the KeezMovies extractor when no playable formats were found and the downloaded page contains the marker title="This video is no longer available". It is expected=True, so it surfaces as a clean 'video unavailable' message rather than a stack trace. The site returns this page for taken-down or removed videos.
Source
Thrown at youtube_dl/extractor/keezmovies.py:104
duration = int_or_none(flashvars.get('video_duration'))
encrypted = flashvars.get('encrypted') is True
for key, value in flashvars.items():
mobj = re.search(r'quality_(\d+)[pP]', key)
if mobj:
extract_format(value, int(mobj.group(1)))
video_url = flashvars.get('video_url')
if video_url and determine_ext(video_url, None):
extract_format(video_url)
video_url = self._html_search_regex(
r'flashvars\.video_url\s*=\s*(["\'])(?P<url>http.+?)\1',
webpage, 'video url', default=None, group='url')
if video_url:
extract_format(compat_urllib_parse_unquote(video_url))
if not formats:
if 'title="This video is no longer available"' in webpage:
raise ExtractorError(
'Video %s is no longer available' % video_id, expected=True)
try:
self._sort_formats(formats)
except ExtractorError:
if fatal:
raise
if not title:
title = self._html_search_regex(
r'<h1[^>]*>([^<]+)', webpage, 'title')
return webpage, {
'id': video_id,
'display_id': display_id,
'title': strip_or_none(title),
'thumbnail': thumbnail,
'duration': duration,View on GitHub (pinned to 956b8c5855)
Solutions
- Accept that the video is removed at the source; there is nothing to download
- Search the site for a re-upload or mirror and use that URL instead
- If you archived the page earlier, try the Wayback Machine for the original flashvars
- Verify you are on the correct video page (correct video_id) and not redirected to a stub
Defensive patterns
Strategy: try-catch
Validate before calling
def keez_video_available(page_html):
return 'title="This video is no longer available"' not in page_html Try / catch
try:
ydl.extract_info(url)
except ExtractorError as e:
if 'no longer available' in str(e):
mark_removed(url) # record and skip permanently
else:
raise Prevention
- Treat this error as permanent in bulk jobs: blacklist the URL instead of retrying
- Validate links against a recent crawl of the site before batch downloading
When it happens
Trigger: Downloading any keezmovies URL whose webpage includes the literal string 'title="This video is no longer available"' while flashvars.video_url extraction produced no usable formats (video_url missing or determine_ext could not infer an extension).
Common situations: DMCA takedowns or uploader deletions; following links from old aggregator pages whose videos were removed; regional removals where the stub page still serves the marker; saved bookmarks to deleted content.
Related errors
- The video is not available, Facebook said: "%s"
- Video %s is not available
- This video has been removed in response to a complaint recei
- error
- %s said: %s
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/36bac917c0efc706.
Report an issue: GitHub.