tonhowtf/omniget · error

o gallery-dl não conseguiu ler essa página

Error message

o gallery-dl não conseguiu ler essa página: {}

What it means

dump() waits for gallery-dl to finish; if the process exited non-success AND nothing useful was printed on stdout (text.trim().is_empty()), it throws this error including the collected stderr tail, or 'sem detalhe' when stderr was empty. If stdout has content, the dump is still considered usable despite the failure exit code.

Solutions

  1. Inspect the stderr detail appended in the error message for the root cause
  2. Refresh the cookies passed as the cookies parameter if the page requires auth
  3. Retry if the stderr suggests a transient network/rate-limit issue
  4. Update gallery-dl if the extractor fails against a changed site layout

Example fix

// before
let dump = gdl::dump(&url, Some(&stale_cookies), limit).await?;
// after
match gdl::dump(&url, Some(&stale_cookies), limit).await {
    Ok(d) => d,
    Err(e) if e.to_string().contains("não conseguiu ler essa página") => {
        refresh_cookies(&mut session)?;
        gdl::dump(&url, Some(&session.cookie_path()), limit).await?
    }
    Err(e) => return Err(e),
}
Defensive patterns

Strategy: try-catch

Try / catch

match gdl::dump(&url, cookies, limit).await {
    Ok(d) => d,
    Err(e) if e.to_string().contains("não conseguiu ler essa página") => {
        let detail = e.to_string();
        if detail.contains("403") || detail.contains("login") { refresh_cookies()?; }
        else if detail.contains("timeout") || detail.contains("temporário") { retry_with_backoff(3, || gdl::dump(&url, cookies, limit)).await?; }
        else { return Err(e); }
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: gallery-dl exits with a non-zero status (network failure, 403/auth error, unsupported URL, rate limit) and produced no JSON on stdout; the stderr tail carries the underlying reason.

Common situations: Private or deleted Tumblr page; expired cookies passed to dump(); network outage or DNS failure; gallery-dl extractor broken for a changed page layout; rate limiting by the target site.

Understand the failure class

Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.

Related errors


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/tumblr/gdl.rs:305

    super::super::report(progress, id, "started", 0, None, None);
    let mut text = String::new();
    let mut buf = vec![0u8; 64 * 1024];
    let mut last = std::time::Instant::now();
    loop {
        let n = stdout.read(&mut buf).await?;
        if n == 0 {
            break;
        }
        text.push_str(&String::from_utf8_lossy(&buf[..n]));
        if last.elapsed() > std::time::Duration::from_millis(300) {
            super::super::report(progress, id, "progress", text.len() as u64, None, None);
            last = std::time::Instant::now();
        }
    }
    let status = child.wait().await?;
    let tail = err_task.await.unwrap_or_default();
    if !status.success() && text.trim().is_empty() {
        return Err(anyhow!(
            "o gallery-dl não conseguiu ler essa página: {}",
            if tail.is_empty() {
                "sem detalhe".to_string()
            } else {
                tail
            }
        ));
    }
    parse_dump(&text)
}

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

/// `gallery-dl -d <dest> --write-metadata <url>`: baixa a mídia e grava o

View on GitHub (pinned to 8600b91f42)