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
- Check the show's page on france.tv for a separately published replay URL and use that instead
- For future live events, record during the broadcast rather than relying on replay
- Accept permanent unavailability for live-only rights (sports, licensed events)
- 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
- Record France TV live streams during broadcast instead of relying on replays
- Do not schedule replay fetches immediately after live end — rights checks decide availability
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
- %s returned error: %s
- The video is not available from your location
- Invalid URL
- %s is not available
- Stream %s is upcoming
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/7a36c816fa9d352b.
Report an issue: GitHub.