diff options
| -rw-r--r-- | youtube_dl/extractor/vevo.py | 33 | 
1 files changed, 30 insertions, 3 deletions
diff --git a/youtube_dl/extractor/vevo.py b/youtube_dl/extractor/vevo.py index e458ac961..dd87158db 100644 --- a/youtube_dl/extractor/vevo.py +++ b/youtube_dl/extractor/vevo.py @@ -24,9 +24,10 @@ class VevoIE(InfoExtractor):          (?P<id>[^&?#]+)'''      _TESTS = [{          'url': 'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280', -        'file': 'GB1101300280.mp4',          "md5": "06bea460acb744eab74a9d7dcb4bfd61",          'info_dict': { +            'id': 'GB1101300280', +            'ext': 'mp4',              "upload_date": "20130624",              "uploader": "Hurts",              "title": "Somebody to Die For", @@ -34,6 +35,18 @@ class VevoIE(InfoExtractor):              "width": 1920,              "height": 1080,          } +    }, { +        'note': 'v3 SMIL format', +        'url': 'http://www.vevo.com/watch/cassadee-pope/i-wish-i-could-break-your-heart/USUV71302923', +        'md5': '893ec0e0d4426a1d96c01de8f2bdff58', +        'info_dict': { +            'id': 'USUV71302923', +            'ext': 'mp4', +            'upload_date': '20140219', +            'uploader': 'Cassadee Pope', +            'title': 'I Wish I Could Break Your Heart', +            'duration': 226.101, +        }      }]      _SMIL_BASE_URL = 'http://smil.lvl3.vevo.com/' @@ -105,9 +118,23 @@ class VevoIE(InfoExtractor):          video_info = self._download_json(json_url, video_id)['video']          formats = self._formats_from_json(video_info) + +        # Download SMIL +        smil_blocks = sorted(( +            f for f in video_info['videoVersions'] +            if f['sourceType'] == 13), +            key=lambda f: f['version']) + +        smil_url = '%s/Video/V2/VFILE/%s/%sr.smil' % ( +            self._SMIL_BASE_URL, video_id, video_id.lower()) +        if smil_blocks: +            smil_url_m = self._search_regex( +                r'url="([^"]+)"', smil_blocks[-1]['data'], 'SMIL URL', +                fatal=False) +            if smil_url_m is not None: +                smil_url = smil_url_m +          try: -            smil_url = '%s/Video/V2/VFILE/%s/%sr.smil' % ( -                self._SMIL_BASE_URL, video_id, video_id.lower())              smil_xml = self._download_webpage(smil_url, video_id,                                                'Downloading SMIL info')              formats.extend(self._formats_from_smil(smil_xml))  | 
