tonhowtf/omniget · error
No media URL available
Error message
No media URL available
What it means
Thrown in download when info.available_qualities is empty after fetching media info, meaning no downloadable media URL was resolved for the Twitch resource. The downloader takes the first (or quality-matched) entry from that list, so an empty list makes selection impossible.
Solutions
- Check the media actually exists and is playable on Twitch
- Inspect media_info extraction logs for filtered-out formats
- Handle sub-only/removed content explicitly before calling download
- Retry with quality=None to accept the default
Example fix
// before
let first = info.available_qualities.first().ok_or_else(|| anyhow!("No media URL available"))?;
// after
if info.available_qualities.is_empty() {
anyhow::bail!("No media URL available for {} (removed, sub-only, or unsupported)", opts.url);
}
let first = &info.available_qualities[0]; Defensive patterns
Strategy: validation
Validate before calling
// check before download
if info.available_qualities.is_empty() {
// skip download or surface a user-facing 'media unavailable' state
} Try / catch
match downloader.download(opts).await {
Err(e) if e.to_string() == "No media URL available" => {
ui.show_unavailable(&opts.url);
}
Err(e) => return Err(e.into()),
Ok(path) => ui.show_done(path),
} Prevention
- Verify the media is playable in a browser before batch downloading
- Skip sub-only or members-only content explicitly
- Check available_qualities length before invoking download
- Keep extraction parsers updated against the live player API
When it happens
Trigger: native_get_media_info returned Ok with zero entries in available_qualities — e.g. the token/url extraction found formats but all were filtered out, or extraction silently produced nothing.
Common situations: VOD/clip deleted or sub-only so no playable formats exist; all qualities unsupported (e.g. only HLS ads); parsing bug after a Twitch player API change.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- Track sem metadata pra resolver no YouTube
- No video quality available
- Track sem soundcloud_id
- SoundCloud nao retornou URL
- Spotify SDK device not ready
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/052d2999b8027191.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/platforms/twitch.rs:327
opts.download_mode.as_deref(),
opts.format_id.as_deref(),
opts.filename_template.as_deref(),
opts.referer.as_deref().or(Some("https://www.twitch.tv/")),
opts.cancel_token.clone(),
None,
opts.concurrent_fragments,
false,
&[],
opts.audio_format.as_deref(),
)
.await;
}
}
let first = info
.available_qualities
.first()
.ok_or_else(|| anyhow!("No media URL available"))?;
let selected = if let Some(ref wanted) = opts.quality {
info.available_qualities
.iter()
.find(|q| q.label == *wanted)
.unwrap_or(first)
} else {
first
};
let filename = format!(
"{}_{}.mp4",
sanitize_filename::sanitize(&info.title),
selected.label
);
let output_path = opts.output_dir.join(&filename);
let total_bytes = direct_downloader::download_direct(View on GitHub (pinned to 8600b91f42)