tonhowtf/omniget · critical

yt-dlp not found in PATH or app data dir

Error message

yt-dlp not found in PATH or app data dir

What it means

Lookup failure in the CLI reporter: find_yt_dlp() wraps find_tool("yt-dlp"), which checks the system PATH and the app data directory for the yt-dlp binary; when neither location yields an executable it converts the None into an error. It fires when yt-dlp is simply not installed, is not on PATH, or was not bundled into the app data dir, so any download that depends on it cannot proceed.

Solutions

  1. Install yt-dlp: pip install yt-dlp (or brew install yt-dlp) and confirm with 'yt-dlp --version'.
  2. Alternatively download the yt-dlp binary and place it in the app data directory the CLI checks.
  3. Verify PATH includes the directory containing yt-dlp (echo $PATH / where yt-dlp).

Example fix

// before
$ omniget download <url>  # yt-dlp not installed
// after
$ pip install yt-dlp
$ omniget download <url>
Defensive patterns

Strategy: validation

Validate before calling

const { execSync } = require('child_process');
try { execSync('yt-dlp --version', { stdio: 'ignore' }); }
catch { throw new Error('Install yt-dlp first: pip install yt-dlp'); }

Try / catch

try {
  await startDownload(url);
} catch (e) {
  if (String(e).includes('yt-dlp not found')) {
    // surface an install instruction to the user
  } else throw e;
}

Prevention

When it happens

Trigger: Calling any download/report flow that invokes find_yt_dlp when yt-dlp is neither installed in PATH nor placed in the app data directory.

Common situations: Fresh installs where yt-dlp was never installed; venvs where yt-dlp isn't on PATH; Windows installs missing .exe extension resolution; yt-dlp renamed (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


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

Appendix: source

Thrown at src-tauri/omniget-cli/src/reporter.rs:84

                "type": "complete",
                "success": success,
                "message": message,
            });
            println!("{}", json);
        } else {
            if success {
                self.pb.finish_with_message(format!("✓ {}", message));
            } else {
                self.pb.finish_with_message(format!("✗ {}", message));
            }
        }
    }
}

pub async fn find_yt_dlp() -> Result<PathBuf> {
    find_tool("yt-dlp")
        .await
        .ok_or_else(|| anyhow::anyhow!("yt-dlp not found in PATH or app data dir"))
}

pub fn default_output_dir() -> PathBuf {
    directories::UserDirs::new()
        .and_then(|d| d.download_dir().map(PathBuf::from))
        .unwrap_or_else(|| std::env::current_dir().unwrap_or_default())
}

pub fn default_cookie_path() -> Option<PathBuf> {
    let app_dir = app_data_dir()?;
    let cookie_file = app_dir.join("cookies").join("cookies.txt");
    if cookie_file.exists() {
        Some(cookie_file)
    } else {
        None
    }
}

View on GitHub (pinned to 8600b91f42)