| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											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)
 | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  |                         (?: | 
					
						
							|  |  |  |                             https?:// | 
					
						
							|  |  |  |                                 (?:www\.)? | 
					
						
							| 
									
										
										
										
											2018-02-08 23:02:05 +07:00
										 |  |  |                                 myvi\. | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |                                 (?: | 
					
						
							| 
									
										
										
										
											2018-02-08 23:02:05 +07:00
										 |  |  |                                     (?:ru/player|tv)/ | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  |                                     (?: | 
					
						
							| 
									
										
										
										
											2018-02-08 23:02:05 +07:00
										 |  |  |                                         (?: | 
					
						
							|  |  |  |                                             embed/html| | 
					
						
							|  |  |  |                                             flash| | 
					
						
							|  |  |  |                                             api/Video/Get | 
					
						
							|  |  |  |                                         )/| | 
					
						
							|  |  |  |                                         content/preloader\.swf\?.*\bid= | 
					
						
							|  |  |  |                                     )| | 
					
						
							|  |  |  |                                     ru/watch/ | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  |                                 )| | 
					
						
							|  |  |  |                             myvi: | 
					
						
							|  |  |  |                         ) | 
					
						
							|  |  |  |                         (?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': 'хозяин жизни', | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |             'thumbnail': r're:^https?://.*\.jpg$', | 
					
						
							| 
									
										
										
										
											2015-07-09 23:53:50 +06:00
										 |  |  |             '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, | 
					
						
							| 
									
										
										
										
											2018-02-08 23:02:05 +07:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'https://www.myvi.ru/watch/YwbqszQynUaHPn_s82sx0Q2', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'myvi:YwbqszQynUaHPn_s82sx0Q2', | 
					
						
							|  |  |  |         '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) | 
					
						
							| 
									
										
										
										
											2018-02-08 22:57:33 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MyviEmbedIE(InfoExtractor): | 
					
						
							|  |  |  |     _VALID_URL = r'https?://(?:www\.)?myvi\.tv/(?:[^?]+\?.*?\bv=|embed/)(?P<id>[\da-z]+)' | 
					
						
							|  |  |  |     _TESTS = [{ | 
					
						
							|  |  |  |         'url': 'https://www.myvi.tv/embed/ccdqic3wgkqwpb36x9sxg43t4r', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': 'b3ea0663-3234-469d-873e-7fecf36b31d1', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'Твоя (original song).mp4', | 
					
						
							|  |  |  |             'thumbnail': r're:^https?://.*\.jpg$', | 
					
						
							|  |  |  |             'duration': 277, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         'params': { | 
					
						
							|  |  |  |             'skip_download': True, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'https://www.myvi.tv/idmi6o?v=ccdqic3wgkqwpb36x9sxg43t4r#watch', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |     }] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def suitable(cls, url): | 
					
						
							|  |  |  |         return False if MyviIE.suitable(url) else super(MyviEmbedIE, cls).suitable(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         webpage = self._download_webpage( | 
					
						
							|  |  |  |             'https://www.myvi.tv/embed/%s' % video_id, video_id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         myvi_id = self._search_regex( | 
					
						
							|  |  |  |             r'CreatePlayer\s*\(\s*["\'].*?\bv=([\da-zA-Z_]+)', | 
					
						
							|  |  |  |             webpage, 'video id') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return self.url_result('myvi:%s' % myvi_id, ie=MyviIE.ie_key()) |