{"record":{"id":"0566364234f92475","repo":"yt-dlp/yt-dlp","slug":"no-video-with-idec-available","errorCode":null,"errorMessage":"no video with IDEC available","messagePattern":"no video with IDEC available","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"yt_dlp/extractor/ceskatelevize.py","lineNumber":134,"sourceCode":"                if not idec:\n                    idec = traverse_obj(next_data, ('props', 'pageProps', 'data', 'videobonusDetail', 'bonusId'), get_all=False)\n                    if idec:\n                        type_ = 'bonus'\n            if not idec:\n                raise ExtractorError('Failed to find IDEC id')\n            iframe_hash = self._download_webpage(\n                'https://www.ceskatelevize.cz/v-api/iframe-hash/',\n                playlist_id, note='Getting IFRAME hash')\n            query = {'hash': iframe_hash, 'origin': 'iVysilani', 'autoStart': 'true', type_: idec}\n            webpage = self._download_webpage(\n                'https://www.ceskatelevize.cz/ivysilani/embed/iFramePlayer.php',\n                playlist_id, note='Downloading player', query=query)\n\n        NOT_AVAILABLE_STRING = 'This content is not available at your territory due to limited copyright.'\n        if f'{NOT_AVAILABLE_STRING}</p>' in webpage:\n            self.raise_geo_restricted(NOT_AVAILABLE_STRING)\n        if any(not_found in webpage for not_found in ('Neplatný parametr pro videopřehrávač', 'IDEC nebyl nalezen')):\n            raise ExtractorError('no video with IDEC available', video_id=idec, expected=True)\n\n        type_ = None\n        episode_id = None\n\n        playlist = self._parse_json(\n            self._search_regex(\n                r'getPlaylistUrl\\(\\[({.+?})\\]', webpage, 'playlist',\n                default='{}'), playlist_id)\n        if playlist:\n            type_ = playlist.get('type')\n            episode_id = playlist.get('id')\n\n        if not type_:\n            type_ = self._html_search_regex(\n                r'getPlaylistUrl\\(\\[\\{\"type\":\"(.+?)\",\"id\":\".+?\"\\}\\],',\n                webpage, 'type')\n        if not episode_id:\n            episode_id = self._html_search_regex(","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/yt-dlp/yt-dlp/blob/81ecd58b1394793e6da9998cc19fdb45657f1685/yt_dlp/extractor/ceskatelevize.py#L116-L152","documentation":"Raised after the CeskaTelevize iFramePlayer embed page is fetched with the resolved IDEC and the returned HTML contains 'Neplatny parametr pro prehravac' (invalid player parameter) or 'IDEC nebyl nalezen' (IDEC not found). The site itself is reporting that this IDEC no longer maps to a playable video. It is marked expected=True, so yt-dlp treats it as a normal site response rather than an extractor bug.","triggerScenarios":"The VOD episode was removed or expired from the iVysilani archive; a live stream ended and its IDEC was invalidated; a bonus-type IDEC (type_='bonus') was consumed after the bonus was taken down; the IDEC was resolved from stale Next.js data for a broadcast that never started.","commonSituations":"Downloading news clips or live sports replays that CT only licenses for a short window; retrying old queue entries days later; scripted jobs that store IDEC-bearing URLs long-term.","solutions":["Open the URL in a browser to verify the episode is still offered in iVysilani; if gone, no tool-side fix exists","Re-resolve from the current episode page (fresh URL) rather than a cached/bookmarked one, in case the IDEC changed","If the video plays in the browser but yt-dlp still fails, update yt-dlp and report the URL upstream"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from yt_dlp.utils import ExtractorError\ntry:\n    info = ydl.extract_info(url, download=False)\nexcept ExtractorError as e:\n    if e.expected and 'no video with IDEC available' in str(e):\n        mark_permanently_unavailable(url)  # expired/removed VOD; do not retry\n    else:\n        raise","preventionTips":["Treat this as permanent: drop the URL from retry queues instead of looping","For time-limited CT content, download within the licensing window, not days later","Check e.expected before alerting — expected site errors are not bugs"],"tags":["ceskatelevize","expired-content","expected-error","id-not-found"],"backgroundTag":"video-unavailable-expired","analyzedSha":"81ecd58b1394793e6da9998cc19fdb45657f1685","analyzedAt":"2026-08-22T12:21:25.439Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}