{"record":{"id":"6cfefbc0b13a6b49","repo":"ytdl-org/youtube-dl","slug":"video-s-does-not-exist-6cfefb","errorCode":null,"errorMessage":"Video %s does not exist","messagePattern":"Video (.+?) does not exist","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/motherless.py","lineNumber":91,"sourceCode":"            'categories': list,\n            'upload_date': '20210104',\n            'uploader_id': 'anonymous',\n            'thumbnail': r're:https?://.*\\.jpg',\n            'age_limit': 18,\n        },\n        'params': {\n            'skip_download': True,\n        },\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        webpage = self._download_webpage(url, video_id)\n\n        if any(p in webpage for p in (\n                '<title>404 - MOTHERLESS.COM<',\n                \">The page you're looking for cannot be found.<\")):\n            raise ExtractorError('Video %s does not exist' % video_id, expected=True)\n\n        if '>The content you are trying to view is for friends only.' in webpage:\n            raise ExtractorError('Video %s is for friends only' % video_id, expected=True)\n\n        title = self._html_search_regex(\n            (r'(?s)<div[^>]+\\bclass=[\"\\']media-meta-title[^>]+>(.+?)</div>',\n             r'id=\"view-upload-title\">\\s+([^<]+)<'), webpage, 'title')\n        video_url = (self._html_search_regex(\n            (r'setup\\(\\{\\s*[\"\\']file[\"\\']\\s*:\\s*([\"\\'])(?P<url>(?:(?!\\1).)+)\\1',\n             r'fileurl\\s*=\\s*([\"\\'])(?P<url>(?:(?!\\1).)+)\\1'),\n            webpage, 'video URL', default=None, group='url')\n            or 'http://cdn4.videos.motherlessmedia.com/videos/%s.mp4?fs=opencloud' % video_id)\n        age_limit = self._rta_search(webpage)\n        view_count = str_to_int(self._html_search_regex(\n            (r'>([\\d,.]+)\\s+Views<', r'<strong>Views</strong>\\s+([^<]+)<'),\n            webpage, 'view count', fatal=False))\n        like_count = str_to_int(self._html_search_regex(\n            (r'>([\\d,.]+)\\s+Favorites<',","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/motherless.py#L73-L109","documentation":"Raised by the Motherless extractor when the downloaded webpage contains either the '<title>404 - MOTHERLESS.COM<' marker or '>The page you're looking for cannot be found.<' — the two known 404-page fingerprints. Expected=True, so it cleanly reports that the video id does not exist rather than failing on later title/URL scraping.","triggerScenarios":"self._download_webpage returns a 404 error page (served with a 200-level body the downloader accepted) whose HTML contains one of the two marker strings.","commonSituations":"Gallery item or video deleted/removed by moderation; mistyped or truncated video id in the URL; old links from forums whose ids have been purged; site template change making both markers stale (error then shifts to a title-scrape failure instead).","solutions":["Open the URL in a browser to confirm the item is gone.","Re-locate the content via the uploader's profile page on motherless.com.","No client-side workaround recovers deleted content; source it elsewhere."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Pre-flight HEAD check before handing the URL to the extractor\nimport urllib.request\nreq = urllib.request.Request(url, method='HEAD', headers={'User-Agent': 'Mozilla/5.0'})\nassert urllib.request.urlopen(req).status == 200, 'Motherless item unreachable'","typeGuard":"def motherless_page_is_404(html):\n    return ('<title>404 - MOTHERLESS.COM<' in html) or (\">The page you're looking for cannot be found.<\" in html)","tryCatchPattern":"try:\n    info = ydl.extract_info(url, download=False)\nexcept ExtractorError as e:\n    if 'does not exist' in str(e) or 'for friends only' in str(e):\n        mark_unavailable(url)  # dead or private; remove from queue permanently\n    else:\n        raise","preventionTips":["Validate motherless ids against the uploader's profile before batching.","Classify 'does not exist' and 'for friends only' as permanent skips in queue tooling."],"tags":["not-found","webpage-scrape","expected-error"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}