- mobj = re.match(self._VALID_URL, url)
- video_id = mobj.group('slug')
-
- webpage = self._download_webpage(url, video_id)
- player_url = self._search_regex(
- r'"([^"]+/content/issue-[0-9.]+.js)"', webpage, 'player URL')
- real_id = self._search_regex(
- r'\sdata-videoId="([0-9]+)"', webpage, 'internal video ID')
-
- player_code = self._download_webpage(
- player_url, video_id,
- note='Downloading player JavaScript',
- errnote='Player download failed')
- player_code = player_code.replace("'+d+'", real_id)
-
- bc_url = BrightcoveIE._extract_brightcove_url(player_code)
- if bc_url is None:
- raise ExtractorError('Could not find player definition')
- return {
- '_type': 'url',
- 'url': bc_url,
- 'ie_key': 'Brightcove',
- }
+ playlist_id = self._match_id(url)
+
+ lang = 'zh-cn' if 'cn.nowness.com' in url else 'en-us'
+ request = compat_urllib_request.Request('http://api.nowness.com/api/post?PlaylistId=%s' % playlist_id, headers={
+ 'X-Nowness-Language': lang,
+ })
+ playlist = self._download_json(request, playlist_id)
+ entries = [self.extract_url_result(item) for item in playlist['items']]
+ return self.playlist_result(entries, playlist_id)
+
+
+class NownessSerieIE(NownessBaseIE):
+ IE_NAME = 'nowness:serie'
+ _VALID_URL = r'https?://(?:(?:www|cn)\.)?nowness\.com/series/(?P<id>[0-9a-z-]+)'
+ _TEST = {
+ 'url': 'https://www.nowness.com/series/60-seconds',
+ 'info_dict':
+ {
+ 'id': '60',
+ },
+ 'playlist_mincount': 4,
+ }
+
+ def _real_extract(self, url):
+ display_id = self._match_id(url)
+
+ lang = 'zh-cn' if 'cn.nowness.com' in url else 'en-us'
+ request = compat_urllib_request.Request('https://api.nowness.com/api/series/getBySlug/%s' % display_id, headers={
+ 'X-Nowness-Language': lang,
+ })
+ serie = self._download_json(request, display_id)
+ serie_id = str(serie['id'])
+ entries = [self.extract_url_result(post) for post in serie['posts']]
+ return self.playlist_result(entries, serie_id)