ytdl-org/youtube-dl · error · ExtractorError

Video %s is not available

Error message

Video %s is not available

What it means

Raised by FranceTVSiteIE (france.tv pages) when the downloaded webpage contains the marker \">Ce live n'est plus disponible en replay<\", i.e. the live stream ended and its replay was never published. The expected error names the display id so the user can identify which page failed. This is a permanent availability condition, not transient.

Source

Thrown at youtube_dl/extractor/francetv.py:499

            'title': 'Cantates BWV 4, 106 et 131 de Bach par Raphaël Pichon 5/7',
            'description': 'md5:19c44af004b88219f4daa50fa9a351d4',
            'upload_date': '20180206',
            'timestamp': 1517945220,
            'duration': 5981,
        },
        'params': {
            'skip_download': True,
        },
        'add_ie': [FranceTVIE.ie_key()],
    }]

    def _real_extract(self, url):
        display_id = self._match_id(url)

        webpage = self._download_webpage(url, display_id)

        if ">Ce live n'est plus disponible en replay<" in webpage:
            raise ExtractorError(
                'Video %s is not available' % display_id, expected=True)

        video_id, catalogue = self._search_regex(
            r'["\'>]https?://videos\.francetv\.fr/video/([^@]+@.+?)["\'<]',
            webpage, 'video id').split('@')

        return self._make_url_result(video_id, catalogue)


class FranceTVJeunesseIE(FranceTVBaseInfoExtractor):
    _VALID_URL = r'(?P<url>https?://(?:www\.)?(?:zouzous|ludo)\.fr/heros/(?P<id>[^/?#&]+))'

    _TESTS = [{
        'url': 'https://www.zouzous.fr/heros/simon',
        'info_dict': {
            'id': 'simon',
        },
        'playlist_count': 9,

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Check the show's page on france.tv for a separately published replay URL and use that instead
  2. For future live events, record during the broadcast rather than relying on replay
  3. Accept permanent unavailability for live-only rights (sports, licensed events)
  4. Update youtube-dl/yt-dlp in case page markers changed and detection is stale

Example fix

# before
youtube_dl 'https://www.france.tv/direct/live-event-page.html'
# ERROR: Video live-event-page is not available

# after
yt-dlp 'https://www.france.tv/replay/published-replay-page.html'
Defensive patterns

Strategy: try-catch

Try / catch

try:
    ydl.extract_info(url)
except ExtractorError as e:
    if 'is not available' in str(e) and 'replay' in str(e).lower():
        search_for_published_replay(url)

Prevention

When it happens

Trigger: _real_extract downloads the page for display_id and the literal French replay-unavailable marker is found before the video id regex runs. Occurs for france.tv live pages after the broadcast ends when rights prevent a replay, or for events that were live-only.

Common situations: Automated recording of France TV live events where replay rights differ from broadcast rights; users returning to a live URL hours later expecting a VOD; sports/news content with strict replay windows.

Related errors


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