{"record":{"id":"4fbe2a75d059771a","repo":"ytdl-org/youtube-dl","slug":"s-said-s-4fbe2a","errorCode":null,"errorMessage":"%s said: %s","messagePattern":"%s said: %s","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/nrk.py","lineNumber":57,"sourceCode":"                re.sub(self._CDN_REPL_REGEX, '://nrk-od-%02d.akamaized.net/no/' % random.randint(0, 99), asset_url),\n                video_id, 'mp4', 'm3u8_native', fatal=False)\n        return formats\n\n    def _raise_error(self, data):\n        MESSAGES = {\n            'ProgramRightsAreNotReady': 'Du kan dessverre ikke se eller høre programmet',\n            'ProgramRightsHasExpired': 'Programmet har gått ut',\n            'NoProgramRights': 'Ikke tilgjengelig',\n            'ProgramIsGeoBlocked': 'NRK har ikke rettigheter til å vise dette programmet utenfor Norge',\n        }\n        message_type = data.get('messageType', '')\n        # Can be ProgramIsGeoBlocked or ChannelIsGeoBlocked*\n        if 'IsGeoBlocked' in message_type or try_get(data, lambda x: x['usageRights']['isGeoBlocked']) is True:\n            self.raise_geo_restricted(\n                msg=MESSAGES.get('ProgramIsGeoBlocked'),\n                countries=self._GEO_COUNTRIES)\n        message = data.get('endUserMessage') or MESSAGES.get(message_type, message_type)\n        raise ExtractorError('%s said: %s' % (self.IE_NAME, message), expected=True)\n\n    def _call_api(self, path, video_id, item=None, note=None, fatal=True, query=None):\n        return self._download_json(\n            urljoin('https://psapi.nrk.no/', path),\n            video_id, note or 'Downloading %s JSON' % item,\n            fatal=fatal, query=query)\n\n\nclass NRKIE(NRKBaseIE):\n    _VALID_URL = r'''(?x)\n                        (?:\n                            nrk:|\n                            https?://\n                                (?:\n                                    (?:www\\.)?nrk\\.no/video/(?:PS\\*|[^_]+_)|\n                                    v8[-.]psapi\\.nrk\\.no/mediaelement/\n                                )\n                            )","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/nrk.py#L39-L75","documentation":"Error \"%s said: %s\" thrown in ytdl-org/youtube-dl.","triggerScenarios":"Thrown at youtube_dl/extractor/nrk.py:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the NRK error message; the content may be geo-blocked — try --proxy."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}