]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/escapist.py 
   1  from  __future__ 
import  unicode_literals
   3  from  . common 
import  InfoExtractor
  12  def  _decrypt_config ( key
,  string
):   17      while  len ( a
) < ( len ( string
) /  2 ):   20      a 
=  a
[ 0 : int ( len ( string
) /  2 )]   23      while  t 
<  len ( string
):   24          i 
+=  chr ( int ( string
[ t
] +  string
[ t 
+  1 ],  16 ))   29      for  t
,  c 
in  enumerate ( a
):   30          r 
+=  chr ( ord ( c
)  ^ 
ord ( icko
[ t
]))   35  class  EscapistIE ( InfoExtractor
):   36      _VALID_URL 
=  r
'https?://?(?:(?:www|v1)\.)?escapistmagazine\.com/videos/view/[^/]+/(?P<id>[0-9]+)'   38          'url' :  'http://www.escapistmagazine.com/videos/view/the-escapist-presents/6618-Breaking-Down-Baldurs-Gate' ,   39          'md5' :  'ab3a706c681efca53f0a35f1415cf0d1' ,   43              'description' :  "Baldur's Gate: Original, Modded or Enhanced Edition? I'll break down what you can expect from the new Baldur's Gate: Enhanced Edition." ,   44              'title' :  "Breaking Down Baldur's Gate" ,   45              'thumbnail' :  r
're:^https?://.*\.jpg$' ,   47              'uploader' :  'The Escapist' ,   50          'url' :  'http://www.escapistmagazine.com/videos/view/zero-punctuation/10044-Evolve-One-vs-Multiplayer' ,   51          'md5' :  '9e8c437b0dbb0387d3bd3255ca77f6bf' ,   55              'description' :  'This week, Zero Punctuation reviews Evolve.' ,   56              'title' :  'Evolve - One vs Multiplayer' ,   57              'thumbnail' :  r
're:^https?://.*\.jpg$' ,   59              'uploader' :  'The Escapist' ,   62          'url' :  'http://escapistmagazine.com/videos/view/the-escapist-presents/6618' ,   63          'only_matching' :  True ,   65          'url' :  'https://v1.escapistmagazine.com/videos/view/the-escapist-presents/6618-Breaking-Down-Baldurs-Gate' ,   66          'only_matching' :  True ,   69      def  _real_extract ( self
,  url
):   70          video_id 
=  self
._ match
_ id
( url
)   71          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)   73          ims_video 
=  self
._ parse
_ json
(   75                  r
'imsVideo\.play\(({.+?})\);' ,  webpage
,  'imsVideo' ),   77          video_id 
=  ims_video
[ 'videoID' ]   78          key 
=  ims_video
[ 'hash' ]   80          config 
=  self
._ download
_ webpage
(   81              'http://www.escapistmagazine.com/videos/vidconfig.php' ,   82              video_id
,  'Downloading video config' ,  headers
={   89          data 
=  self
._ parse
_ json
( _decrypt_config ( key
,  config
),  video_id
)   91          video_data 
=  data
[ 'videoData' ]   93          title 
=  clean_html ( video_data
[ 'title' ])   97              'format_id' :  ' %s-%s p'  % ( determine_ext ( video
[ 'src' ]),  video
[ 'res' ]),   98              'height' :  int_or_none ( video
. get ( 'res' )),   99          }  for  video 
in  data
[ 'files' ][ 'videos' ]]  100          self
._ sort
_ formats
( formats
)  106              'thumbnail' :  self
._ og
_ search
_ thumbnail
( webpage
)  or  data
. get ( 'poster' ),  107              'description' :  self
._ og
_ search
_ description
( webpage
),  108              'duration' :  float_or_none ( video_data
. get ( 'duration' ),  1000 ),  109              'uploader' :  video_data
. get ( 'publisher' ),  110              'series' :  video_data
. get ( 'show' ),