mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-10 09:07:58 +01:00
[vevo] Add suppot for v3 SMIL URLs (Fixes #2409)
This commit is contained in:
parent
4d756a9cc0
commit
27579b9e4c
1 changed files with 30 additions and 3 deletions
|
@ -24,9 +24,10 @@ class VevoIE(InfoExtractor):
|
||||||
(?P<id>[^&?#]+)'''
|
(?P<id>[^&?#]+)'''
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280',
|
'url': 'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280',
|
||||||
'file': 'GB1101300280.mp4',
|
|
||||||
"md5": "06bea460acb744eab74a9d7dcb4bfd61",
|
"md5": "06bea460acb744eab74a9d7dcb4bfd61",
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
'id': 'GB1101300280',
|
||||||
|
'ext': 'mp4',
|
||||||
"upload_date": "20130624",
|
"upload_date": "20130624",
|
||||||
"uploader": "Hurts",
|
"uploader": "Hurts",
|
||||||
"title": "Somebody to Die For",
|
"title": "Somebody to Die For",
|
||||||
|
@ -34,6 +35,18 @@ class VevoIE(InfoExtractor):
|
||||||
"width": 1920,
|
"width": 1920,
|
||||||
"height": 1080,
|
"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/'
|
_SMIL_BASE_URL = 'http://smil.lvl3.vevo.com/'
|
||||||
|
|
||||||
|
@ -105,9 +118,23 @@ def _real_extract(self, url):
|
||||||
video_info = self._download_json(json_url, video_id)['video']
|
video_info = self._download_json(json_url, video_id)['video']
|
||||||
|
|
||||||
formats = self._formats_from_json(video_info)
|
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:
|
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,
|
smil_xml = self._download_webpage(smil_url, video_id,
|
||||||
'Downloading SMIL info')
|
'Downloading SMIL info')
|
||||||
formats.extend(self._formats_from_smil(smil_xml))
|
formats.extend(self._formats_from_smil(smil_xml))
|
||||||
|
|
Loading…
Reference in a new issue