]>
jfr.im git - yt-dlp.git/blob - youtube_dl/extractor/vevo.py
4 from .common
import InfoExtractor
9 class VevoIE(InfoExtractor
):
11 Accecps urls from vevo.com or in the format 'vevo:{id}'
12 (currently used by MTVIE)
14 _VALID_URL
= r
'((http://www.vevo.com/watch/.*?/.*?/)|(vevo:))(?P<id>.*)$'
16 u
'url': u
'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280',
17 u
'file': u
'GB1101300280.mp4',
18 u
'md5': u
'06bea460acb744eab74a9d7dcb4bfd61',
20 u
"upload_date": u
"20130624",
21 u
"uploader": u
"Hurts",
22 u
"title": u
"Somebody To Die For"
26 def _real_extract(self
, url
):
27 mobj
= re
.match(self
._VALID
_URL
, url
)
28 video_id
= mobj
.group('id')
30 json_url
= 'http://www.vevo.com/data/video/%s' % video_id
31 base_url
= 'http://smil.lvl3.vevo.com'
32 videos_url
= '%s/Video/V2/VFILE/%s/%sr.smil' % (base_url
, video_id
, video_id
.lower())
33 info_json
= self
._download
_webpage
(json_url
, video_id
, u
'Downloading json info')
34 links_webpage
= self
._download
_webpage
(videos_url
, video_id
, u
'Downloading videos urls')
36 self
.report_extraction(video_id
)
37 video_info
= json
.loads(info_json
)
38 m_urls
= list(re
.finditer(r
'<video src="(?P<ext>.*?):(?P<url>.*?)"', links_webpage
))
39 if m_urls
is None or len(m_urls
) == 0:
40 raise ExtractorError(u
'Unable to extract video url')
41 # They are sorted from worst to best quality
43 video_url
= base_url
+ m_url
.group('url')
44 ext
= m_url
.group('ext')
46 return {'url': video_url
,
49 'title': video_info
['title'],
50 'thumbnail': video_info
['img'],
51 'upload_date': video_info
['launchDate'].replace('/',''),
52 'uploader': video_info
['Artists'][0]['title'],