]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/liveleak.py 
   1  from  __future__ 
import  unicode_literals
   5  from  . common 
import  InfoExtractor
   6  from  .. utils 
import  int_or_none
   9  class  LiveLeakIE ( InfoExtractor
):   10      _VALID_URL 
=  r
'https?://(?:\w+\.)?liveleak\.com/view\?.*?\b[it]=(?P<id>[\w_]+)'   12          'url' :  'http://www.liveleak.com/view?i=757_1364311680' ,   13          'md5' :  '0813c2430bea7a46bf13acf3406992f4' ,   15              'id' :  '757_1364311680' ,   17              'description' :  'extremely bad day for this guy..!' ,   18              'uploader' :  'ljfriel2' ,   19              'title' :  'Most unlucky car accident' ,   20              'thumbnail' :  r
're:^https?://.*\.jpg$'   23          'url' :  'http://www.liveleak.com/view?i=f93_1390833151' ,   24          'md5' :  'd3f1367d14cc3c15bf24fbfbe04b9abf' ,   26              'id' :  'f93_1390833151' ,   28              'description' :  'German Television Channel NDR does an exclusive interview with Edward Snowden. \r\n Uploaded on LiveLeak cause German Television thinks the rest of the world isn \' t intereseted in Edward Snowden.' ,   29              'uploader' :  'ARD_Stinkt' ,   30              'title' :  'German Television does first Edward Snowden Interview (ENGLISH)' ,   31              'thumbnail' :  r
're:^https?://.*\.jpg$'   35          'url' :  'http://www.liveleak.com/view?i=4f7_1392687779' ,   36          'md5' :  '42c6d97d54f1db107958760788c5f48f' ,   38              'id' :  '4f7_1392687779' ,   40              'description' :  "The guy with the cigarette seems amazingly nonchalant about the whole thing...  I really hope my friends' reactions would be a bit stronger. \r\n\r\n Action-go to 0:55." ,   41              'uploader' :  'CapObveus' ,   42              'title' :  'Man is Fatally Struck by Reckless Car While Packing up a Moving Truck' ,   45          'skip' :  'Video is dead' ,   47          # Covers https://github.com/ytdl-org/youtube-dl/pull/5983   48          # Multiple resolutions   49          'url' :  'http://www.liveleak.com/view?i=801_1409392012' ,   50          'md5' :  'c3a449dbaca5c0d1825caecd52a57d7b' ,   52              'id' :  '801_1409392012' ,   54              'description' :  'Happened on 27.7.2014.  \r\n At 0:53 you can see people still swimming at near beach.' ,   55              'uploader' :  'bony333' ,   56              'title' :  'Crazy Hungarian tourist films close call waterspout in Croatia' ,   57              'thumbnail' :  r
're:^https?://.*\.jpg$'   60          # Covers https://github.com/ytdl-org/youtube-dl/pull/10664#issuecomment-247439521   61          'url' :  'http://m.liveleak.com/view?i=763_1473349649' ,   62          'add_ie' : [ 'Youtube' ],   64              'id' :  '763_1473349649' ,   66              'title' :  'Reporters and public officials ignore epidemic of black on asian violence in Sacramento | Colin Flaherty' ,   67              'description' :  'Colin being the warrior he is and showing the injustice Asians in Sacramento are being subjected to.' ,   69              'upload_date' :  '20160908' ,   70              'uploader_id' :  'UCEbta5E_jqlZmEJsriTEtnw'   73              'skip_download' :  True ,   76          'url' :  'https://www.liveleak.com/view?i=677_1439397581' ,   78              'id' :  '677_1439397581' ,   79              'title' :  'Fuel Depot in China Explosion caught on video' ,   83          'url' :  'https://www.liveleak.com/view?t=HvHi_1523016227' ,   84          'only_matching' :  True ,   87          'url' :  'https://www.liveleak.com/view?t=C26ZZ_1558612804' ,   88          'only_matching' :  True ,   92      def  _extract_urls ( webpage
):   94              r
'<iframe[^>]+src="(https?://(?:\w+\.)?liveleak\.com/ll_embed\?[^"]*[ift]=[\w_]+[^"]+)"' ,   97      def  _real_extract ( self
,  url
):   98          video_id 
=  self
._ match
_ id
( url
)   99          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  101          video_title 
=  self
._ og
_ search
_ title
( webpage
). replace ( 'LiveLeak.com -' ,  '' ). strip ()  102          video_description 
=  self
._ og
_ search
_ description
( webpage
)  103          video_uploader 
=  self
._ html
_ search
_ regex
(  104              r
'By:.*?(\w+)</a>' ,  webpage
,  'uploader' ,  fatal
= False )  105          age_limit 
=  int_or_none ( self
._ search
_ regex
(  106              r
'you confirm that you are ([0-9]+) years and over.' ,  107              webpage
,  'age limit' ,  default
= None ))  108          video_thumbnail 
=  self
._ og
_ search
_ thumbnail
( webpage
)  110          entries 
=  self
._ parse
_ html
5_ media
_ entries
( url
,  webpage
,  video_id
)  113              embed_url 
=  self
._ search
_ regex
(  114                  r
'<iframe[^>]+src="((?:https?:)?//(?:www\.)?(?:prochan|youtube)\.com/embed[^"]+)"' ,  115                  webpage
,  'embed URL' )  117                  '_type' :  'url_transparent' ,  120                  'title' :  video_title
,  121                  'description' :  video_description
,  122                  'uploader' :  video_uploader
,  123                  'age_limit' :  age_limit
,  126          for  idx
,  info_dict 
in  enumerate ( entries
):  128              for  a_format 
in  info_dict
[ 'formats' ]:  129                  if not  a_format
. get ( 'height' ):  130                      a_format
[ 'height' ] =  int_or_none ( self
._ search
_ regex
(  131                          r
'([0-9]+)p\.mp4' ,  a_format
[ 'url' ],  'height label' ,  133                  formats
. append ( a_format
)  135                  # Removing '.*.mp4' gives the raw video, which is essentially  136                  # the same video without the LiveLeak logo at the top (see  137                  # https://github.com/ytdl-org/youtube-dl/pull/4768)  138                  orig_url 
=  re
. sub ( r
'\.mp4\.[^.]+' ,  '' ,  a_format
[ 'url' ])  139                  if  a_format
[ 'url' ] !=  orig_url
:  140                      format_id 
=  a_format
. get ( 'format_id' )  141                      format_id 
=  'original'  + ( '-'  +  format_id 
if  format_id 
else  '' )  142                      if  self
._ is
_ valid
_u rl
( orig_url
,  video_id
,  format_id
):  144                              'format_id' :  format_id
,  148              self
._ sort
_ formats
( formats
)  149              info_dict
[ 'formats' ] =  formats
 151              # Don't append entry ID for one-video pages to keep backward compatibility  153                  info_dict
[ 'id' ] =  ' %s _ %s '  % ( video_id
,  idx 
+  1 )  155                  info_dict
[ 'id' ] =  video_id
 158                  'title' :  video_title
,  159                  'description' :  video_description
,  160                  'uploader' :  video_uploader
,  161                  'age_limit' :  age_limit
,  162                  'thumbnail' :  video_thumbnail
,  165          return  self
. playlist_result ( entries
,  video_id
,  video_title
)  168  class  LiveLeakEmbedIE ( InfoExtractor
):  169      _VALID_URL 
=  r
'https?://(?:www\.)?liveleak\.com/ll_embed\?.*?\b(?P<kind>[ift])=(?P<id>[\w_]+)'  171      # See generic.py for actual test cases  173          'url' :  'https://www.liveleak.com/ll_embed?i=874_1459135191' ,  174          'only_matching' :  True ,  176          'url' :  'https://www.liveleak.com/ll_embed?f=ab065df993c1' ,  177          'only_matching' :  True ,  180      def  _real_extract ( self
,  url
):  181          kind
,  video_id 
=  re
. match ( self
._ VALID
_U RL
,  url
). groups ()  184              webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  185              liveleak_url 
=  self
._ search
_ regex
(  186                  r
'(?:logourl\s*:\s*|window\.open\()(?P<q1>[\' "])(?P<url> %s )(?P=q1)' % LiveLeakIE._VALID_URL,  187                  webpage, 'LiveLeak URL', group='url')  189              liveleak_url = 'http://www.liveleak.com/view? %s = %s ' % (kind, video_id)  191          return self.url_result(liveleak_url, ie=LiveLeakIE.ie_key())