{"record":{"id":"b7dd0cee1976a99c","repo":"ytdl-org/youtube-dl","slug":"s-said-video-is-not-available","errorCode":null,"errorMessage":"%s said: video is not available","messagePattern":"(.+?) said: video is not available","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/mtv.py","lineNumber":93,"sourceCode":"                               'country, trying with the mobile version')\n                return self._extract_mobile_video_formats(mtvn_id)\n            raise ExtractorError('This video is not available from your country.',\n                                 expected=True)\n\n        formats = []\n        for rendition in mdoc.findall('.//rendition'):\n            if rendition.get('method') == 'hls':\n                hls_url = rendition.find('./src').text\n                formats.extend(self._extract_m3u8_formats(\n                    hls_url, video_id, ext='mp4', entry_protocol='m3u8_native',\n                    m3u8_id='hls', fatal=False))\n            else:\n                # fms\n                try:\n                    _, _, ext = rendition.attrib['type'].partition('/')\n                    rtmp_video_url = rendition.find('./src').text\n                    if 'error_not_available.swf' in rtmp_video_url:\n                        raise ExtractorError(\n                            '%s said: video is not available' % self.IE_NAME,\n                            expected=True)\n                    if rtmp_video_url.endswith('siteunavail.png'):\n                        continue\n                    formats.extend([{\n                        'ext': 'flv' if rtmp_video_url.startswith('rtmp') else ext,\n                        'url': rtmp_video_url,\n                        'format_id': '-'.join(filter(None, [\n                            'rtmp' if rtmp_video_url.startswith('rtmp') else None,\n                            rendition.get('bitrate')])),\n                        'width': int(rendition.get('width')),\n                        'height': int(rendition.get('height')),\n                    }])\n                except (KeyError, TypeError):\n                    raise ExtractorError('Invalid rendition field.')\n        if formats:\n            self._sort_formats(formats)\n        return formats","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/mtv.py#L75-L111","documentation":"Raised while iterating mediagen XML renditions when an RTMP rendition's <src> URL contains 'error_not_available.swf'. The CDN is returning a placeholder SWF instead of real media, meaning the specific rendition is unavailable (often region- or session-related). It is expected=True and aborts the whole extraction.","triggerScenarios":"Any MTV-family _extract_video_formats call where a non-HLS rendition's rtmp_video_url contains the substring 'error_not_available.swf'.","commonSituations":"MTV-family videos unavailable in the requesting region or for anonymous sessions; CDN edge issues; site-side changes to how unavailable renditions are signaled — update youtube-dl if it happens for clearly available videos.","solutions":["Retry with a US proxy/VPN: --proxy or --geo-verify-proxy.","Update youtube-dl to pick up extractor fixes if the site changed its unavailability signaling.","Try the video page on the network's own site to confirm it is actually playable for your session."],"exampleFix":"youtube-dl --geo-verify-proxy '<mtv-family url>'","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"except ExtractorError as e:\n    if 'video is not available' in str(e):\n        result = retry(url, proxy=next_proxy())  # usually region/session related\n        if not result:\n            mark_permanently_unavailable(url)\n    else:\n        raise","preventionTips":["Prefer HLS renditions when available — the m3u8 path bypasses this RTMP-specific check.","Use a US proxy for MTV-family content by default.","Update the extractor so changed unavailability markers are handled."],"tags":["geo-restriction","extractor","cdn","expected-error"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}