]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/clipsyndicate.py
2 import xml
.etree
.ElementTree
4 from .common
import InfoExtractor
10 class ClipsyndicateIE(InfoExtractor
):
11 _VALID_URL
= r
'http://www\.clipsyndicate\.com/video/play(list/\d+)?/(?P<id>\d+)'
14 u
'url': u
'http://www.clipsyndicate.com/video/play/4629301/brick_briscoe',
15 u
'md5': u
'4d7d549451bad625e0ff3d7bd56d776c',
19 u
'title': u
'Brick Briscoe',
24 def _real_extract(self
, url
):
25 mobj
= re
.match(self
._VALID
_URL
, url
)
26 video_id
= mobj
.group('id')
27 js_player
= self
._download
_webpage
(
28 'http://eplayer.clipsyndicate.com/embed/player.js?va_id=%s' % video_id
,
29 video_id
, u
'Downlaoding player')
30 # it includes a required token
31 flvars
= self
._search
_regex
(r
'flvars: "(.*?)"', js_player
, u
'flvars')
33 playlist_page
= self
._download
_webpage
(
34 'http://eplayer.clipsyndicate.com/osmf/playlist?%s' % flvars
,
35 video_id
, u
'Downloading video info')
37 playlist_page
= re
.sub('&', '&', playlist_page
)
38 pdoc
= xml
.etree
.ElementTree
.fromstring(playlist_page
.encode('utf-8'))
40 track_doc
= pdoc
.find('trackList/track')
42 node
= find_xpath_attr(track_doc
, './/param', 'name', name
)
44 return node
.attrib
['value']
48 'title': find_param('title'),
49 'url': track_doc
.find('location').text
,
50 'thumbnail': find_param('thumbnail'),
51 'duration': int(find_param('duration')),