{"record":{"id":"80d86baaa85d3698","repo":"tonhowtf/omniget","slug":"video-blocked-due-to-copyright","errorCode":null,"errorMessage":"Video blocked due to copyright.","messagePattern":"Video blocked due to copyright\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/ytdlp.rs","lineNumber":4474,"sourceCode":"        || (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.\");\n    }\n    if lower.contains(\"is not a valid url\") || lower.contains(\"no video formats\") {\n        return anyhow!(\"No video formats found for this link.\");","sourceCodeStart":4456,"sourceCodeEnd":4492,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/ytdlp.rs#L4456-L4492","documentation":"translate_ytdlp_error at ytdlp.rs:4474 maps stderr containing 'copyright' to this message. The platform blocked the video for copyright reasons (takedown or content-ID match), so extraction is refused. The library throws it to make the legal/policy cause explicit to the user.","triggerScenarios":"yt-dlp stderr contains the substring 'copyright' during extraction — typically 'This video contains content from ... who has blocked it on copyright grounds' or an equivalent takedown notice.","commonSituations":"Content-ID matched music/footage causing regional or global blocks; DMCA takedowns of re-uploaded material; broadcaster-licensed streams blocked outside specific territories.","solutions":["Confirm the block in a browser; if blocked, the video cannot be legally fetched — stop retrying.","Look for an authorized or alternative source of the same content.","If the block is region-only and legitimate for you, retry via a network in a permitted region.","Update yt-dlp and retry if the block message is spurious/outdated."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Detect copyright-block pages before downloading\nconst html = await (await fetch(url, { headers: { cookie: cookiesFor(url) } })).text();\nif (/blocked it on copyright grounds|copyright claim/i.test(html)) throw new Error('Copyright-blocked: do not attempt download.');","typeGuard":null,"tryCatchPattern":"try {\n  await download(url);\n} catch (e) {\n  if (isCopyrightBlock(e)) markBlocked(url); // terminal, policy-driven\n  else throw e;\n}","preventionTips":["Treat copyright blocks as terminal — never auto-retry","Source content from authorized channels","Check region-specific availability in a browser when a block is suspected"],"tags":["ytdlp","copyright","takedown","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"}