]>
Commit | Line | Data |
---|---|---|
bba12cec JMF |
1 | import re |
2 | import xml.etree.ElementTree | |
3 | ||
4 | from .common import InfoExtractor | |
5 | from ..utils import ( | |
6 | find_xpath_attr, | |
7 | determine_ext, | |
8 | ) | |
9 | ||
10 | class VideofyMeIE(InfoExtractor): | |
11 | _VALID_URL = r'https?://(www.videofy.me/.+?|p.videofy.me/v)/(?P<id>\d+)(&|#|$)' | |
12 | IE_NAME = u'videofy.me' | |
13 | ||
14 | _TEST = { | |
15 | u'url': u'http://www.videofy.me/thisisvideofyme/1100701', | |
16 | u'file': u'1100701.mp4', | |
10204dc8 | 17 | u'md5': u'c77d700bdc16ae2e9f3c26019bd96143', |
bba12cec JMF |
18 | u'info_dict': { |
19 | u'title': u'This is VideofyMe', | |
20 | u'description': None, | |
21 | u'uploader': u'VideofyMe', | |
22 | u'uploader_id': u'thisisvideofyme', | |
23 | }, | |
24 | ||
25 | } | |
26 | ||
27 | def _real_extract(self, url): | |
28 | mobj = re.match(self._VALID_URL, url) | |
29 | video_id = mobj.group('id') | |
30 | config_xml = self._download_webpage('http://sunshine.videofy.me/?videoId=%s' % video_id, | |
31 | video_id) | |
32 | config = xml.etree.ElementTree.fromstring(config_xml.encode('utf-8')) | |
33 | video = config.find('video') | |
34 | sources = video.find('sources') | |
10204dc8 JMF |
35 | url_node = next(node for node in [find_xpath_attr(sources, 'source', 'id', 'HQ %s' % key) |
36 | for key in ['on', 'av', 'off']] if node is not None) | |
bba12cec JMF |
37 | video_url = url_node.find('url').text |
38 | ||
39 | return {'id': video_id, | |
40 | 'title': video.find('title').text, | |
41 | 'url': video_url, | |
42 | 'ext': determine_ext(video_url), | |
43 | 'thumbnail': video.find('thumb').text, | |
44 | 'description': video.find('description').text, | |
45 | 'uploader': config.find('blog/name').text, | |
46 | 'uploader_id': video.find('identifier').text, | |
47 | 'view_count': re.search(r'\d+', video.find('views').text).group(), | |
48 | } |