]>
 
 
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/veoh.py 
 
 
 
 
 
 
 
 
   1  from  __future__ 
import  unicode_literals
 
   6  from  . common 
import  InfoExtractor
 
  14  class  VeohIE ( InfoExtractor
):  
  15      _VALID_URL 
=  r
'https?://(?:www\.)?veoh\.com/(?:watch|embed|iphone/#_Watch)/(?P<id>(?:v|e|yapi-)[\da-zA-Z]+)'  
  18          'url' :  'http://www.veoh.com/watch/v56314296nk7Zdmz3' ,  
  19          'md5' :  '620e68e6a3cff80086df3348426c9ca3' ,  
  23              'title' :  'Straight Backs Are Stronger' ,  
  24              'uploader' :  'LUMOback' ,  
  25              'description' :  'At LUMOback, we believe straight backs are stronger.  The LUMOback Posture & Movement Sensor:  It gently vibrates when you slouch, inspiring improved posture and mobility.  Use the app to track your data and improve your posture over time. ' ,  
  28          'url' :  'http://www.veoh.com/embed/v56314296nk7Zdmz3' ,  
  29          'only_matching' :  True ,  
  31          'url' :  'http://www.veoh.com/watch/v27701988pbTc4wzN?h1=Chile+workers+cover+up+to+avoid+skin+damage' ,  
  32          'md5' :  '4a6ff84b87d536a6a71e6aa6c0ad07fa' ,  
  36              'title' :  'Chile workers cover up to avoid skin damage' ,  
  37              'description' :  'md5:2bd151625a60a32822873efc246ba20d' ,  
  38              'uploader' :  'afp-news' ,  
  41          'skip' :  'This video has been deleted.' ,  
  43          'url' :  'http://www.veoh.com/watch/v69525809F6Nc4frX' ,  
  44          'md5' :  '4fde7b9e33577bab2f2f8f260e30e979' ,  
  45          'note' :  'Embedded ooyala video' ,  
  49              'title' :  'Doctors Alter Plan For Preteen \' s Weight Loss Surgery' ,  
  50              'description' :  'md5:f5a11c51f8fb51d2315bca0937526891' ,  
  51              'uploader' :  'newsy-videos' ,  
  53          'skip' :  'This video has been deleted.' ,  
  55          'url' :  'http://www.veoh.com/watch/e152215AJxZktGS' ,  
  56          'only_matching' :  True ,  
  59      def  _extract_formats ( self
,  source
):  
  61          link 
=  source
. get ( 'aowPermalink' )  
  68          link 
=  source
. get ( 'fullPreviewHashLowPath' )  
  74          link 
=  source
. get ( 'fullPreviewHashHighPath' )  
  82      def  _extract_video ( self
,  source
):  
  84              'id' :  source
. get ( 'videoId' ),  
  85              'title' :  source
. get ( 'title' ),  
  86              'description' :  source
. get ( 'description' ),  
  87              'thumbnail' :  source
. get ( 'highResImage' )  or  source
. get ( 'medResImage' ),  
  88              'uploader' :  source
. get ( 'username' ),  
  89              'duration' :  int_or_none ( source
. get ( 'length' )),  
  90              'view_count' :  int_or_none ( source
. get ( 'views' )),  
  91              'age_limit' :  18  if  source
. get ( 'isMature' ) ==  'true'  or  source
. get ( 'isSexy' ) ==  'true'  else  0 ,  
  92              'formats' :  self
._ extract
_ formats
( source
),  
  95      def  _real_extract ( self
,  url
):  
  96          mobj 
=  re
. match ( self
._ VALID
_U RL
,  url
)  
  97          video_id 
=  mobj
. group ( 'id' )  
  99          if  video_id
. startswith ( 'v' ):  
 100              rsp 
=  self
._ download
_ xml
(  
 101                  r
'http://www.veoh.com/api/findByPermalink?permalink= %s '  %  video_id
,  video_id
,  'Downloading video XML' )  
 102              stat 
=  rsp
. get ( 'stat' )  
 104                  return  self
._ extract
_ video
( rsp
. find ( './videoList/video' ))  
 106                  raise  ExtractorError (  
 107                      ' %s  said:  %s '  % ( self
. IE_NAME
,  rsp
. find ( './errorList/error' ). get ( 'errorMessage' )),  expected
= True )  
 109          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  
 111          if  'class="adultwarning-container"'  in  webpage
:  
 112              self
. report_age_confirmation ()  
 114              request 
=  sanitized_Request ( url
)  
 115              request
. add_header ( 'Cookie' ,  'confirmedAdult=true' )  
 116              webpage 
=  self
._ download
_ webpage
( request
,  video_id
)  
 118          m_youtube 
=  re
. search ( r
'http://www\.youtube\.com/v/(.*?)(\&|"|\?)' ,  webpage
)  
 119          if  m_youtube 
is not None :  
 120              youtube_id 
=  m_youtube
. group ( 1 )  
 121              self
. to_screen ( ' %s : detected Youtube video.'  %  video_id
)  
 122              return  self
. url_result ( youtube_id
,  'Youtube' )  
 125              self
._ search
_ regex
( r
'videoDetailsJSON = \' ({.* ?
}) \' ; ', webpage, ' info
').replace(' \\\' ', ' \' '))  
 127          video = self._extract_video(info)  
 128          video[' age_limit
'] = age_limit