diff options
Diffstat (limited to 'youtube_dl/extractor/vidme.py')
| -rw-r--r-- | youtube_dl/extractor/vidme.py | 60 | 
1 files changed, 42 insertions, 18 deletions
| diff --git a/youtube_dl/extractor/vidme.py b/youtube_dl/extractor/vidme.py index e9ff336c4..59adb2377 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({ @@ -245,29 +263,35 @@ class VidmeListBaseIE(InfoExtractor):  class VidmeUserIE(VidmeListBaseIE):      IE_NAME = 'vidme:user' -    _VALID_URL = r'https?://vid\.me/(?:e/)?(?P<id>[\da-zA-Z]{6,})(?!/likes)(?:[^\da-zA-Z]|$)' +    _VALID_URL = r'https?://vid\.me/(?:e/)?(?P<id>[\da-zA-Z_-]{6,})(?!/likes)(?:[^\da-zA-Z_-]|$)'      _API_ITEM = 'list'      _TITLE = 'Videos' -    _TEST = { -        'url': 'https://vid.me/EFARCHIVE', +    _TESTS = [{ +        'url': 'https://vid.me/MasakoX',          'info_dict': { -            'id': '3834632', -            'title': 'EFARCHIVE - %s' % _TITLE, +            'id': '16112341', +            'title': 'MasakoX - %s' % _TITLE,          }, -        'playlist_mincount': 238, -    } +        'playlist_mincount': 191, +    }, { +        'url': 'https://vid.me/unsQuare_netWork', +        'only_matching': True, +    }]  class VidmeUserLikesIE(VidmeListBaseIE):      IE_NAME = 'vidme:user:likes' -    _VALID_URL = r'https?://vid\.me/(?:e/)?(?P<id>[\da-zA-Z]{6,})/likes' +    _VALID_URL = r'https?://vid\.me/(?:e/)?(?P<id>[\da-zA-Z_-]{6,})/likes'      _API_ITEM = 'likes'      _TITLE = 'Likes' -    _TEST = { +    _TESTS = [{          'url': 'https://vid.me/ErinAlexis/likes',          'info_dict': {              'id': '6483530',              'title': 'ErinAlexis - %s' % _TITLE,          },          'playlist_mincount': 415, -    } +    }, { +        'url': 'https://vid.me/Kaleidoscope-Ish/likes', +        'only_matching': True, +    }] | 
