tonhowtf/omniget · error · anyhow::Error

No media URL available

Error message

No media URL available

What it means

After resolving media info, info.available_qualities is empty (the `first` lookup found nothing) — no clip variant with a playable media URL exists for this content. The clip's video is still processing, was removed, or every quality sourceURL is unavailable, so download has nothing to fetch.

Solutions

  1. Wait and retry if the clip was just published — qualities appear after processing
  2. Verify the clip still plays on twitch.tv
  3. Update the app/gallery backend if the schema changed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src-tauri/src/platforms/twitch/mod.rs:327 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/0c2ae4b5b18f60ed. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/src/platforms/twitch/mod.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)