{"record":{"id":"46560c7e79c14cf4","repo":"ytdl-org/youtube-dl","slug":"this-content-is-not-available-at-your-territory-du","errorCode":null,"errorMessage":"This content is not available at your territory due to limited copyright.","messagePattern":"This content is not available at your territory due to limited copyright\\.","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/ceskatelevize.py","lineNumber":194,"sourceCode":"            req = sanitized_Request(\n                'https://www.ceskatelevize.cz/ivysilani/ajax/get-client-playlist/',\n                data=urlencode_postdata(data))\n\n            req.add_header('Content-type', 'application/x-www-form-urlencoded')\n            req.add_header('x-addr', '127.0.0.1')\n            req.add_header('X-Requested-With', 'XMLHttpRequest')\n            if user_agent:\n                req.add_header('User-Agent', user_agent)\n            req.add_header('Referer', url)\n\n            playlistpage = self._download_json(req, playlist_id, fatal=False)\n\n            if not playlistpage:\n                continue\n\n            playlist_url = playlistpage['url']\n            if playlist_url == 'error_region':\n                raise ExtractorError(NOT_AVAILABLE_STRING, expected=True)\n\n            req = sanitized_Request(compat_urllib_parse_unquote(playlist_url))\n            req.add_header('Referer', url)\n\n            playlist = self._download_json(req, playlist_id, fatal=False)\n            if not playlist:\n                continue\n\n            playlist = playlist.get('playlist')\n            if not isinstance(playlist, list):\n                continue\n\n            playlist_len = len(playlist)\n\n            for num, item in enumerate(playlist):\n                is_live = item.get('type') == 'LIVE'\n                formats = []\n                for format_id, stream_url in item.get('streamUrls', {}).items():","sourceCodeStart":176,"sourceCodeEnd":212,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/ceskatelevize.py#L176-L212","documentation":"Raised by CeskaTelevizeIE when the playlist API JSON returns url == 'error_region' for the requested playlist. This is the backend's way of saying the content is licensed only for the Czech Republic (or Czech+Slovak), and the extractor maps it to a geo-restriction error with the standard message (expected=True).","triggerScenarios":"Requesting a region-locked Ceska televize playlist (the 'playlistProgram' API) from an IP outside the licensed territory. Every available playlist candidate returning error_region triggers the raise.","commonSituations":"Users outside CZ/SK downloading Czech TV archives; VPNs that exit in unsupported countries; some content restricted to CZ only even for SK users.","solutions":["Use a Czech proxy/VPN: youtube-dl --proxy http://cz-proxy:8080 URL.","Note some programs are CZ-only while others allow SK — check the show's licensing note on the website.","Update to yt-dlp, which keeps the CT geo handling current.","If already in CZ and still failing, verify the exit IP geolocates to CZ (GeoRestrictedError's .countries lists allowed ones)."],"exampleFix":"try:\n    ydl.extract(ct_url)\nexcept GeoRestrictedError as e:\n    print('allowed countries:', e.countries)\n    ydl.extract(ct_url, proxy='http://cz-proxy:8080')  # via YoutubeDL opts","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"from youtube_dl.utils import GeoRestrictedError\ntry:\n    ydl.extract_info(url)\nexcept GeoRestrictedError as e:\n    print('region locked, allowed:', e.countries)\n    YoutubeDL({'proxy': cz_proxy}).extract_info(url)","preventionTips":["Route Ceska televize requests through a CZ/SK exit node.","Catch GeoRestrictedError specifically — it carries the allowed-country list.","Remember some shows are CZ-only even within the EU."],"tags":["ceskatelevize","geo-restriction","licensing","expected"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}