]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/flickr.py
1 from __future__
import unicode_literals
5 from . common
import InfoExtractor
6 from .. compat
import compat_urllib_request
13 class FlickrIE ( InfoExtractor
):
14 _VALID_URL
= r
'https?://(?:www\.|secure\.)?flickr\.com/photos/(?P<uploader_id>[\w\-_@]+)/(?P<id>\d+).*'
16 'url' : 'http://www.flickr.com/photos/forestwander-nature-pictures/5645318632/in/photostream/' ,
17 'md5' : '6fdc01adbc89d72fc9c4f15b4a4ba87b' ,
21 "description" : "Waterfalls in the Springtime at Dark Hollow Waterfalls. These are located just off of Skyline Drive in Virginia. They are only about 6/10 of a mile hike but it is a pretty steep hill and a good climb back up." ,
22 "uploader_id" : "forestwander-nature-pictures" ,
23 "title" : "Dark Hollow Waterfalls"
27 def _real_extract ( self
, url
):
28 mobj
= re
. match ( self
._ VALID
_U RL
, url
)
30 video_id
= mobj
. group ( 'id' )
31 video_uploader_id
= mobj
. group ( 'uploader_id' )
32 webpage_url
= 'http://www.flickr.com/photos/' + video_uploader_id
+ '/' + video_id
33 req
= compat_urllib_request
. Request ( webpage_url
)
36 # it needs a more recent version
37 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20150101 Firefox/38.0 (Chrome)' )
38 webpage
= self
._ download
_ webpage
( req
, video_id
)
40 secret
= self
._ search
_ regex
( r
'secret"\s*:\s*"(\w+)"' , webpage
, 'secret' )
42 first_url
= 'https://secure.flickr.com/apps/video/video_mtl_xml.gne?v=x&photo_id=' + video_id
+ '&secret=' + secret
+ '&bitrate=700&target=_self'
43 first_xml
= self
._ download
_ xml
( first_url
, video_id
, 'Downloading first data webpage' )
45 node_id
= find_xpath_attr (
46 first_xml
, './/{http://video.yahoo.com/YEP/1.0/}Item' , 'id' ,
49 second_url
= 'https://secure.flickr.com/video_playlist.gne?node_id=' + node_id
+ '&tech=flash&mode=playlist&bitrate=700&secret=' + secret
+ '&rd=video.yahoo.com&noad=1'
50 second_xml
= self
._ download
_ xml
( second_url
, video_id
, 'Downloading second data webpage' )
52 self
. report_extraction ( video_id
)
54 stream
= second_xml
. find ( './/STREAM' )
56 raise ExtractorError ( 'Unable to extract video url' )
57 video_url
= stream
. attrib
[ 'APP' ] + stream
. attrib
[ 'FULLPATH' ]
63 'title' : self
._ og
_ search
_ title
( webpage
),
64 'description' : self
._ og
_ search
_ description
( webpage
),
65 'thumbnail' : self
._ og
_ search
_ thumbnail
( webpage
),
66 'uploader_id' : video_uploader_id
,