ytdl-org/youtube-dl · error · ExtractorError
%s is offline
Error message
%s is offline
What it means
Raised by TrovoIE when the GraphQL getLiveInfo response reports isLive == 0 for the requested channel: the streamer exists but is not currently broadcasting. Expected=True, so it reads as a normal 'channel offline' condition.
Source
Thrown at youtube_dl/extractor/trovo.py:56
programInfo {
coverUrl
id
streamInfo {
desc
playUrl
}
title
}
streamerInfo {
nickName
uid
userName
}
}
}''' % username,
})['data']['getLiveInfo']
if live_info.get('isLive') == 0:
raise ExtractorError('%s is offline' % username, expected=True)
program_info = live_info['programInfo']
program_id = program_info['id']
title = self._live_title(program_info['title'])
formats = []
for stream_info in (program_info.get('streamInfo') or []):
play_url = stream_info.get('playUrl')
if not play_url:
continue
format_id = stream_info.get('desc')
formats.append({
'format_id': format_id,
'height': int_or_none(format_id[:-1]) if format_id else None,
'url': play_url,
})
self._sort_formats(formats)
info = {View on GitHub (pinned to 956b8c5855)
Solutions
- Check the channel page — if it shows no live player, wait until the streamer is live and retry
- If you wanted a past stream, use the channel's video/clip URL (TrovoVODIE/TrovoChannelIE in newer versions), not the live URL
- For 24/7 monitors, catch this expected error and retry on a schedule instead of crashing
- Update to yt-dlp for current Trovo support
Defensive patterns
Strategy: retry
Try / catch
try:
ydl.extract_info(trovo_url)
except ExtractorError as e:
if e.expected and 'is offline' in str(e):
schedule_retry(trovo_url, interval=300) # poll until live Prevention
- For 24/7 recording, poll the channel and start on first success
- Use VOD/clip URLs for finished streams instead of the live URL
- Treat offline as transient, not fatal
When it happens
Trigger: Running the extractor on https://trovo.live/s/<username> (or clip-less channel URL) while the channel is offline; the API succeeds and returns programInfo-less liveInfo with isLive:0.
Common situations: Monitoring scripts polling live channels; following schedule links after a stream ended; VOD/clip URLs mis-pasted as live channel URLs.
Related errors
AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14).
Data as JSON: /api/errors/7009dd973398d209.
Report an issue: GitHub.