{"record":{"id":"0cebe4ff05586eaa","repo":"yt-dlp/yt-dlp","slug":"could-not-decrypt-data-e","errorCode":null,"errorMessage":"Could not decrypt data: {e}","messagePattern":"Could not decrypt data: (.+?)","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"yt_dlp/extractor/wrestleuniverse.py","lineNumber":138,"sourceCode":"            headers['Authorization'] = f'Bearer {self._TOKEN}'\n        return self._download_json(\n            f'https://{self._API_HOST}/v1/{self._API_PATH}/{video_id}{param}', video_id,\n            note=f'Downloading {msg} JSON', errnote=f'Failed to download {msg} JSON',\n            data=data, headers=headers, query=query, fatal=fatal)\n\n    def _call_encrypted_api(self, video_id, param='', msg='API', data={}, query={}, fatal=True):\n        if not Cryptodome.RSA:\n            raise ExtractorError('pycryptodomex not found. Please install', expected=True)\n        private_key = Cryptodome.RSA.generate(2048)\n        cipher = Cryptodome.PKCS1_OAEP.new(private_key, hashAlgo=Cryptodome.SHA1)\n\n        def decrypt(data):\n            if not data:\n                return None\n            try:\n                return cipher.decrypt(base64.b64decode(data)).decode()\n            except (ValueError, binascii.Error) as e:\n                raise ExtractorError(f'Could not decrypt data: {e}')\n\n        token = base64.b64encode(private_key.public_key().export_key('DER')).decode()\n        api_json = self._call_api(video_id, param, msg, data={\n            'deviceId': self._DEVICE_ID,\n            'token': token,\n            **data,\n        }, query=query, fatal=fatal)\n        return api_json, decrypt\n\n    def _download_metadata(self, url, video_id, lang, props_keys):\n        metadata = self._call_api(video_id, msg='metadata', query={'al': lang or 'ja'}, auth=False, fatal=False)\n        if not metadata:\n            webpage = self._download_webpage(url, video_id)\n            nextjs_data = self._search_nextjs_data(webpage, video_id, fatal=False)\n            metadata = traverse_obj(nextjs_data, (\n                'props', 'pageProps', *variadic(props_keys, (str, bytes, dict, set)), {dict})) or {}\n        return metadata\n","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/yt-dlp/yt-dlp/blob/81ecd58b1394793e6da9998cc19fdb45657f1685/yt_dlp/extractor/wrestleuniverse.py#L120-L156","documentation":"Error \"Could not decrypt data: {e}\" thrown in yt-dlp/yt-dlp.","triggerScenarios":"AES decryption of the Wrestle Universe API response fails, usually due to an invalid/expired key or a changed encryption scheme.","commonSituations":"See trigger scenarios.","solutions":["Re-export fresh cookies; the decryption key may be tied to your session","Update yt-dlp if the site changed its encryption scheme","Report the error with verbose logs if it persists"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81ecd58b1394793e6da9998cc19fdb45657f1685","analyzedAt":"2026-08-22T12:21:25.439Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}