| 
									
										
										
										
											2016-03-12 22:13:25 +01:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2018-05-16 19:11:48 +01:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     int_or_none, | 
					
						
							|  |  |  |     parse_codecs, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2016-03-12 22:13:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MinotoIE(InfoExtractor): | 
					
						
							|  |  |  |     _VALID_URL = r'(?:minoto:|https?://(?:play|iframe|embed)\.minoto-video\.com/(?P<player_id>[0-9]+)/)(?P<id>[a-zA-Z0-9]+)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         mobj = re.match(self._VALID_URL, url) | 
					
						
							|  |  |  |         player_id = mobj.group('player_id') or '1' | 
					
						
							|  |  |  |         video_id = mobj.group('id') | 
					
						
							|  |  |  |         video_data = self._download_json('http://play.minoto-video.com/%s/%s.js' % (player_id, video_id), video_id) | 
					
						
							|  |  |  |         video_metadata = video_data['video-metadata'] | 
					
						
							|  |  |  |         formats = [] | 
					
						
							|  |  |  |         for fmt in video_data['video-files']: | 
					
						
							|  |  |  |             fmt_url = fmt.get('url') | 
					
						
							|  |  |  |             if not fmt_url: | 
					
						
							|  |  |  |                 continue | 
					
						
							|  |  |  |             container = fmt.get('container') | 
					
						
							|  |  |  |             if container == 'hls': | 
					
						
							|  |  |  |                 formats.extend(fmt_url, video_id, 'mp4', m3u8_id='hls', fatal=False) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 fmt_profile = fmt.get('profile') or {} | 
					
						
							| 
									
										
										
										
											2018-05-16 19:11:48 +01:00
										 |  |  |                 formats.append({ | 
					
						
							| 
									
										
										
										
											2016-03-12 22:13:25 +01:00
										 |  |  |                     'format_id': fmt_profile.get('name-short'), | 
					
						
							|  |  |  |                     'format_note': fmt_profile.get('name'), | 
					
						
							|  |  |  |                     'url': fmt_url, | 
					
						
							|  |  |  |                     'container': container, | 
					
						
							|  |  |  |                     'tbr': int_or_none(fmt.get('bitrate')), | 
					
						
							|  |  |  |                     'filesize': int_or_none(fmt.get('filesize')), | 
					
						
							|  |  |  |                     'width': int_or_none(fmt.get('width')), | 
					
						
							|  |  |  |                     'height': int_or_none(fmt.get('height')), | 
					
						
							| 
									
										
										
										
											2018-05-16 19:11:48 +01:00
										 |  |  |                     'codecs': parse_codecs(fmt.get('codecs')), | 
					
						
							|  |  |  |                 }) | 
					
						
							| 
									
										
										
										
											2016-03-12 22:13:25 +01:00
										 |  |  |         self._sort_formats(formats) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'title': video_metadata['title'], | 
					
						
							|  |  |  |             'description': video_metadata.get('description'), | 
					
						
							|  |  |  |             'thumbnail': video_metadata.get('video-poster', {}).get('url'), | 
					
						
							|  |  |  |             'formats': formats, | 
					
						
							|  |  |  |         } |