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

  1. Accept that the video is removed at the source; there is nothing to download
  2. Search the site for a re-upload or mirror and use that URL instead
  3. If you archived the page earlier, try the Wayback Machine for the original flashvars
  4. 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

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


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/36bac917c0efc706. Report an issue: GitHub.