{"record":{"id":"e5716eba7f238eb1","repo":"tonhowtf/omniget","slug":"video-unavailable-or-removed","errorCode":null,"errorMessage":"Video unavailable or removed.","messagePattern":"Video unavailable or removed\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/ytdlp.rs","lineNumber":4468,"sourceCode":"    }\n    if lower.contains(\"nsig extraction failed\") || lower.contains(\"nsig\") {\n        return anyhow!(\"Video extraction failed. Update yt-dlp or try again.\");\n    }\n    if lower.contains(\"cannot parse data\")\n        || lower.contains(\"please report this issue\")\n        || (lower.contains(\"confirm you are on the latest version\") && lower.contains(\"yt-dlp\"))\n    {\n        return anyhow!(\n            \"yt-dlp extractor is broken for this site. Update yt-dlp in Settings → Dependencies, then retry.\"\n        );\n    }\n    if lower.contains(\"requested format\") && lower.contains(\"not available\") {\n        return anyhow!(\n            \"Requested format is not available. The download will retry with a compatible format.\"\n        );\n    }\n    if lower.contains(\"video unavailable\") || lower.contains(\"not available\") {\n        return anyhow!(\"Video unavailable or removed.\");\n    }\n    if lower.contains(\"private video\") {\n        return anyhow!(\"This video is private.\");\n    }\n    if lower.contains(\"copyright\") {\n        return anyhow!(\"Video blocked due to copyright.\");\n    }\n    if lower.contains(\"geo\") && lower.contains(\"block\") {\n        return anyhow!(\"Video restricted in your region.\");\n    }\n    if lower.contains(\"timed out\") || lower.contains(\"timeout\") {\n        return anyhow!(\"Connection timed out. Check your internet and try again.\");\n    }\n    if lower.contains(\"ffmpeg\") && (lower.contains(\"not found\") || lower.contains(\"no such file\")) {\n        return anyhow!(\"FFmpeg not found. Install FFmpeg to download this format.\");\n    }\n    if lower.contains(\"unsupported url\") || lower.contains(\"no suitable infojson\") {\n        return anyhow!(\"Unsupported URL. Check that the link is correct.\");","sourceCodeStart":4450,"sourceCodeEnd":4486,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/ytdlp.rs#L4450-L4486","documentation":"translate_ytdlp_error at ytdlp.rs:4468 maps stderr containing 'video unavailable' or 'not available' to this message. yt-dlp reported that the target video cannot be accessed at all — it has been removed, made unavailable, or never existed. The library throws it as a terminal, non-retryable extraction failure.","triggerScenarios":"yt-dlp stderr includes 'video unavailable', 'this video is not available', 'has been removed', 'http error 404', or 'http error 410' while extracting the URL (see the PATTERNS list at ytdlp.rs:4400-4412 that feeds the same family of cases).","commonSituations":"The uploader deleted the video or set it unavailable; the platform took it down for policy reasons; a typo'd or stale URL/ID; region account restrictions; videos pulled during live-stream end processing.","solutions":["Verify the URL opens in a browser; if not, the video is genuinely gone — stop retrying.","Search for a re-upload or an archive (e.g. Wayback) copy of the media.","If it plays in a browser but fails here, update yt-dlp and retry (client-specific availability quirks).","Confirm the URL/ID was copied correctly and points to the intended page."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Check the URL resolves before enqueueing\nconst res = await fetch(url, { method: 'HEAD' });\nif (res.status === 404 || res.status === 410) throw new Error('Video unavailable — skip without invoking yt-dlp.');","typeGuard":null,"tryCatchPattern":"try {\n  await download(url);\n} catch (e) {\n  if (isVideoUnavailable(e)) markDead(url); // terminal: no retries\n  else throw e;\n}","preventionTips":["Validate/normalize URLs before adding them to the queue","Mark unavailable videos as terminal to avoid futile retries","Re-check periodically if archival of the content matters"],"tags":["ytdlp","resource-not-found","extraction"],"backgroundTag":"resource-not-found","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"}