| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  | # coding: utf-8 | 
					
						
							|  |  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import random | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  | from ..utils import xpath_text | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class MatchTVIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  |     _VALID_URL = r'https?://matchtv\.ru(?:/on-air|/?#live-player)' | 
					
						
							|  |  |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |         'url': 'http://matchtv.ru/#live-player', | 
					
						
							|  |  |  |  |         'info_dict': { | 
					
						
							|  |  |  |  |             'id': 'matchtv-live', | 
					
						
							|  |  |  |  |             'ext': 'flv', | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |  |             'title': r're:^Матч ТВ - Прямой эфир \d{4}-\d{2}-\d{2} \d{2}:\d{2}$', | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |             'is_live': True, | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         'params': { | 
					
						
							|  |  |  |  |             'skip_download': True, | 
					
						
							|  |  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  |     }, { | 
					
						
							|  |  |  |  |         'url': 'http://matchtv.ru/on-air/', | 
					
						
							|  |  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |  |     }] | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |  |         video_id = 'matchtv-live' | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  |         video_url = self._download_json( | 
					
						
							|  |  |  |  |             'http://player.matchtv.ntvplus.tv/player/smil', video_id, | 
					
						
							|  |  |  |  |             query={ | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |                 'ts': '', | 
					
						
							|  |  |  |  |                 'quality': 'SD', | 
					
						
							|  |  |  |  |                 'contentId': '561d2c0df7159b37178b4567', | 
					
						
							|  |  |  |  |                 'sign': '', | 
					
						
							|  |  |  |  |                 'includeHighlights': '0', | 
					
						
							|  |  |  |  |                 'userId': '', | 
					
						
							|  |  |  |  |                 'sessionId': random.randint(1, 1000000000), | 
					
						
							|  |  |  |  |                 'contentType': 'channel', | 
					
						
							|  |  |  |  |                 'timeShift': '0', | 
					
						
							|  |  |  |  |                 'platform': 'portal', | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |             headers={ | 
					
						
							|  |  |  |  |                 'Referer': 'http://player.matchtv.ntvplus.tv/embed-player/NTVEmbedPlayer.swf', | 
					
						
							| 
									
										
										
										
											2016-06-12 01:57:23 +07:00
										 |  |  |  |             })['data']['videoUrl'] | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |         f4m_url = xpath_text(self._download_xml(video_url, video_id), './to') | 
					
						
							|  |  |  |  |         formats = self._extract_f4m_formats(f4m_url, video_id) | 
					
						
							| 
									
										
										
										
											2016-03-27 07:03:08 +06:00
										 |  |  |  |         self._sort_formats(formats) | 
					
						
							| 
									
										
										
										
											2016-01-30 18:30:27 +06:00
										 |  |  |  |         return { | 
					
						
							|  |  |  |  |             'id': video_id, | 
					
						
							|  |  |  |  |             'title': self._live_title('Матч ТВ - Прямой эфир'), | 
					
						
							|  |  |  |  |             'is_live': True, | 
					
						
							|  |  |  |  |             'formats': formats, | 
					
						
							|  |  |  |  |         } |