{"record":{"id":"c939e5cfc436ca11","repo":"tonhowtf/omniget","slug":"vimeo-empty","errorCode":"vimeo:empty","errorMessage":"vimeo:empty","messagePattern":"vimeo:empty","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src-tauri/omniget-core/src/core/tools/vimeo.rs","lineNumber":949,"sourceCode":"            Target::Video { id, .. } => id.clone(),\n            _ => String::new(),\n        };\n        (\n            id.clone(),\n            vec![Entry {\n                id,\n                title: String::new(),\n                url: url.clone(),\n                duration: None,\n                uploader: None,\n            }],\n        )\n    };\n    if !opts.only_ids.is_empty() {\n        entries.retain(|e| opts.only_ids.iter().any(|i| i == &e.id));\n    }\n    if entries.is_empty() {\n        return Err(anyhow!(\"vimeo:empty\"));\n    }\n\n    // 2. baixar.\n    let ffmpeg = crate::core::dependencies::find_tool(\"ffmpeg\").await;\n    let total = entries.len();\n    let mut items: Vec<ItemResult> = Vec::with_capacity(total);\n    let mut ok = 0usize;\n    let mut skipped = 0usize;\n    let mut failed = 0usize;\n    let mut last_command = String::new();\n\n    for (i, entry) in entries.iter().enumerate() {\n        let done = i as u64;\n        let label = if entry.title.trim().is_empty() {\n            entry.id.clone()\n        } else {\n            entry.title.clone()\n        };","sourceCodeStart":931,"sourceCodeEnd":967,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/vimeo.rs#L931-L967","documentation":"vimeo:empty is raised by `backup` after enumeration and filtering when the resulting entry list is empty. The URL was valid and enumeration ran, but after applying `only_ids` (and any other filters) zero items remain, so there is nothing to download.","triggerScenarios":"Calling `backup(opts)` where enumeration returned entries but every entry was removed by `opts.only_ids` filtering — i.e. none of the supplied ids match the enumerated items — or where the collection itself enumerated to zero entries.","commonSituations":"Stale only_ids from a previous snapshot of the showcase after items were deleted/reordered; ids copied from a different collection; typo'd ids; pointing backup at an empty showcase or a private collection that yields nothing.","solutions":["Re-enumerate the collection (call `list`) and rebuild `only_ids` from the fresh entry ids.","Verify each id in `opts.only_ids` actually exists in the target collection; drop or fix mismatched ones.","If you did not intend filtering, omit or empty `only_ids` so all enumerated entries are downloaded.","Check that the collection is not empty and that session cookies (session_netscape) are supplied if it is private."],"exampleFix":"// before\nawait vimeoBackup({ url: showcaseUrl, dest, only_ids: staleIds });\n// after\nconst listing = await vimeoList({ url: showcaseUrl });\nconst freshIds = listing.entries.map(e => e.id).filter(id => wanted.has(id));\nif (freshIds.length === 0) throw new Error(\"no matching items in this collection\");\nawait vimeoBackup({ url: showcaseUrl, dest, only_ids: freshIds });","handlingStrategy":"validation","validationCode":"const listing = await vimeoList({ url: showcaseUrl, session_netscape: cookies });\nconst available = new Set(listing.entries.map(e => e.id));\nconst matched = onlyIds.filter(id => available.has(String(id)));\nif (matched.length === 0) {\n  throw new Error(\"none of only_ids exist in this collection; refresh your selection\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  await vimeoBackup({ url, dest, only_ids: ids });\n} catch (e) {\n  if (String(e).includes(\"vimeo:empty\")) {\n    showNotice(\"No matching items found — refresh the item list and reselect\");\n  } else throw e;\n}","preventionTips":["Always re-enumerate with list() immediately before a filtered backup to build fresh only_ids","Treat only_ids as ephemeral, never persisted across sessions","Supply session cookies when enumerating private collections so entries are not silently missing"],"tags":["vimeo","empty-result","backup","filtering"],"backgroundTag":"empty-result-set","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"}