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

  1. Wait a few minutes before exporting again
  2. Avoid launching several exports/requests for the same video in parallel
  3. 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)