- webpage = self._download_webpage(url, video_id)
- json_data = self._parse_json(
- get_element_by_id('jsonld', webpage),
- video_id
- )
- title = json_data['name']
- thumbnail = json_data.get('image')
- categories = json_data.get('genre')
- description = json_data.get('description')
- player_json_data = self._download_json(
- 'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-'+video_id+'.type-player.html',
- video_id
- )['data']
- if 'url' in player_json_data:
- m3u8_url = player_json_data['url']
- else:
- for error in json_data['error'].values():
- raise ExtractorError(error)
- return
- formats = self._extract_m3u8_formats(m3u8_url, video_id)
+
+ player = self._call_api(
+ 'Content/Episode/%s' % video_id,
+ video_id, 'Downloading player JSON')
+
+ if player.get('drm'):
+ raise ExtractorError('This video is DRM protected.', expected=True)
+
+ formats = self._extract_m3u8_formats(player['url'], video_id, 'mp4')
+ self._sort_formats(formats)
+
+ video = self._call_api(
+ 'episode/%s' % video_id, video_id,
+ 'Downloading video JSON')['episode']
+
+ title = video['title']
+ categories = [
+ category['name']
+ for category in video.get('genres', []) if 'name' in category]
+