{"record":{"id":"1f1f8e428877fcd8","repo":"ytdl-org/youtube-dl","slug":"s-said-s-1f1f8e","errorCode":null,"errorMessage":"%s said: %s","messagePattern":"%s said: %s","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/xvideos.py","lineNumber":89,"sourceCode":"        'url': 'https://it.xvideos.com/video4588838/biker_takes_his_girl',\n        'only_matching': True\n    }, {\n        'url': 'http://de.xvideos.com/video4588838/biker_takes_his_girl',\n        'only_matching': True\n    }, {\n        'url': 'https://de.xvideos.com/video4588838/biker_takes_his_girl',\n        'only_matching': True\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(\n            'https://www.xvideos.com/video%s/0' % video_id, video_id)\n\n        mobj = re.search(r'<h1 class=\"inlineError\">(.+?)</h1>', webpage)\n        if mobj:\n            raise ExtractorError('%s said: %s' % (self.IE_NAME, clean_html(mobj.group(1))), expected=True)\n\n        title = self._html_search_regex(\n            (r'<title>(?P<title>.+?)\\s+-\\s+XVID',\n             r'setVideoTitle\\s*\\(\\s*([\"\\'])(?P<title>(?:(?!\\1).)+)\\1'),\n            webpage, 'title', default=None,\n            group='title') or self._og_search_title(webpage)\n\n        thumbnails = []\n        for preference, thumbnail in enumerate(('', '169')):\n            thumbnail_url = self._search_regex(\n                r'setThumbUrl%s\\(\\s*([\"\\'])(?P<thumbnail>(?:(?!\\1).)+)\\1' % thumbnail,\n                webpage, 'thumbnail', default=None, group='thumbnail')\n            if thumbnail_url:\n                thumbnails.append({\n                    'url': thumbnail_url,\n                    'preference': preference,\n                })\n","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/xvideos.py#L71-L107","documentation":"Raised by the XVideos extractor when the video page contains an <h1 class=\"inlineError\"> element. The site uses this heading for availability errors (video deleted, not available in your language/region), and its HTML-stripped text is forwarded after the extractor name.","triggerScenarios":"Downloading https://www.xvideos.com/video<id>/0 whose page matches r'<h1 class=\"inlineError\">(.+?)</h1>'; the check runs immediately after the webpage download.","commonSituations":"Removed or deactivated uploads; videos blocked in the requester's country; the de.xvideos mirror redirecting to a page with an inline error for localized content.","solutions":["Read the forwarded 'XVideos said:' message for the precise cause.","For region blocks, retry from a permitted region.","For deleted videos, look for a re-upload; the ID is gone permanently."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    info = ydl.extract_info(url)\nexcept ExtractorError as e:\n    if str(e).startswith('XVideos said:'):\n        log_skip(url, str(e).split('said:', 1)[1])\n    else:\n        raise","preventionTips":["Use the canonical www.xvideos.com URL form; language mirrors can alter page markup.","Classify forwarded messages into deleted vs region-blocked before deciding to retry.","Never retry deleted-video errors — they are permanent."],"tags":["site-error","video-unavailable","extractor","xvideos"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}