tonhowtf/omniget · error

o yt-dlp saiu com erro

Error message

o yt-dlp saiu com erro

What it means

yt-dlp spawned successfully but exited with a non-zero status code. If the collected stderr tail is empty, this generic message is used; otherwise the actual stderr tail is returned as the error. It indicates the download itself failed (network, 403, format unavailable, etc.).

Solutions

  1. Update yt-dlp to the latest version (YouTube changes break old versions)
  2. Check network connectivity and URL validity
  3. Retry the item — the tool supports retry_failed in its options
  4. Capture stderr elsewhere (logs) to see the real cause when the tail is empty

Example fix

// before
run(opts, progress).await?; // fails with generic message
// after
match run(opts, progress).await {
    Err(e) if e.to_string().contains("o yt-dlp saiu com erro") => {
        eprintln!("yt-dlp failed; update yt-dlp and retry");
    }
    other => other?,
}
Defensive patterns

Strategy: retry

Validate before calling

// pre-check: keep yt-dlp updated
let ver = crate::core::ytdlp::ytdlp_command("yt-dlp").arg("--version").output().await?;

Try / catch

match run(opts, progress).await {
    Err(e) if e.to_string().contains("o yt-dlp saiu com erro") => {
        // retry with retry_failed or after updating yt-dlp
    }
    other => other?,
}

Prevention

When it happens

Trigger: `download_one` waits on `child.wait().await`, sees `!status.success()`, and stderr produced no useful text (empty tail) so the fallback message is thrown.

Common situations: yt-dlp crashing before printing anything; killed by signal; stderr not captured due to pipe issue; very old yt-dlp version failing silently against current YouTube.

Understand the failure class

Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/yt_archive.rs:693

    let err_task = tokio::spawn(async move {
        let mut tail: Vec<String> = Vec::new();
        if let Some(e) = stderr {
            let mut lines = BufReader::new(e).lines();
            while let Ok(Some(line)) = lines.next_line().await {
                if tail.len() == 3 {
                    tail.remove(0);
                }
                tail.push(line);
            }
        }
        tail.join(" / ")
    });

    let status = child.wait().await?;
    let file = out_task.await.unwrap_or(None);
    let tail = err_task.await.unwrap_or_default();
    if !status.success() {
        return Err(anyhow!(
            "{}",
            if tail.trim().is_empty() {
                "o yt-dlp saiu com erro".to_string()
            } else {
                tail
            }
        ));
    }
    Ok(file)
}

#[cfg(test)]
mod tests {
    use super::*;

    const FLAT: &str = r#"{
      "_type": "playlist",
      "id": "PL123",

View on GitHub (pinned to 8600b91f42)