{"record":{"id":"dc6406fb9798ea5c","repo":"ytdl-org/youtube-dl","slug":"s-said-s-dc6406","errorCode":null,"errorMessage":"%s said: %s","messagePattern":"%s said: %s","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/dailymotion.py","lineNumber":250,"sourceCode":"      audienceCount\n      isOnAir\n    }''' % (self._COMMON_MEDIA_FIELDS, self._COMMON_MEDIA_FIELDS), 'Downloading media JSON metadata',\n            'password: \"%s\"' % self._downloader.params.get('videopassword') if password else None)\n        xid = media['xid']\n\n        metadata = self._download_json(\n            'https://www.dailymotion.com/player/metadata/video/' + xid,\n            xid, 'Downloading metadata JSON',\n            query={'app': 'com.dailymotion.neon'})\n\n        error = metadata.get('error')\n        if error:\n            title = error.get('title') or error['raw_message']\n            # See https://developer.dailymotion.com/api#access-error\n            if error.get('code') == 'DM007':\n                allowed_countries = try_get(media, lambda x: x['geoblockedCountries']['allowed'], list)\n                self.raise_geo_restricted(msg=title, countries=allowed_countries)\n            raise ExtractorError(\n                '%s said: %s' % (self.IE_NAME, title), expected=True)\n\n        title = metadata['title']\n        is_live = media.get('isOnAir')\n        formats = []\n        for quality, media_list in metadata['qualities'].items():\n            for m in media_list:\n                media_url = m.get('url')\n                media_type = m.get('type')\n                if not media_url or media_type == 'application/vnd.lumberjack.manifest':\n                    continue\n                if media_type == 'application/x-mpegURL':\n                    formats.extend(self._extract_m3u8_formats(\n                        media_url, video_id, 'mp4',\n                        'm3u8' if is_live else 'm3u8_native',\n                        m3u8_id='hls', fatal=False))\n                else:\n                    f = {","sourceCodeStart":232,"sourceCodeEnd":268,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/dailymotion.py#L232-L268","documentation":"Error \"%s said: %s\" thrown in ytdl-org/youtube-dl.","triggerScenarios":"Thrown at youtube_dl/extractor/dailymotion.py:250 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the Dailymotion error message; the video may be removed, private, or geo-blocked."],"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"}