{"record":{"id":"74834e628df1bf67","repo":"ytdl-org/youtube-dl","slug":"error-74834e","errorCode":null,"errorMessage":"error","messagePattern":"error","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/vshare.py","lineNumber":61,"sourceCode":"        chars = [compat_chr(d - int(key_digit)) for d in digits]\n        return ''.join(chars)\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n\n        webpage = self._download_webpage(\n            'https://vshare.io/v/%s/width-650/height-430/1' % video_id,\n            video_id, headers={'Referer': url})\n\n        title = self._html_search_regex(\n            r'<title>([^<]+)</title>', webpage, 'title')\n        title = title.split(' - ')[0]\n\n        error = self._html_search_regex(\n            r'(?s)<div[^>]+\\bclass=[\"\\']xxx-error[^>]+>(.+?)</div', webpage,\n            'error', default=None)\n        if error:\n            raise ExtractorError(error, expected=True)\n\n        info = self._parse_html5_media_entries(\n            url, '<video>%s</video>' % self._extract_packed(webpage),\n            video_id)[0]\n\n        self._sort_formats(info['formats'])\n\n        info.update({\n            'id': video_id,\n            'title': title,\n        })\n\n        return info\n","sourceCodeStart":43,"sourceCodeEnd":75,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/vshare.py#L43-L75","documentation":"vShare extraction error: the video page (vshare.io/v/<id>/...) contains a div with class 'xxx-error', whose inner text is regex-extracted and raised verbatim with expected=True. The report tag is the variable name; the real message is whatever error notice vShare rendered.","triggerScenarios":"Downloading a vshare.io/v/<id> URL where the host shows an error notice in the xxx-error div — typically deleted file, DMCA removal, or unavailable content.","commonSituations":"Following stale embed links from streaming sites; files deleted after takedown; host under maintenance.","solutions":["Read the extracted div text — it is vShare's own error statement","Open the vshare.io URL directly in a browser to confirm the file's status","If deleted/removed, find an alternative source; no client setting can bypass it"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from youtube_dl.utils import ExtractorError\ntry:\n    ydl.extract_info(url)\nexcept ExtractorError as e:\n    msg = str(e)\n    if any(k in msg.lower() for k in ('deleted', 'removed', 'not found')):\n        drop(url)  # permanent\n    else:\n        log('vShare: %s' % msg)","preventionTips":["Treat xxx-error div text as the host's authoritative status","Don't auto-retry removed files; blacklist them","For scrapers, validate vshare embeds lazily right before download"],"tags":["vshare","file-deleted","html-parsing","hosting"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}