| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 00:25:36 +06:00
										 |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  | from .vimple import SprutoBaseIE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 00:27:44 +06:00
										 |  |  | class MyviIE(SprutoBaseIE): | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |     _VALID_URL = r'''(?x)
 | 
					
						
							|  |  |  |                     https?:// | 
					
						
							| 
									
										
										
										
											2015-07-10 00:07:26 +06:00
										 |  |  |                         myvi\.(?:ru/player|tv)/ | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |                             (?: | 
					
						
							|  |  |  |                                 (?: | 
					
						
							|  |  |  |                                     embed/html| | 
					
						
							| 
									
										
										
										
											2015-07-10 00:27:02 +06:00
										 |  |  |                                     flash| | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |                                     api/Video/Get | 
					
						
							|  |  |  |                                 )/| | 
					
						
							|  |  |  |                                 content/preloader\.swf\?.*\bid= | 
					
						
							|  |  |  |                             ) | 
					
						
							| 
									
										
										
										
											2015-07-10 00:27:02 +06:00
										 |  |  |                             (?P<id>[\da-zA-Z_-]+) | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |                     '''
 | 
					
						
							|  |  |  |     _TESTS = [{ | 
					
						
							|  |  |  |         'url': 'http://myvi.ru/player/embed/html/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0', | 
					
						
							|  |  |  |         'md5': '571bbdfba9f9ed229dc6d34cc0f335bf', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': 'f16b2bbd-cde8-481c-a981-7cd48605df43', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'хозяин жизни', | 
					
						
							|  |  |  |             'thumbnail': 're:^https?://.*\.jpg$', | 
					
						
							|  |  |  |             'duration': 25, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://myvi.ru/player/content/preloader.swf?id=oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wOYf1WFpPfc_bWTKGVf_Zafr0', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://myvi.ru/player/api/Video/Get/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							| 
									
										
										
										
											2015-07-10 00:07:26 +06:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://myvi.tv/embed/html/oTGTNWdyz4Zwy_u1nraolwZ1odenTd9WkTnRfIL9y8VOgHYqOHApE575x4_xxS9Vn0?ap=0', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							| 
									
										
										
										
											2015-07-10 00:27:02 +06:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://myvi.ru/player/flash/ocp2qZrHI-eZnHKQBK4cZV60hslH8LALnk0uBfKsB-Q4WnY26SeGoYPi8HWHxu0O30', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |     }] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 00:25:36 +06:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def _extract_url(cls, webpage): | 
					
						
							|  |  |  |         mobj = re.search( | 
					
						
							| 
									
										
										
										
											2015-07-10 00:27:02 +06:00
										 |  |  |             r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//myvi\.(?:ru/player|tv)/(?:embed/html|flash)/[^"]+)\1', webpage) | 
					
						
							| 
									
										
										
										
											2015-07-10 00:25:36 +06:00
										 |  |  |         if mobj: | 
					
						
							|  |  |  |             return mobj.group('url') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         spruto = self._download_json( | 
					
						
							|  |  |  |             'http://myvi.ru/player/api/Video/Get/%s?sig' % video_id, video_id)['sprutoData'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return self._extract_spruto(spruto, video_id) |