diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2014-02-25 11:06:47 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2014-02-25 11:06:47 +0100 | 
| commit | 27579b9e4c4adf5411faeacbbf45dae97a7df5e9 (patch) | |
| tree | c83a93c8569ed5cfd92fa0f2cd89f17bb19dcb1e | |
| parent | 4d756a9cc01ed2e85b2ea540b70c78dee10fc118 (diff) | |
[vevo] Add suppot for v3 SMIL URLs (Fixes #2409)
| -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)) | 
