| 
														
															@@ -1,11 +1,13 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from __future__ import unicode_literals 
														 | 
														
														 | 
														
															 from __future__ import unicode_literals 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import json 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import re 
														 | 
														
														 | 
														
															 import re 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from .common import InfoExtractor 
														 | 
														
														 | 
														
															 from .common import InfoExtractor 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+from ..utils import int_or_none 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-translation_table = { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+_translation_table = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     'a': 'h', 'd': 'e', 'e': 'v', 'f': 'o', 'g': 'f', 'i': 'd', 'l': 'n', 
														 | 
														
														 | 
														
															     'a': 'h', 'd': 'e', 'e': 'v', 'f': 'o', 'g': 'f', 'i': 'd', 'l': 'n', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     'm': 'a', 'n': 'm', 'p': 'u', 'q': 't', 'r': 's', 'v': 'p', 'x': 'r', 
														 | 
														
														 | 
														
															     'm': 'a', 'n': 'm', 'p': 'u', 'q': 't', 'r': 's', 'v': 'p', 'x': 'r', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     'y': 'l', 'z': 'i', 
														 | 
														
														 | 
														
															     'y': 'l', 'z': 'i', 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -13,6 +15,10 @@ translation_table = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def _decode(s): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return ''.join(_translation_table.get(c, c) for c in s) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class CliphunterIE(InfoExtractor): 
														 | 
														
														 | 
														
															 class CliphunterIE(InfoExtractor): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     IE_NAME = 'cliphunter' 
														 | 
														
														 | 
														
															     IE_NAME = 'cliphunter' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -22,10 +28,14 @@ class CliphunterIE(InfoExtractor): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ''' 
														 | 
														
														 | 
														
															     ''' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     _TEST = { 
														 | 
														
														 | 
														
															     _TEST = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         'url': 'http://www.cliphunter.com/w/1012420/Fun_Jynx_Maze_solo', 
														 | 
														
														 | 
														
															         'url': 'http://www.cliphunter.com/w/1012420/Fun_Jynx_Maze_solo', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        'file': '1012420.flv', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        'md5': '15e7740f30428abf70f4223478dc1225', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        'md5': 'a2ba71eebf523859fe527a61018f723e', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         'info_dict': { 
														 | 
														
														 | 
														
															         'info_dict': { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'id': '1012420', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'ext': 'mp4', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'title': 'Fun Jynx Maze solo', 
														 | 
														
														 | 
														
															             'title': 'Fun Jynx Maze solo', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'thumbnail': 're:^https?://.*\.jpg$', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'age_limit': 18, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'duration': 1317, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -35,22 +45,55 @@ class CliphunterIE(InfoExtractor): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         webpage = self._download_webpage(url, video_id) 
														 | 
														
														 | 
														
															         webpage = self._download_webpage(url, video_id) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        video_title = self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            r'mediaTitle = "([^"]+)"', webpage, 'title') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         pl_fiji = self._search_regex( 
														 | 
														
														 | 
														
															         pl_fiji = self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             r'pl_fiji = \'([^\']+)\'', webpage, 'video data') 
														 | 
														
														 | 
														
															             r'pl_fiji = \'([^\']+)\'', webpage, 'video data') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         pl_c_qual = self._search_regex( 
														 | 
														
														 | 
														
															         pl_c_qual = self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             r'pl_c_qual = "(.)"', webpage, 'video quality') 
														 | 
														
														 | 
														
															             r'pl_c_qual = "(.)"', webpage, 'video quality') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        video_title = self._search_regex( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            r'mediaTitle = "([^"]+)"', webpage, 'title') 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        video_url = ''.join(translation_table.get(c, c) for c in pl_fiji) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        video_url = _decode(pl_fiji) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         formats = [{ 
														 | 
														
														 | 
														
															         formats = [{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'url': video_url, 
														 | 
														
														 | 
														
															             'url': video_url, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            'format_id': pl_c_qual, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'format_id': 'default-%s' % pl_c_qual, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }] 
														 | 
														
														 | 
														
															         }] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        qualities_json = self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            r'var pl_qualities\s*=\s*(.*?);\n', webpage, 'quality info') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        qualities_data = json.loads(qualities_json) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for i, t in enumerate( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                re.findall(r"pl_fiji_([a-z0-9]+)\s*=\s*'([^']+')", webpage)): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            quality_id, crypted_url = t 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            video_url = _decode(crypted_url) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            f = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                'format_id': quality_id, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                'url': video_url, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                'quality': i, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if quality_id in qualities_data: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                qd = qualities_data[quality_id] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                m = re.match( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    r'''(?x)<b>(?P<width>[0-9]+)x(?P<height>[0-9]+)<\\/b> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        \s*\(\s*(?P<tbr>[0-9]+)\s*kb\\/s''', qd) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if m: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    f['width'] = int(m.group('width')) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    f['height'] = int(m.group('height')) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    f['tbr'] = int(m.group('tbr')) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            formats.append(f) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self._sort_formats(formats) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        thumbnail = self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            r"var\s+mov_thumb\s*=\s*'([^']+)';", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            webpage, 'thumbnail', fatal=False) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        duration = int_or_none(self._search_regex( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            r'pl_dur\s*=\s*([0-9]+)', webpage, 'duration', fatal=False)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return { 
														 | 
														
														 | 
														
															         return { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'id': video_id, 
														 | 
														
														 | 
														
															             'id': video_id, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'title': video_title, 
														 | 
														
														 | 
														
															             'title': video_title, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'formats': formats, 
														 | 
														
														 | 
														
															             'formats': formats, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'duration': duration, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'age_limit': self._rta_search(webpage), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            'thumbnail': thumbnail, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 |