diff options
Diffstat (limited to 'youtube_dl/extractor/breakcom.py')
| -rw-r--r-- | youtube_dl/extractor/breakcom.py | 52 | 
1 files changed, 38 insertions, 14 deletions
| diff --git a/youtube_dl/extractor/breakcom.py b/youtube_dl/extractor/breakcom.py index 1bfc9f35b..2c0e5eea2 100644 --- a/youtube_dl/extractor/breakcom.py +++ b/youtube_dl/extractor/breakcom.py @@ -4,37 +4,61 @@ import re  import json  from .common import InfoExtractor +from ..utils import ( +    int_or_none, +    parse_age_limit, +)  class BreakIE(InfoExtractor): -    _VALID_URL = r'http://(?:www\.)?break\.com/video/([^/]+)' -    _TEST = { +    _VALID_URL = r'http://(?:www\.)?break\.com/video/(?:[^/]+/)*.+-(?P<id>\d+)' +    _TESTS = [{          'url': 'http://www.break.com/video/when-girls-act-like-guys-2468056', -        'md5': 'a3513fb1547fba4fb6cfac1bffc6c46b', +        'md5': '33aa4ff477ecd124d18d7b5d23b87ce5',          'info_dict': {              'id': '2468056',              'ext': 'mp4',              'title': 'When Girls Act Like D-Bags',          } -    } +    }, { +        'url': 'http://www.break.com/video/ugc/baby-flex-2773063', +        'only_matching': True, +    }]      def _real_extract(self, url): -        mobj = re.match(self._VALID_URL, url) -        video_id = mobj.group(1).split("-")[-1] -        embed_url = 'http://www.break.com/embed/%s' % video_id -        webpage = self._download_webpage(embed_url, video_id) -        info_json = self._search_regex(r'var embedVars = ({.*})\s*?</script>', -            webpage, 'info json', flags=re.DOTALL) -        info = json.loads(info_json) -        video_url = info['videoUri'] +        video_id = self._match_id(url) +        webpage = self._download_webpage( +            'http://www.break.com/embed/%s' % video_id, video_id) +        info = json.loads(self._search_regex( +            r'var embedVars = ({.*})\s*?</script>', +            webpage, 'info json', flags=re.DOTALL)) +          youtube_id = info.get('youtubeId')          if youtube_id:              return self.url_result(youtube_id, 'Youtube') -        final_url = video_url + '?' + info['AuthToken'] +        formats = [{ +            'url': media['uri'] + '?' + info['AuthToken'], +            'tbr': media['bitRate'], +            'width': media['width'], +            'height': media['height'], +        } for media in info['media']] + +        if not formats: +            formats.append({ +                'url': info['videoUri'] +            }) + +        self._sort_formats(formats) + +        duration = int_or_none(info.get('videoLengthInSeconds')) +        age_limit = parse_age_limit(info.get('audienceRating')) +          return {              'id': video_id, -            'url': final_url,              'title': info['contentName'],              'thumbnail': info['thumbUri'], +            'duration': duration, +            'age_limit': age_limit, +            'formats': formats,          } | 
