{"record":{"id":"bca8d683ef8a903e","repo":"tonhowtf/omniget","slug":"conte-do-pago-conecte-uma-conta-do-bilibili-que-j-tenha-a","errorCode":null,"errorMessage":"conteúdo pago: conecte uma conta do Bilibili que já tenha a compra","messagePattern":"conteúdo pago: conecte uma conta do Bilibili que já tenha a compra","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/src/platforms/bilibili/danmaku/export.rs","lineNumber":214,"sourceCode":"fn build_client(slug: Option<&str>) -> Result<ApiClient> {\n    let client = ApiClient::new().map_err(|e| anyhow!(\"{}\", e.i18n_key()))?;\n    Ok(match slug {\n        Some(s) => client.with_account(s),\n        None => client.with_anonymous_cookies(),\n    })\n}\n\n/// Erro de API virando frase. Tudo que depende de sessão degrada com o mesmo\n/// recado — é o caso do conteúdo pago (`cheese`) e do bangumi regional.\nfn friendly(e: BilibiliError, with_account: bool) -> anyhow::Error {\n    match e {\n        BilibiliError::NotLoggedIn | BilibiliError::CookieMissing => anyhow!(\n            \"esse conteúdo pede a sessão do Bilibili — entre na conta pelo gerenciador de cookies e tente de novo\"\n        ),\n        BilibiliError::PremiumRequired if with_account => anyhow!(\n            \"a conta conectada não tem acesso a esse conteúdo pago\"\n        ),\n        BilibiliError::PremiumRequired => anyhow!(\n            \"conteúdo pago: conecte uma conta do Bilibili que já tenha a compra\"\n        ),\n        BilibiliError::GeoBlocked => {\n            anyhow!(\"o Bilibili bloqueia esse conteúdo na sua região; tente com proxy\")\n        }\n        BilibiliError::RateLimited => {\n            anyhow!(\"o Bilibili está limitando as requisições; espere um pouco e repita\")\n        }\n        BilibiliError::ContentUnavailable => {\n            anyhow!(\"não achei comentários nessa parte — ela pode ter sido removida\")\n        }\n        other => anyhow!(\"{}\", other.i18n_key()),\n    }\n}\n\nfn collect_parts(parsed: &parser::ParsedContent) -> Vec<DanmakuPart> {\n    let mut out = Vec::new();\n    for (i, item) in parsed.items.iter().enumerate() {","sourceCodeStart":196,"sourceCodeEnd":232,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/src/platforms/bilibili/danmaku/export.rs#L196-L232","documentation":"friendly() maps BilibiliError::PremiumRequired to this message when NO account is connected (with_account=false): the requested danmaku belongs to paid 'cheese' content and the anonymous client categorically cannot access it, so an account with the purchase is required.","triggerScenarios":"Thrown at src-tauri/src/platforms/bilibili/danmaku/export.rs:214 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Log into a Bilibili account that already owns the content via the cookie manager","Verify the purchase on the Bilibili website with that account first","Choose free content if no purchased account is available"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}