]>
 
 
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\?(?:.*?)i=(?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/rg3/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/rg3/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' ,  
  85      def  _extract_urls ( webpage
):  
  87              r
'<iframe[^>]+src="(https?://(?:\w+\.)?liveleak\.com/ll_embed\?[^"]*[if]=[\w_]+[^"]+)"' ,  
  90      def  _real_extract ( self
,  url
):  
  91          video_id 
=  self
._ match
_ id
( url
)  
  92          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  
  94          video_title 
=  self
._ og
_ search
_ title
( webpage
). replace ( 'LiveLeak.com -' ,  '' ). strip ()  
  95          video_description 
=  self
._ og
_ search
_ description
( webpage
)  
  96          video_uploader 
=  self
._ html
_ search
_ regex
(  
  97              r
'By:.*?(\w+)</a>' ,  webpage
,  'uploader' ,  fatal
= False )  
  98          age_limit 
=  int_or_none ( self
._ search
_ regex
(  
  99              r
'you confirm that you are ([0-9]+) years and over.' ,  
 100              webpage
,  'age limit' ,  default
= None ))  
 101          video_thumbnail 
=  self
._ og
_ search
_ thumbnail
( webpage
)  
 103          entries 
=  self
._ parse
_ html
5_ media
_ entries
( url
,  webpage
,  video_id
)  
 106              embed_url 
=  self
._ search
_ regex
(  
 107                  r
'<iframe[^>]+src="((?:https?:)?//(?:www\.)?(?:prochan|youtube)\.com/embed[^"]+)"' ,  
 108                  webpage
,  'embed URL' )  
 110                  '_type' :  'url_transparent' ,  
 113                  'title' :  video_title
,  
 114                  'description' :  video_description
,  
 115                  'uploader' :  video_uploader
,  
 116                  'age_limit' :  age_limit
,  
 119          for  idx
,  info_dict 
in  enumerate ( entries
):  
 120              for  a_format 
in  info_dict
[ 'formats' ]:  
 121                  if not  a_format
. get ( 'height' ):  
 122                      a_format
[ 'height' ] =  int_or_none ( self
._ search
_ regex
(  
 123                          r
'([0-9]+)p\.mp4' ,  a_format
[ 'url' ],  'height label' ,  
 126              self
._ sort
_ formats
( info_dict
[ 'formats' ])  
 128              # Don't append entry ID for one-video pages to keep backward compatibility  
 130                  info_dict
[ 'id' ] =  ' %s _ %s '  % ( video_id
,  idx 
+  1 )  
 132                  info_dict
[ 'id' ] =  video_id
 
 135                  'title' :  video_title
,  
 136                  'description' :  video_description
,  
 137                  'uploader' :  video_uploader
,  
 138                  'age_limit' :  age_limit
,  
 139                  'thumbnail' :  video_thumbnail
,  
 142          return  self
. playlist_result ( entries
,  video_id
,  video_title
)  
 145  class  LiveLeakEmbedIE ( InfoExtractor
):  
 146      _VALID_URL 
=  r
'https?://(?:www\.)?liveleak\.com/ll_embed\?.*?\b(?P<kind>[if])=(?P<id>[\w_]+)'  
 148      # See generic.py for actual test cases  
 150          'url' :  'https://www.liveleak.com/ll_embed?i=874_1459135191' ,  
 151          'only_matching' :  True ,  
 153          'url' :  'https://www.liveleak.com/ll_embed?f=ab065df993c1' ,  
 154          'only_matching' :  True ,  
 157      def  _real_extract ( self
,  url
):  
 158          mobj 
=  re
. match ( self
._ VALID
_U RL
,  url
)  
 159          kind
,  video_id 
=  mobj
. group ( 'kind' ,  'id' )  
 162              webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  
 163              liveleak_url 
=  self
._ search
_ regex
(  
 164                  r
'logourl\s*:\s*(?P<q1>[\' "])(?P<url> %s )(?P=q1)' % LiveLeakIE._VALID_URL,  
 165                  webpage, 'LiveLeak URL', group='url')  
 167              liveleak_url = 'http://www.liveleak.com/view?i= %s ' % video_id  
 169          return self.url_result(liveleak_url, ie=LiveLeakIE.ie_key())