]>
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