]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/metacritic.py
e560c1d354d8b03a05133bf1458ce8d28b84b7bc
4 from .common
import InfoExtractor
10 class MetacriticIE(InfoExtractor
):
11 _VALID_URL
= r
'https?://www\.metacritic\.com/.+?/trailers/(?P<id>\d+)'
14 u
'url': u
'http://www.metacritic.com/game/playstation-4/infamous-second-son/trailers/3698222',
15 u
'file': u
'3698222.mp4',
17 u
'title': u
'inFamous: Second Son - inSide Sucker Punch: Smoke & Mirrors',
18 u
'description': u
'Take a peak behind-the-scenes to see how Sucker Punch brings smoke into the universe of inFAMOUS Second Son on the PS4.',
23 def _real_extract(self
, url
):
24 mobj
= re
.match(self
._VALID
_URL
, url
)
25 video_id
= mobj
.group('id')
26 webpage
= self
._download
_webpage
(url
, video_id
)
27 # The xml is not well formatted, there are raw '&'
28 info
= self
._download
_xml
('http://www.metacritic.com/video_data?video=' + video_id
,
29 video_id
, u
'Downloading info xml', transform_source
=fix_xml_all_ampersand
)
31 clip
= next(c
for c
in info
.findall('playList/clip') if c
.find('id').text
== video_id
)
33 for videoFile
in clip
.findall('httpURI/videoFile'):
34 rate_str
= videoFile
.find('rate').text
35 video_url
= videoFile
.find('filePath').text
39 'format_id': rate_str
,
40 'rate': int(rate_str
),
42 formats
.sort(key
=operator
.itemgetter('rate'))
44 description
= self
._html
_search
_regex
(r
'<b>Description:</b>(.*?)</p>',
45 webpage
, u
'description', flags
=re
.DOTALL
)
49 'title': clip
.find('title').text
,
51 'description': description
,
52 'duration': int(clip
.find('duration').text
),