diff options
Diffstat (limited to 'youtube_dl/extractor/mgtv.py')
| -rw-r--r-- | youtube_dl/extractor/mgtv.py | 43 | 
1 files changed, 22 insertions, 21 deletions
| diff --git a/youtube_dl/extractor/mgtv.py b/youtube_dl/extractor/mgtv.py index a14d176a5..9fbc74f5d 100644 --- a/youtube_dl/extractor/mgtv.py +++ b/youtube_dl/extractor/mgtv.py @@ -11,7 +11,7 @@ class MGTVIE(InfoExtractor):      _TEST = {          'url': 'http://www.mgtv.com/v/1/290525/f/3116640.html', -        'md5': '', +        'md5': '1bdadcf760a0b90946ca68ee9a2db41a',          'info_dict': {              'id': '3116640',              'ext': 'mp4', @@ -20,15 +20,6 @@ class MGTVIE(InfoExtractor):              'duration': 7461,              'thumbnail': 're:^https?://.*\.jpg$',          }, -        'params': { -            'skip_download': True,  # m3u8 download -        }, -    } - -    _FORMAT_MAP = { -        '标清': ('Standard', 0), -        '高清': ('High', 1), -        '超清': ('SuperHigh', 2),      }      def _real_extract(self, url): @@ -40,17 +31,27 @@ class MGTVIE(InfoExtractor):          formats = []          for idx, stream in enumerate(api_data['stream']): -            format_name = stream.get('name') -            format_id, preference = self._FORMAT_MAP.get(format_name, (None, None)) -            format_info = self._download_json( -                stream['url'], video_id, -                note='Download video info for format %s' % format_id or '#%d' % idx) -            formats.append({ -                'format_id': format_id, -                'url': format_info['info'], -                'ext': 'mp4',  # These are m3u8 playlists -                'preference': preference, -            }) +            stream_url = stream.get('url') +            if not stream_url: +                continue +            tbr = int_or_none(self._search_regex( +                r'(\d+)\.mp4', stream_url, 'tbr', default=None)) + +            def extract_format(stream_url, format_id, idx, query={}): +                format_info = self._download_json( +                    stream_url, video_id, +                    note='Download video info for format %s' % format_id or '#%d' % idx, query=query) +                return { +                    'format_id': format_id, +                    'url': format_info['info'], +                    'ext': 'mp4', +                    'tbr': tbr, +                } + +            formats.append(extract_format( +                stream_url, 'hls-%d' % tbr if tbr else None, idx * 2)) +            formats.append(extract_format(stream_url.replace( +                '/playlist.m3u8', ''), 'http-%d' % tbr if tbr else None, idx * 2 + 1, {'pno': 1031}))          self._sort_formats(formats)          return { | 
