2 from __future__ import unicode_literals
4 from .common import InfoExtractor
5 from ..utils import int_or_none
8 class MGTVIE(InfoExtractor):
9 _VALID_URL = r'https?://www\.mgtv\.com/v/(?:[^/]+/)*(?P<id>\d+).html'
12 'url': 'http://www.mgtv.com/v/1/290525/f/3116640.html',
17 'title': '我是歌手第四季双年巅峰会:韩红李玟“双王”领军对抗',
18 'description': '我是歌手第四季双年巅峰会',
20 'thumbnail': 're:^https?://.*\.jpg$',
23 'skip_download': True, # m3u8 download
28 '标清': ('Standard', 0),
30 '超清': ('SuperHigh', 2),
33 def _real_extract(self, url):
34 video_id = self._match_id(url)
35 api_data = self._download_json(
36 'http://v.api.mgtv.com/player/video', video_id,
37 query={'video_id': video_id})['data']
38 info = api_data['info']
41 for idx, stream in enumerate(api_data['stream']):
42 format_name = stream.get('name')
43 format_id, preference = self._FORMAT_MAP.get(format_name, (None, None))
44 format_info = self._download_json(
45 stream['url'], video_id,
46 note='Download video info for format %s' % format_id or '#%d' % idx)
48 'format_id': format_id,
49 'url': format_info['info'],
50 'ext': 'mp4', # These are m3u8 playlists
51 'preference': preference,
53 self._sort_formats(formats)
57 'title': info['title'].strip(),
59 'description': info.get('desc'),
60 'duration': int_or_none(info.get('duration')),
61 'thumbnail': info.get('thumb'),