tonhowtf/omniget · error

gallery-dl nao esta instalado

Error message

gallery-dl nao esta instalado

What it means

Dependency check failure in the gallery downloader: download() calls ensure_gallerydl() which locates (or installs) the gallery-dl binary; when that returns None the download aborts before creating the destination or spawning the process. It fires when gallery-dl cannot be found or provisioned — not installed, not on PATH, or its auto-install step failed.

Solutions

  1. Run the app's gallery install action (gallery::install) first
  2. Install gallery-dl manually: pip install gallery-dl, or grab the standalone exe into PATH
  3. Confirm `gallery-dl --version` works from a terminal with the same PATH
Defensive patterns

Strategy: fallback

Validate before calling

// check binary presence before downloading
let ok = which::which("gallery-dl").is_ok()
    || crate::core::dependencies::ensure_gallerydl().await.is_some();

Try / catch

match gallery::download(url, dest, cookies, progress).await {
    Ok(r) => r,
    Err(e) if e.to_string().contains("nao esta instalado") => {
        gallery::install().await?;
        gallery::download(url, dest, cookies, progress).await?
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Calling download() when gallery-dl is absent from PATH and could not be downloaded/located automatically.

Common situations: User skipped the install step; gallery-dl uninstalled after install; PATH changed in the spawned environment; auto-download blocked offline.

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


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/gallery.rs:50

}

#[derive(Debug, Clone, Serialize)]
pub struct GalleryResult {
    pub files: Vec<String>,
    pub dest: String,
    pub log_tail: String,
}

pub async fn download(
    url: &str,
    dest: &str,
    cookies_file: Option<&str>,
    progress: super::ProgressFn,
) -> anyhow::Result<GalleryResult> {
    use tokio::io::{AsyncBufReadExt, BufReader};
    let bin = crate::core::dependencies::ensure_gallerydl()
        .await
        .ok_or_else(|| anyhow!("gallery-dl nao esta instalado"))?;
    std::fs::create_dir_all(dest)?;
    let mut cmd = crate::core::process::command(&bin);
    cmd.args(["-d", dest, "--write-metadata"]);
    if let Some(c) = cookies_file.filter(|c| !c.trim().is_empty()) {
        cmd.args(["--cookies", c]);
    }
    cmd.arg(url)
        .stdin(std::process::Stdio::null())
        .stdout(std::process::Stdio::piped())
        .stderr(std::process::Stdio::piped());
    let mut child = cmd
        .spawn()
        .map_err(|e| anyhow!("nao foi possivel iniciar o gallery-dl: {}", e))?;
    let stdout = child.stdout.take();
    let stderr = child.stderr.take();
    let id = format!("gallery:{}", url);
    let p2 = progress.clone();
    let id2 = id.clone();

View on GitHub (pinned to 8600b91f42)