diff options
| author | Sergey M․ <dstftw@gmail.com> | 2017-08-05 00:00:21 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2017-08-05 00:00:21 +0700 | 
| commit | f31fd0693b674e73f9273f0afba2a54853e4ca35 (patch) | |
| tree | 5e2edc661264a04afea60e6868d1498086c3d59e | |
| parent | 799802f368012f579750b26db117b3a9dfdcbe05 (diff) | |
[vidme] Extract DASH and HLS formats
| -rw-r--r-- | youtube_dl/extractor/vidme.py | 34 | 
1 files changed, 26 insertions, 8 deletions
| diff --git a/youtube_dl/extractor/vidme.py b/youtube_dl/extractor/vidme.py index e9ff336c4..a7971d72e 100644 --- a/youtube_dl/extractor/vidme.py +++ b/youtube_dl/extractor/vidme.py @@ -3,7 +3,10 @@ from __future__ import unicode_literals  import itertools  from .common import InfoExtractor -from ..compat import compat_HTTPError +from ..compat import ( +    compat_HTTPError, +    compat_str, +)  from ..utils import (      ExtractorError,      int_or_none, @@ -161,13 +164,28 @@ class VidmeIE(InfoExtractor):                  'or for violating the terms of use.',                  expected=True) -        formats = [{ -            'format_id': f.get('type'), -            'url': f['uri'], -            'width': int_or_none(f.get('width')), -            'height': int_or_none(f.get('height')), -            'preference': 0 if f.get('type', '').endswith('clip') else 1, -        } for f in video.get('formats', []) if f.get('uri')] +        formats = [] +        for f in video.get('formats', []): +            format_url = f.get('uri') +            if not format_url or not isinstance(format_url, compat_str): +                continue +            format_type = f.get('type') +            if format_type == 'dash': +                formats.extend(self._extract_mpd_formats( +                    format_url, video_id, mpd_id='dash', fatal=False)) +            elif format_type == 'hls': +                formats.extend(self._extract_m3u8_formats( +                    format_url, video_id, 'mp4', entry_protocol='m3u8_native', +                    m3u8_id='hls', fatal=False)) +            else: +                formats.append({ +                    'format_id': f.get('type'), +                    'url': format_url, +                    'width': int_or_none(f.get('width')), +                    'height': int_or_none(f.get('height')), +                    'preference': 0 if f.get('type', '').endswith( +                        'clip') else 1, +                })          if not formats and video.get('complete_url'):              formats.append({ | 
