56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import json
							 | 
						||
| 
								 | 
							
								import re
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from .common import InfoExtractor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class WistiaIE(InfoExtractor):
							 | 
						||
| 
								 | 
							
								    _VALID_URL = r'^https?://(?:fast\.)?wistia\.net/embed/iframe/(?P<id>[a-z0-9]+)'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    _TEST = {
							 | 
						||
| 
								 | 
							
								        u"url": u"http://fast.wistia.net/embed/iframe/sh7fpupwlt",
							 | 
						||
| 
								 | 
							
								        u"file": u"sh7fpupwlt.mov",
							 | 
						||
| 
								 | 
							
								        u"md5": u"cafeb56ec0c53c18c97405eecb3133df",
							 | 
						||
| 
								 | 
							
								        u"info_dict": {
							 | 
						||
| 
								 | 
							
								            u"title": u"cfh_resourceful_zdkh_final_1"
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def _real_extract(self, url):
							 | 
						||
| 
								 | 
							
								        mobj = re.match(self._VALID_URL, url)
							 | 
						||
| 
								 | 
							
								        video_id = mobj.group('id')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        webpage = self._download_webpage(url, video_id)
							 | 
						||
| 
								 | 
							
								        data_json = self._html_search_regex(
							 | 
						||
| 
								 | 
							
								            r'Wistia.iframeInit\((.*?), {}\);', webpage, u'video data')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        data = json.loads(data_json)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        formats = []
							 | 
						||
| 
								 | 
							
								        thumbnails = []
							 | 
						||
| 
								 | 
							
								        for atype, a in data['assets'].items():
							 | 
						||
| 
								 | 
							
								            if atype == 'still':
							 | 
						||
| 
								 | 
							
								                thumbnails.append({
							 | 
						||
| 
								 | 
							
								                    'url': a['url'],
							 | 
						||
| 
								 | 
							
								                    'resolution': '%dx%d' % (a['width'], a['height']),
							 | 
						||
| 
								 | 
							
								                })
							 | 
						||
| 
								 | 
							
								                continue
							 | 
						||
| 
								 | 
							
								            if atype == 'preview':
							 | 
						||
| 
								 | 
							
								                continue
							 | 
						||
| 
								 | 
							
								            formats.append({
							 | 
						||
| 
								 | 
							
								                'format_id': atype,
							 | 
						||
| 
								 | 
							
								                'url': a['url'],
							 | 
						||
| 
								 | 
							
								                'width': a['width'],
							 | 
						||
| 
								 | 
							
								                'height': a['height'],
							 | 
						||
| 
								 | 
							
								                'filesize': a['size'],
							 | 
						||
| 
								 | 
							
								                'ext': a['ext'],
							 | 
						||
| 
								 | 
							
								            })
							 | 
						||
| 
								 | 
							
								        formats.sort(key=lambda a: a['filesize'])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								            'id': video_id,
							 | 
						||
| 
								 | 
							
								            'title': data['name'],
							 | 
						||
| 
								 | 
							
								            'formats': formats,
							 | 
						||
| 
								 | 
							
								            'thumbnails': thumbnails,
							 | 
						||
| 
								 | 
							
								        }
							 |