47 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import re | ||
|  | 
 | ||
|  | from .common import InfoExtractor | ||
|  | from ..utils import ( | ||
|  |     compat_urllib_parse, | ||
|  |     compat_urllib_request, | ||
|  | 
 | ||
|  |     ExtractorError, | ||
|  | ) | ||
|  | 
 | ||
|  | 
 | ||
|  | class Vbox7IE(InfoExtractor): | ||
|  |     """Information Extractor for Vbox7""" | ||
|  |     _VALID_URL = r'(?:http://)?(?:www\.)?vbox7\.com/play:([^/]+)' | ||
|  | 
 | ||
|  |     def _real_extract(self,url): | ||
|  |         mobj = re.match(self._VALID_URL, url) | ||
|  |         if mobj is None: | ||
|  |             raise ExtractorError(u'Invalid URL: %s' % url) | ||
|  |         video_id = mobj.group(1) | ||
|  | 
 | ||
|  |         redirect_page, urlh = self._download_webpage_handle(url, video_id) | ||
|  |         new_location = self._search_regex(r'window\.location = \'(.*)\';', redirect_page, u'redirect location') | ||
|  |         redirect_url = urlh.geturl() + new_location | ||
|  |         webpage = self._download_webpage(redirect_url, video_id, u'Downloading redirect page') | ||
|  | 
 | ||
|  |         title = self._html_search_regex(r'<title>(.*)</title>', | ||
|  |             webpage, u'title').split('/')[0].strip() | ||
|  | 
 | ||
|  |         ext = "flv" | ||
|  |         info_url = "http://vbox7.com/play/magare.do" | ||
|  |         data = compat_urllib_parse.urlencode({'as3':'1','vid':video_id}) | ||
|  |         info_request = compat_urllib_request.Request(info_url, data) | ||
|  |         info_request.add_header('Content-Type', 'application/x-www-form-urlencoded') | ||
|  |         info_response = self._download_webpage(info_request, video_id, u'Downloading info webpage') | ||
|  |         if info_response is None: | ||
|  |             raise ExtractorError(u'Unable to extract the media url') | ||
|  |         (final_url, thumbnail_url) = map(lambda x: x.split('=')[1], info_response.split('&')) | ||
|  | 
 | ||
|  |         return [{ | ||
|  |             'id':        video_id, | ||
|  |             'url':       final_url, | ||
|  |             'ext':       ext, | ||
|  |             'title':     title, | ||
|  |             'thumbnail': thumbnail_url, | ||
|  |         }] |