tonhowtf/omniget · error
Livestreams not supported
Error message
Livestreams not supported
What it means
parse_video_info inspects the yt-dlp JSON's is_live field; when it is true the media is a live broadcast (or an in-progress livestream), which this library deliberately does not support, so it fails fast instead of producing an unusable MediaInfo.
Solutions
- Wait until the livestream has ended and YouTube has published the VOD, then retry.
- Detect live URLs (or pre-check is_live) and surface a friendly 'livestream not supported' message to the user before download.
- For live capture, use yt-dlp directly with --live-from-start or a dedicated recording tool; this library will not handle it.
- Filter channel/playlist entries so live items are skipped rather than failing the whole batch.
Defensive patterns
Strategy: try-catch
Try / catch
match platform.get_media_info(url).await {
Ok(info) => handle(info),
Err(e) if e.to_string().contains("Livestreams not supported") => {
notify_user("This is a livestream; try again after it ends.");
}
Err(e) => return Err(e),
} Prevention
- Pre-check is_live via yt-dlp --dump-json before batch processing
- Filter live/premiere items out of channel or playlist queues
- Show a clear UI message distinguishing live streams from downloadable VODs
- Retry ended streams later once the VOD is published
When it happens
Trigger: Calling get_media_info/fetch_with_ytdlp on a URL that points to a YouTube livestream currently in progress, or a completed stream yt-dlp still marks as live; also pasting /live/<id> URLs that resolve to a live stream.
Common situations: Users paste a link to a stream that is airing right now; yt-dlp reports is_live true for premieres or upcoming-but-started broadcasts; automated pipelines process channel feeds that mix VODs and live streams.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- yt-dlp falhou
- não achei nenhum vídeo nessa URL (Watch Later precisa da…
- Playlist empty or unavailable
- YouTube requires yt-dlp. Failed to get yt-dlp
- Livestreams not supported
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/b9a9d34d3f0bbb40.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/platforms/youtube.rs:162
.or_else(|| json.get("channel"))
.and_then(|v| v.as_str())
.unwrap_or("unknown")
.to_string();
let duration = json.get("duration").and_then(|v| v.as_f64());
let thumbnail = json
.get("thumbnail")
.and_then(|v| v.as_str())
.map(|s| s.to_string());
let is_live = json
.get("is_live")
.and_then(|v| v.as_bool())
.unwrap_or(false);
if is_live {
return Err(anyhow!("Livestreams not supported"));
}
let mut qualities: Vec<MediaVideoQuality> = Vec::new();
let mut seen_heights: HashSet<u32> = HashSet::new();
if let Some(formats) = json.get("formats").and_then(|v| v.as_array()) {
for f in formats {
let height = f.get("height").and_then(|v| v.as_u64()).unwrap_or(0) as u32;
let width = f.get("width").and_then(|v| v.as_u64()).unwrap_or(0) as u32;
let vcodec = f.get("vcodec").and_then(|v| v.as_str()).unwrap_or("none");
let acodec = f.get("acodec").and_then(|v| v.as_str()).unwrap_or("none");
if vcodec == "none" || height == 0 {
continue;
}
let has_audio = acodec != "none";
View on GitHub (pinned to 8600b91f42)