- description = None
- params = self._search_regex(r'var params = {(.+?)}[;,]', webpage,
- 'player params', flags=re.DOTALL)
- video_id = self._search_regex(r'videoId: [\'"](.+?)[\'"]', params, 'video id')
- player_id = self._search_regex(r'playerId: [\'"](.+?)[\'"]', params, 'player id')
- target = self._search_regex(r'target: [\'"](.+?)[\'"]', params, 'target')
- data = compat_urllib_parse_urlencode({'videoId': video_id,
- 'playerId': player_id,
- 'target': target,
- })
- base_info_url = self._search_regex(r'url = [\'"](.+?)[\'"][,;]',
- webpage, 'base info url',
- default='http://player.cnevids.com/player/loader.js?')
- info_url = base_info_url + data
- info_page = self._download_webpage(info_url, video_id,
- 'Downloading video info')
- video_info = self._search_regex(r'var\s+video\s*=\s*({.+?});', info_page, 'video info')
- video_info = self._parse_json(video_info, video_id)
-
- formats = [{
- 'format_id': '%s-%s' % (fdata['type'].split('/')[-1], fdata['quality']),
- 'url': fdata['src'],
- 'ext': fdata['type'].split('/')[-1],
- 'quality': 1 if fdata['quality'] == 'high' else 0,
- } for fdata in video_info['sources'][0]]
+ params = extract_attributes(self._search_regex(
+ r'(<[^>]+data-js="video-player"[^>]+>)',
+ webpage, 'player params element'))
+ query.update({
+ 'videoId': params['data-video'],
+ 'playerId': params['data-player'],
+ 'target': params['id'],
+ })
+ video_id = query['videoId']
+ video_info = None
+ info_page = self._download_webpage(
+ 'http://player.cnevids.com/player/video.js',
+ video_id, 'Downloading video info', query=query, fatal=False)
+ if info_page:
+ video_info = self._parse_json(self._search_regex(
+ r'loadCallback\(({.+})\)', info_page, 'video info'), video_id)['video']
+ else:
+ info_page = self._download_webpage(
+ 'http://player.cnevids.com/player/loader.js',
+ video_id, 'Downloading loader info', query=query)
+ video_info = self._parse_json(self._search_regex(
+ r'var\s+video\s*=\s*({.+?});', info_page, 'video info'), video_id)
+ title = video_info['title']
+
+ formats = []
+ for fdata in video_info.get('sources', [{}])[0]:
+ src = fdata.get('src')
+ if not src:
+ continue
+ ext = mimetype2ext(fdata.get('type')) or determine_ext(src)
+ quality = fdata.get('quality')
+ formats.append({
+ 'format_id': ext + ('-%s' % quality if quality else ''),
+ 'url': src,
+ 'ext': ext,
+ 'quality': 1 if quality == 'high' else 0,
+ })