]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/metacritic.py 
444ec0310877e8377f78e88b07fd110ca9e6aa0d
   1  from  __future__ 
import  unicode_literals
   5  from  . common 
import  InfoExtractor
  11  class  MetacriticIE ( InfoExtractor
):   12      _VALID_URL 
=  r
'https?://www\.metacritic\.com/.+?/trailers/(?P<id>\d+)'   15          'url' :  'http://www.metacritic.com/game/playstation-4/infamous-second-son/trailers/3698222' ,   19              'title' :  'inFamous: Second Son - inSide Sucker Punch: Smoke & Mirrors' ,   20              'description' :  'Take a peak behind-the-scenes to see how Sucker Punch brings smoke into the universe of inFAMOUS Second Son on the PS4.' ,   23          'skip' :  'Not providing trailers anymore' ,   25          'url' :  'http://www.metacritic.com/game/playstation-4/tales-from-the-borderlands-a-telltale-game-series/trailers/5740315' ,   29              'title' :  'Tales from the Borderlands - Finale: The Vault of the Traveler' ,   30              'description' :  'In the final episode of the season, all hell breaks loose. Jack is now in control of Helios \'  systems, and he \' s ready to reclaim his rightful place as king of Hyperion (with or without you).' ,   35      def  _real_extract ( self
,  url
):   36          mobj 
=  re
. match ( self
._ VALID
_U RL
,  url
)   37          video_id 
=  mobj
. group ( 'id' )   38          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)   39          # The xml is not well formatted, there are raw '&'   40          info 
=  self
._ download
_ xml
( 'http://www.metacritic.com/video_data?video='  +  video_id
,   41                                    video_id
,  'Downloading info xml' ,  transform_source
= fix_xml_ampersands
)   43          clip 
=  next ( c 
for  c 
in  info
. findall ( 'playList/clip' )  if  c
. find ( 'id' ). text 
==  video_id
)   45          for  videoFile 
in  clip
. findall ( 'httpURI/videoFile' ):   46              rate_str 
=  videoFile
. find ( 'rate' ). text
  47              video_url 
=  videoFile
. find ( 'filePath' ). text
  51                  'format_id' :  rate_str
,   54          self
._ sort
_ formats
( formats
)   56          description 
=  self
._ html
_ search
_ regex
( r
'<b>Description:</b>(.*?)</p>' ,   57                                                webpage
,  'description' ,  flags
= re
. DOTALL
)   61              'title' :  clip
. find ( 'title' ). text
,   63              'description' :  description
,   64              'duration' :  int ( clip
. find ( 'duration' ). text
),