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

  1. Check the channel page — if it shows no live player, wait until the streamer is live and retry
  2. If you wanted a past stream, use the channel's video/clip URL (TrovoVODIE/TrovoChannelIE in newer versions), not the live URL
  3. For 24/7 monitors, catch this expected error and retry on a schedule instead of crashing
  4. 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

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.