]>
Commit | Line | Data |
---|---|---|
cc253000 | 1 | from __future__ import unicode_literals |
2 | ||
3 | import re | |
4 | ||
5 | from .common import InfoExtractor | |
6 | from ..utils import ( | |
7 | ExtractorError, | |
8 | compat_urlparse | |
9 | ) | |
10 | ||
10bff13a | 11 | |
cc253000 | 12 | class NovamovIE(InfoExtractor): |
8f89e687 | 13 | _VALID_URL = r'http://(?:(?:www\.)?novamov\.com/video/|(?:(?:embed|www)\.)novamov\.com/embed\.php\?v=)(?P<videoid>[a-z\d]{13})' |
cc253000 | 14 | |
15 | _TEST = { | |
16 | 'url': 'http://www.novamov.com/video/4rurhn9x446jj', | |
17 | 'file': '4rurhn9x446jj.flv', | |
18 | 'md5': '7205f346a52bbeba427603ba10d4b935', | |
19 | 'info_dict': { | |
20 | 'title': 'search engine optimization', | |
21 | 'description': 'search engine optimization is used to rank the web page in the google search engine' | |
90f479b6 PH |
22 | }, |
23 | 'skip': '"Invalid token" errors abound (in web interface as well as youtube-dl, there is nothing we can do about it.)' | |
cc253000 | 24 | } |
25 | ||
26 | def _real_extract(self, url): | |
27 | mobj = re.match(self._VALID_URL, url) | |
28 | video_id = mobj.group('videoid') | |
29 | ||
30 | page = self._download_webpage('http://www.novamov.com/video/%s' % video_id, | |
31 | video_id, 'Downloading video page') | |
32 | ||
33 | if re.search(r'This file no longer exists on our servers!</h2>', page) is not None: | |
34 | raise ExtractorError(u'Video %s does not exist' % video_id, expected=True) | |
35 | ||
10bff13a PH |
36 | filekey = self._search_regex( |
37 | r'flashvars\.filekey="(?P<filekey>[^"]+)";', page, 'filekey') | |
cc253000 | 38 | |
39 | title = self._html_search_regex( | |
40 | r'(?s)<div class="v_tab blockborder rounded5" id="v_tab1">\s*<h3>([^<]+)</h3>', | |
41 | page, 'title', fatal=False) | |
42 | ||
43 | description = self._html_search_regex( | |
44 | r'(?s)<div class="v_tab blockborder rounded5" id="v_tab1">\s*<h3>[^<]+</h3><p>([^<]+)</p>', | |
45 | page, 'description', fatal=False) | |
46 | ||
10bff13a PH |
47 | api_response = self._download_webpage( |
48 | 'http://www.novamov.com/api/player.api.php?key=%s&file=%s' % (filekey, video_id), | |
49 | video_id, 'Downloading video api response') | |
cc253000 | 50 | |
51 | response = compat_urlparse.parse_qs(api_response) | |
52 | ||
53 | if 'error_msg' in response: | |
54 | raise ExtractorError('novamov returned error: %s' % response['error_msg'][0], expected=True) | |
55 | ||
56 | video_url = response['url'][0] | |
57 | ||
58 | return { | |
59 | 'id': video_id, | |
60 | 'url': video_url, | |
61 | 'title': title, | |
62 | 'description': description | |
10bff13a | 63 | } |