tonhowtf/omniget · error
o Cloudflare do Letterboxd barrou o download. Abra letterbox
Error message
o Cloudflare do Letterboxd barrou o download. Abra letterboxd.com no navegador, passe pelo "Just a moment" e capture os cookies de novo na extensão — o cf_clearance precisa vir junto
What it means
After downloading the Letterboxd data export ZIP, the tool checks whether the response is HTML or suspiciously small (<200 bytes) and runs is_cloudflare_wall on the body. If the content matches a Cloudflare challenge page ('Just a moment...'), it throws this error: Letterboxd's Cloudflare protection blocked the automated request because the captured cookies lack a valid cf_clearance token.
Solutions
- Open letterboxd.com in the browser, solve the 'Just a moment' challenge, then re-capture cookies in the extension so cf_clearance is included, and re-run.
- Make sure the capture happens on the same network/IP and with the same user-agent the Fetcher will use.
- Prefer downloading the ZIP manually at letterboxd.com/settings/data/ and passing its path via opts.zip_path to bypass the automated download entirely.
- Retry shortly after re-capturing; cf_clearance is time-limited, so run the tool soon after capture.
Example fix
// before
let opts = Options { zip_path: None, session_netscape: Some("old_cookies.txt".into()), .. };
run(&opts, p).await?; // hits Cloudflare wall
// after
let opts = Options { zip_path: Some("./letterboxd-export.zip".into()), .. };
run(&opts, p).await?; // manual download bypasses Cloudflare Defensive patterns
Strategy: fallback
Try / catch
match letterboxd::run(&opts, &p).await {
Err(e) if e.to_string().contains("Cloudflare") => {
eprintln!("abra letterboxd.com no navegador, resolva o desafio, recapture os cookies e tente de novo");
// fallback: peça ao usuário um ZIP baixado manualmente e rode com zip_path
}
other => other?,
} Prevention
- Solve the 'Just a moment' challenge in the browser before capturing cookies
- Capture cf_clearance on the same IP/network and user-agent the tool will use
- Run the export soon after capturing — cf_clearance expires quickly
- Avoid switching VPN/network between capture and run; or simply pass a manually downloaded ZIP via zip_path
When it happens
Trigger: Calling run without a local zip_path (so the tool downloads EXPORT_URL) while the session's cf_clearance cookie is missing, expired, or was issued for a different IP/user-agent; the download returns the Cloudflare interstitial instead of the ZIP.
Common situations: Cookies captured before passing the Cloudflare challenge; cf_clearance expired (it is short-lived and IP/user-agent bound); user switched networks/VPNs after capturing cookies; user-agent mismatch between the extension capture and the Fetcher's requests.
Related errors
- o Letterboxd devolveu uma página em vez do ZIP — a sessão sa
- o site respondeu {} — a sessão salva no gerenciador de cooki
- YouTube não retornou URL
- No valid cookies found in file (expected Netscape format)
- HTTP {} fetching playlist
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/f58e9df2b2b769f0.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/lists/letterboxd.rs:388
_ => {
if !f.has_session() {
return Err(anyhow!(
"sem sessão do Letterboxd: capture os cookies de letterboxd.com na extensão, ou aponte um ZIP já baixado de letterboxd.com/settings/data/"
));
}
report(
&p,
TOOL_ID,
"progress",
0,
Some(3),
Some(EXPORT_URL.to_string()),
);
let (b, ctype) = f.get_bytes(EXPORT_URL).await?;
if ctype.contains("text/html") || b.len() < 200 {
let body = String::from_utf8_lossy(&b);
if is_cloudflare_wall(&body) {
return Err(anyhow!(
"o Cloudflare do Letterboxd barrou o download. Abra letterboxd.com no navegador, passe pelo \"Just a moment\" e capture os cookies de novo na extensão — o cf_clearance precisa vir junto"
));
}
return Err(anyhow!(
"o Letterboxd devolveu uma página em vez do ZIP — a sessão salva expirou; capture os cookies de novo"
));
}
(b, EXPORT_URL.to_string())
}
};
if opts.keep_zip {
let _ = std::fs::write(dest.join("letterboxd-export.zip"), &bytes);
}
// 2. Normalização.
report(
&p,
TOOL_ID,View on GitHub (pinned to 8600b91f42)