]>
Commit | Line | Data |
---|---|---|
ca70d215 PH |
1 | from __future__ import unicode_literals |
2 | ||
8cda9241 | 3 | import re |
20aafee7 | 4 | import hashlib |
8cda9241 JMF |
5 | |
6 | from .common import InfoExtractor | |
8cda9241 | 7 | |
20aafee7 | 8 | _md5 = lambda s: hashlib.md5(s.encode('utf-8')).hexdigest() |
8cda9241 | 9 | |
ca70d215 | 10 | |
8cda9241 JMF |
11 | class KankanIE(InfoExtractor): |
12 | _VALID_URL = r'https?://(?:.*?\.)?kankan\.com/.+?/(?P<id>\d+)\.shtml' | |
13 | ||
14 | _TEST = { | |
ca70d215 PH |
15 | 'url': 'http://yinyue.kankan.com/vod/48/48863.shtml', |
16 | 'file': '48863.flv', | |
17 | 'md5': '29aca1e47ae68fc28804aca89f29507e', | |
18 | 'info_dict': { | |
19 | 'title': 'Ready To Go', | |
8cda9241 | 20 | }, |
f68cd00f | 21 | 'skip': 'Only available from China', |
8cda9241 JMF |
22 | } |
23 | ||
24 | def _real_extract(self, url): | |
25 | mobj = re.match(self._VALID_URL, url) | |
26 | video_id = mobj.group('id') | |
27 | webpage = self._download_webpage(url, video_id) | |
28 | ||
ca70d215 | 29 | title = self._search_regex(r'(?:G_TITLE=|G_MOVIE_TITLE = )[\'"](.+?)[\'"]', webpage, 'video title') |
6d3a7d03 | 30 | surls = re.search(r'surls:\[\'.+?\'\]|lurl:\'.+?\.flv\'', webpage).group(0) |
31 | gcids = re.findall(r"http://.+?/.+?/(.+?)/", surls) | |
32 | gcid = gcids[-1] | |
8cda9241 | 33 | |
ca70d215 PH |
34 | info_url = 'http://p2s.cl.kankan.com/getCdnresource_flv?gcid=%s' % gcid |
35 | video_info_page = self._download_webpage( | |
36 | info_url, video_id, 'Downloading video url info') | |
37 | ip = self._search_regex(r'ip:"(.+?)"', video_info_page, 'video url ip') | |
38 | path = self._search_regex(r'path:"(.+?)"', video_info_page, 'video url path') | |
39 | param1 = self._search_regex(r'param1:(\d+)', video_info_page, 'param1') | |
40 | param2 = self._search_regex(r'param2:(\d+)', video_info_page, 'param2') | |
20aafee7 JMF |
41 | key = _md5('xl_mp43651' + param1 + param2) |
42 | video_url = 'http://%s%s?key=%s&key1=%s' % (ip, path, key, param2) | |
8cda9241 | 43 | |
ca70d215 PH |
44 | return { |
45 | 'id': video_id, | |
46 | 'title': title, | |
47 | 'url': video_url, | |
48 | } |