]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/nosvideo.py
2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
15 _x
= lambda p
: xpath_with_ns(p
, {'xspf': 'http://xspf.org/ns/0/'})
18 class NosVideoIE(InfoExtractor
):
19 _VALID_URL
= r
'https?://(?:www\.)?nosvideo\.com/' + \
20 '(?:embed/|\?v=)(?P<id>[A-Za-z0-9]{12})/?'
21 _PLAYLIST_URL
= 'http://nosvideo.com/xml/{xml_id:s}.xml'
22 _FILE_DELETED_REGEX
= r
'<b>File Not Found</b>'
24 'url': 'http://nosvideo.com/?v=mu8fle7g7rpq',
25 'md5': '6124ed47130d8be3eacae635b071e6b6',
29 'title': 'big_buck_bunny_480p_surround-fix.avi.mp4',
30 'thumbnail': 're:^https?://.*\.jpg$',
34 def _real_extract(self
, url
):
35 mobj
= re
.match(self
._VALID
_URL
, url
)
36 video_id
= mobj
.group('id')
41 'method_free': 'Continue to Video',
43 req
= compat_urllib_request
.Request(url
, urlencode_postdata(fields
))
44 req
.add_header('Content-type', 'application/x-www-form-urlencoded')
45 webpage
= self
._download
_webpage
(req
, video_id
,
46 'Downloading download page')
47 if re
.search(self
._FILE
_DELETED
_REGEX
, webpage
) is not None:
48 raise ExtractorError('Video %s does not exist' % video_id
,
51 xml_id
= self
._search
_regex
(r
'php\|([^\|]+)\|', webpage
, 'XML ID')
52 playlist_url
= self
._PLAYLIST
_URL
.format(xml_id
=xml_id
)
53 playlist
= self
._download
_xml
(playlist_url
, video_id
)
55 track
= playlist
.find(_x('.//xspf:track'))
58 'XML playlist is missing the \'track\' element',
60 title
= xpath_text(track
, _x('./xspf:title'), 'title')
61 url
= xpath_text(track
, _x('./xspf:file'), 'URL', fatal
=True)
62 thumbnail
= xpath_text(track
, _x('./xspf:image'), 'thumbnail')
74 'thumbnail': thumbnail
,