tonhowtf/omniget · error
o yt-dlp não está instalado
Error message
o yt-dlp não está instalado
What it means
ytdlp_path resolves the yt-dlp executable via find_tool("yt-dlp"). If the tool is not found anywhere it searches, it throws "o yt-dlp não está instalado". yt-dlp is an external binary dependency, so the archive feature cannot run without it.
Solutions
- Install yt-dlp (pip install yt-dlp, brew install yt-dlp, or the app's built-in dependency installer).
- Ensure the yt-dlp binary's directory is on PATH and the binary is named exactly "yt-dlp".
- Verify with `yt-dlp --version` in a terminal that it resolves.
- If bundled, re-run the app's dependency download step so find_tool locates it.
Example fix
// before
let out = run_ytdlp(&args).await?;
// after
if crate::core::dependencies::find_tool("yt-dlp").await.is_none() {
eprintln!("instale o yt-dlp primeiro (pip install yt-dlp)");
return Ok(());
}
let out = run_ytdlp(&args).await?; Defensive patterns
Strategy: validation
Validate before calling
// Rust
let installed = crate::core::dependencies::find_tool("yt-dlp").await.is_some();
if !installed {
eprintln!("instale o yt-dlp antes de usar o arquivo (pip install yt-dlp)");
return Ok(());
} Try / catch
match yt_archive::run(&opts, &progress).await {
Ok(r) => use(r),
Err(e) if e.to_string().contains("não está instalado") => {
eprintln!("instale yt-dlp: pip install yt-dlp");
}
Err(e) => return Err(e),
} Prevention
- Run the app's dependency check/installer on startup
- Ensure yt-dlp is on PATH and named exactly "yt-dlp"
- Verify with `yt-dlp --version` in deployment scripts
- Bundle or auto-download yt-dlp as part of installation
When it happens
Trigger: Calling run_ytdlp or run when yt-dlp is not on PATH and not installed in the app's managed tools directory.
Common situations: Fresh install where the in-app dependency downloader was never run; yt-dlp removed from PATH; using a venv/container without the binary; yt-dlp installed under a different name (e.g. youtube-dl).
Understand the failure class
Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.
Related errors
- Vimeo requires yt-dlp. Failed to get yt-dlp
- Connection timed out. Check your internet and try again.
- Download reported success but no matching file appeared in
- Failed to access the page. Check the link and your…
- Failed to download yt-dlp: HTTP
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/bcab8163886403a4.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/yt_archive.rs:57
if let Some(p) = &self.path {
args.push("--cookies".to_string());
args.push(p.to_string_lossy().to_string());
}
}
}
impl Drop for CookieFile {
fn drop(&mut self) {
if let Some(p) = &self.path {
let _ = std::fs::remove_file(p);
}
}
}
async fn ytdlp_path() -> anyhow::Result<PathBuf> {
crate::core::dependencies::find_tool("yt-dlp")
.await
.ok_or_else(|| anyhow!("o yt-dlp não está instalado"))
}
/// Roda o yt-dlp e devolve a saída padrão. Erro traz o fim do stderr.
pub async fn run_ytdlp(args: &[String]) -> anyhow::Result<String> {
let bin = ytdlp_path().await?;
let out = crate::core::ytdlp::ytdlp_command(&bin)
.args(args)
.stdin(std::process::Stdio::null())
.output()
.await
.map_err(|e| anyhow!("o yt-dlp não iniciou: {}", e))?;
if !out.status.success() {
let err = String::from_utf8_lossy(&out.stderr);
let tail: Vec<&str> = err.lines().rev().take(3).collect();
return Err(anyhow!(
"yt-dlp falhou: {}",
tail.into_iter().rev().collect::<Vec<_>>().join(" / ")
));View on GitHub (pinned to 8600b91f42)