tonhowtf/omniget · error · anyhow::Error
a lista voltou vazia — o TikTok não entregou os favoritos…
Error message
a lista voltou vazia — o TikTok não entregou os favoritos para esta sessão
What it means
After exhausting pagination (or breaking early), list_private() checks the accumulated results and raises this anyhow error when zero entries were collected. It distinguishes 'session worked but TikTok returned no items' from the earlier hard failures, indicating TikTok withheld the favorites for this session.
Solutions
- Confirm in the browser, logged in with the same session, that the account actually has favorites/liked videos visible.
- Make sure the cookies belong to the same account whose favorites you are listing.
- Re-export fresh cookies and retry — a degraded session may pass checks but yield no data.
- If the list is intentionally empty, treat zero entries as a normal outcome instead of an error in your caller.
Example fix
// before
let entries = favorites::run(opts).await?; // errors on empty
// after
let entries = match favorites::run(opts).await {
Ok(e) => e,
Err(e) if e.to_string().contains("voltou vazia") => Vec::new(),
Err(e) => return Err(e),
}; Defensive patterns
Strategy: try-catch
Validate before calling
// Rust // Check in a browser (same account) that favorites/liked are non-empty and visible before batch runs.
Try / catch
match run(opts).await {
Ok(entries) if entries.is_empty() => eprintln!("Conta sem favoritos visíveis para esta sessão"),
Ok(entries) => render(entries),
Err(e) if e.to_string().contains("voltou vazia") => eprintln!("TikTok não entregou favoritos: confira a sessão/conta"),
Err(e) => return Err(e),
} Prevention
- Use cookies from the same account whose favorites you list.
- Confirm the list is non-empty and visible in the browser first.
- Re-export cookies if the session has degraded (passes checks but yields no data).
- Treat genuinely empty lists as a normal result in your app rather than retrying.
When it happens
Trigger: The loop completed with every page empty (page.is_empty() → vazio=true breaks immediately), or has_more/next cursor never advanced, leaving out empty — often with sessions lacking full visibility into the target list or a genuinely empty favorites list.
Common situations: Account has favorites hidden/private relative to the session; favorites list genuinely empty; TikTok silently filtering results for the session (soft bot detection); wrong account's cookies used for someone else's favorites.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- a conta logada não tem nenhuma assinatura ativa (ou a…
- os favoritos e os curtidos só saem com a sua sessão…
- não achei o secUid de @
- nenhum favorito foi lido: esses perfis costumam exigir a…
- nenhum post foi lido desse blog
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/2f7322f99233cd55.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/tiktok/favorites.rs:424
if !out.iter().any(|x| x.id == e.id) {
out.push(e);
}
}
report(
progress,
ID,
"progress",
out.len() as u64,
None,
Some(format!("{} itens", out.len())),
);
if vazio || !has_more || next.is_empty() || next == cursor || out.len() as u32 >= teto {
break;
}
cursor = next;
}
if out.is_empty() {
return Err(anyhow!(
"a lista voltou vazia — o TikTok não entregou os favoritos para esta sessão"
));
}
Ok(out)
}
pub async fn run(opts: &Options, progress: ProgressFn) -> Result<FavoritesResult> {
if opts.user.trim().is_empty() {
return Err(anyhow!("informe o perfil (@usuario) ou a URL da coleção"));
}
if opts.dest.trim().is_empty() {
return Err(anyhow!("escolha a pasta de destino"));
}
let dest = PathBuf::from(&opts.dest);
std::fs::create_dir_all(&dest)?;
let session = TempCookies::new(opts.session_netscape.as_deref());
let used_session = session.is_some();View on GitHub (pinned to 8600b91f42)