{"record":{"id":"c4a1917e417e74d0","repo":"tonhowtf/omniget","slug":"this-video-is-private","errorCode":null,"errorMessage":"This video is private.","messagePattern":"This video is private\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/ytdlp.rs","lineNumber":4471,"sourceCode":"    }\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.\");\n    }\n    if lower.contains(\"unable to download\") && lower.contains(\"webpage\") {\n        return anyhow!(\"Failed to access the page. Check the link and your connection.\");","sourceCodeStart":4453,"sourceCodeEnd":4489,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/ytdlp.rs#L4453-L4489","documentation":"translate_ytdlp_error at ytdlp.rs:4471 maps stderr containing 'private video' to this message. The target video exists but its visibility is set to private, so extraction is refused for unauthenticated/non-authorized requests. The library throws it as a terminal failure distinct from general unavailability.","triggerScenarios":"yt-dlp stderr contains 'private video' (or the related patterns 'this video is private' / 'video is private' from the PATTERNS list at ytdlp.rs:4404-4405) during URL extraction.","commonSituations":"Sharing a link to a private upload; the uploader flipped a previously public video to private; an unlisted-vs-private mix-up where the ID is valid but access is restricted; trying to download a private video from an account you don't control.","solutions":["If it's your own video, change visibility to public/unlisted or import that account's cookies.","Import cookies for an account that has access to the private video, then retry.","Otherwise request access from the uploader — private media cannot be extracted without authorization."],"exampleFix":"// before: anonymous attempt on a private video\nrun_ytdlp(&[\"-f\", \"best\", private_url])?;\n\n// after: use owner-account cookies\nrun_ytdlp(&[\"--cookies\", &owner_cookies, \"-f\", \"best\", private_url])?;","handlingStrategy":"validation","validationCode":"// Confirm accessibility with authenticated cookies before download\nconst res = await fetch(url, { headers: { cookie: cookiesFor(url) } });\nconst html = await res.text();\nif (/this video is private/i.test(html)) throw new Error('Video is private — request access first.');","typeGuard":null,"tryCatchPattern":"try {\n  await download(url);\n} catch (e) {\n  if (isPrivateVideo(e)) notifyUser('This video is private; import cookies with access or skip.');\n  else throw e;\n}","preventionTips":["Only queue URLs you can open in your own logged-in browser","Import cookies from the account that owns or can view the video","Don't retry private videos — access won't change without the uploader"],"tags":["ytdlp","permissions","auth","extraction"],"backgroundTag":"permission-denied","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"}