{"record":{"id":"d0b10e78bc7c9bad","repo":"tonhowtf/omniget","slug":"n-o-achei-appid-para-cole-o-link-da-loja-ou-o-n-mero","errorCode":null,"errorMessage":"não achei appid para: {} — cole o link da loja ou o número","messagePattern":"não achei appid para: (.+?) — cole o link da loja ou o número","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/games/protondb.rs","lineNumber":314,"sourceCode":"        total: 0,\n        trending_tier: String::new(),\n        best_tier: String::new(),\n        rank: tier_rank(\"pending\"),\n        url: store_url(app_id),\n        cached: false,\n        ok: true,\n        error: None,\n    }\n}\n\npub async fn run(opts: ProtonOptions, progress: ProgressFn) -> anyhow::Result<ProtonResult> {\n    let apps = steam::scan_apps(&steam::steam_libraries(&opts.steam_dirs));\n    let (targets, unresolved) = resolve_targets(&opts.inputs, &apps, opts.scan_library);\n    if targets.is_empty() {\n        if unresolved.is_empty() {\n            anyhow::bail!(\"informe um appid, um link da loja ou marque a biblioteca inteira\");\n        }\n        anyhow::bail!(\n            \"não achei appid para: {} — cole o link da loja ou o número\",\n            unresolved.join(\", \")\n        );\n    }\n\n    let client = crate::core::tools::client()?;\n    let total = targets.len() as u64;\n    let mut entries: Vec<ProtonEntry> = Vec::new();\n    let mut from_cache = 0u64;\n\n    for (i, (app_id, name)) in targets.iter().enumerate() {\n        report(\n            &progress,\n            ID,\n            \"progress\",\n            i as u64,\n            Some(total),\n            Some(name.clone()),","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/games/protondb.rs#L296-L332","documentation":"run in protondb.rs bails with this message when none of the supplied inputs could be resolved to a Steam appid. resolve_targets returns (targets, unresolved); if targets is empty but unresolved is non-empty, every input the user gave was unrecognizable, and the error lists them joined by comma. Message in Portuguese: 'could not find appid for: {} — paste the store link or the number'.","triggerScenarios":"Calling run with opts.inputs containing strings that resolve_targets cannot map to an appid (e.g. game names, malformed URLs, arbitrary text), with targets ending up empty.","commonSituations":"Pasting a game name instead of the store URL; pasting a shortened or regional store URL the parser doesn't recognize; typos in the appid such as letters mixed in; store page URL format changes after a Valve site update.","solutions":["Replace each listed input with its numeric Steam appid (e.g. '570')","Paste the full store page URL (https://store.steampowered.com/app/<appid>/...) instead of a name or short link","Check for typos/extra characters in the inputs and trim whitespace","Provide at least one resolvable input, or set scan_library = true"],"exampleFix":"// before\nrun(ProtonOptions { inputs: vec![\"Elden Ring\".into()], .. }).await?;\n// after\nrun(ProtonOptions { inputs: vec![\"https://store.steampowered.com/app/1245620/ELDEN_RING/\".into()], .. }).await?;","handlingStrategy":"validation","validationCode":"fn looks_like_appid_or_store_link(input: &str) -> bool {\n    let t = input.trim();\n    (!t.is_empty() && t.chars().all(|c| c.is_ascii_digit()))\n        || t.contains(\"store.steampowered.com/app/\")\n}","typeGuard":"fn is_resolvable_input(s: &str) -> bool {\n    let t = s.trim();\n    (!t.is_empty() && t.chars().all(|c| c.is_ascii_digit()))\n        || t.contains(\"store.steampowered.com/app/\")\n}","tryCatchPattern":"match run(opts, progress).await {\n    Ok(result) => handle(result),\n    Err(e) if e.to_string().contains(\"não achei appid para\") => {\n        highlight_unresolved_inputs(&e.to_string());\n    }\n    Err(e) => eprintln!(\"protondb lookup failed: {e}\"),\n}","preventionTips":["Validate inputs client-side: numeric appid or a full store.steampowered.com/app/ URL","Show a hint asking users to paste the store link or appid number, not the game name","Normalize inputs: trim whitespace and strip tracking parameters from URLs","Keep a mapping of game-name -> appid if users commonly type names"],"tags":["rust","parsing","invalid-identifier","tauri"],"backgroundTag":"invalid-identifier-format","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}