65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import os.path | ||
|  | import xml.etree.ElementTree | ||
|  | 
 | ||
|  | from .common import InfoExtractor | ||
|  | from ..utils import ( | ||
|  |     compat_urllib_parse_urlparse, | ||
|  | 
 | ||
|  |     ExtractorError, | ||
|  | ) | ||
|  | 
 | ||
|  | 
 | ||
|  | class MySpassIE(InfoExtractor): | ||
|  |     _VALID_URL = r'http://www.myspass.de/.*' | ||
|  | 
 | ||
|  |     def _real_extract(self, url): | ||
|  |         META_DATA_URL_TEMPLATE = 'http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=%s' | ||
|  | 
 | ||
|  |         # video id is the last path element of the URL | ||
|  |         # usually there is a trailing slash, so also try the second but last | ||
|  |         url_path = compat_urllib_parse_urlparse(url).path | ||
|  |         url_parent_path, video_id = os.path.split(url_path) | ||
|  |         if not video_id: | ||
|  |             _, video_id = os.path.split(url_parent_path) | ||
|  | 
 | ||
|  |         # get metadata | ||
|  |         metadata_url = META_DATA_URL_TEMPLATE % video_id | ||
|  |         metadata_text = self._download_webpage(metadata_url, video_id) | ||
|  |         metadata = xml.etree.ElementTree.fromstring(metadata_text.encode('utf-8')) | ||
|  | 
 | ||
|  |         # extract values from metadata | ||
|  |         url_flv_el = metadata.find('url_flv') | ||
|  |         if url_flv_el is None: | ||
|  |             raise ExtractorError(u'Unable to extract download url') | ||
|  |         video_url = url_flv_el.text | ||
|  |         extension = os.path.splitext(video_url)[1][1:] | ||
|  |         title_el = metadata.find('title') | ||
|  |         if title_el is None: | ||
|  |             raise ExtractorError(u'Unable to extract title') | ||
|  |         title = title_el.text | ||
|  |         format_id_el = metadata.find('format_id') | ||
|  |         if format_id_el is None: | ||
|  |             format = 'mp4' | ||
|  |         else: | ||
|  |             format = format_id_el.text | ||
|  |         description_el = metadata.find('description') | ||
|  |         if description_el is not None: | ||
|  |             description = description_el.text | ||
|  |         else: | ||
|  |             description = None | ||
|  |         imagePreview_el = metadata.find('imagePreview') | ||
|  |         if imagePreview_el is not None: | ||
|  |             thumbnail = imagePreview_el.text | ||
|  |         else: | ||
|  |             thumbnail = None | ||
|  |         info = { | ||
|  |             'id': video_id, | ||
|  |             'url': video_url, | ||
|  |             'title': title, | ||
|  |             'ext': extension, | ||
|  |             'format': format, | ||
|  |             'thumbnail': thumbnail, | ||
|  |             'description': description | ||
|  |         } | ||
|  |         return [info] |