tonhowtf/omniget · error
o Bilibili está limitando as requisições; espere um pouco e…
Error message
o Bilibili está limitando as requisições; espere um pouco e repita
What it means
friendly() maps the Bilibili rate-limit error to this message: the API throttled the danmaku request (HTTP 412/429-style risk control) because too many requests came in a short window. The content is fine; waiting and retrying normally succeeds.
Solutions
- Wait a few minutes before exporting again
- Avoid launching several exports/requests for the same video in parallel
- If it persists, the IP may be temporarily flagged — pause Bilibili usage for a while
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src-tauri/src/platforms/bilibili/danmaku/export.rs:221 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/759c591f091d9bba.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/src/platforms/bilibili/danmaku/export.rs:221
/// Erro de API virando frase. Tudo que depende de sessão degrada com o mesmo
/// recado — é o caso do conteúdo pago (`cheese`) e do bangumi regional.
fn friendly(e: BilibiliError, with_account: bool) -> anyhow::Error {
match e {
BilibiliError::NotLoggedIn | BilibiliError::CookieMissing => anyhow!(
"esse conteúdo pede a sessão do Bilibili — entre na conta pelo gerenciador de cookies e tente de novo"
),
BilibiliError::PremiumRequired if with_account => anyhow!(
"a conta conectada não tem acesso a esse conteúdo pago"
),
BilibiliError::PremiumRequired => anyhow!(
"conteúdo pago: conecte uma conta do Bilibili que já tenha a compra"
),
BilibiliError::GeoBlocked => {
anyhow!("o Bilibili bloqueia esse conteúdo na sua região; tente com proxy")
}
BilibiliError::RateLimited => {
anyhow!("o Bilibili está limitando as requisições; espere um pouco e repita")
}
BilibiliError::ContentUnavailable => {
anyhow!("não achei comentários nessa parte — ela pode ter sido removida")
}
other => anyhow!("{}", other.i18n_key()),
}
}
fn collect_parts(parsed: &parser::ParsedContent) -> Vec<DanmakuPart> {
let mut out = Vec::new();
for (i, item) in parsed.items.iter().enumerate() {
let cid = match item.cid {
Some(c) if c > 0 => c,
_ => continue,
};
let page = item.page.unwrap_or((i + 1) as u32);
let title = if item.title.trim().is_empty() {
format!("P{}", page)View on GitHub (pinned to 8600b91f42)