| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | from ..utils import ExtractorError | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class YinYueTaiIE(InfoExtractor): | 
					
						
							|  |  |  |     IE_NAME = 'yinyuetai:video' | 
					
						
							| 
									
										
										
										
											2015-07-11 00:57:59 +08:00
										 |  |  |     IE_DESC = '音悦Tai' | 
					
						
							| 
									
										
										
										
											2015-07-08 23:40:19 +06:00
										 |  |  |     _VALID_URL = r'https?://v\.yinyuetai\.com/video(?:/h5)?/(?P<id>[0-9]+)' | 
					
						
							| 
									
										
										
										
											2015-07-09 00:50:32 +08:00
										 |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  |         'url': 'http://v.yinyuetai.com/video/2322376', | 
					
						
							|  |  |  |         'md5': '6e3abe28d38e3a54b591f9f040595ce0', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '2322376', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': '少女时代_PARTY_Music Video Teaser', | 
					
						
							|  |  |  |             'creator': '少女时代', | 
					
						
							| 
									
										
										
										
											2015-07-09 01:07:45 +08:00
										 |  |  |             'duration': 25, | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |             'thumbnail': r're:^https?://.*\.jpg$', | 
					
						
							| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2015-07-09 00:50:32 +08:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://v.yinyuetai.com/video/h5/2322376', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |     }] | 
					
						
							| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         info = self._download_json( | 
					
						
							|  |  |  |             'http://ext.yinyuetai.com/main/get-h-mv-info?json=true&videoId=%s' % video_id, video_id, | 
					
						
							|  |  |  |             'Downloading mv info')['videoInfo']['coreVideoInfo'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if info['error']: | 
					
						
							|  |  |  |             raise ExtractorError(info['errorMsg'], expected=True) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-09 00:54:37 +08:00
										 |  |  |         formats = [{ | 
					
						
							|  |  |  |             'url': format_info['videoUrl'], | 
					
						
							|  |  |  |             'format_id': format_info['qualityLevel'], | 
					
						
							| 
									
										
										
										
											2015-07-09 01:07:45 +08:00
										 |  |  |             'format': format_info.get('qualityLevelName'), | 
					
						
							|  |  |  |             'filesize': format_info.get('fileSize'), | 
					
						
							|  |  |  |             # though URLs ends with .flv, the downloaded files are in fact mp4 | 
					
						
							| 
									
										
										
										
											2015-07-09 00:54:37 +08:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2015-07-09 01:07:45 +08:00
										 |  |  |             'tbr': format_info.get('bitrate'), | 
					
						
							| 
									
										
										
										
											2015-07-09 00:54:37 +08:00
										 |  |  |         } for format_info in info['videoUrlModels']] | 
					
						
							| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  |         self._sort_formats(formats) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'title': info['videoName'], | 
					
						
							| 
									
										
										
										
											2015-07-09 01:07:45 +08:00
										 |  |  |             'thumbnail': info.get('bigHeadImage'), | 
					
						
							|  |  |  |             'creator': info.get('artistNames'), | 
					
						
							|  |  |  |             'duration': info.get('duration'), | 
					
						
							| 
									
										
										
										
											2015-07-06 15:26:49 +08:00
										 |  |  |             'formats': formats, | 
					
						
							|  |  |  |         } |