68 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # coding: utf-8 | ||
|  | from __future__ import unicode_literals | ||
|  | 
 | ||
|  | import re | ||
|  | 
 | ||
|  | from .common import InfoExtractor | ||
|  | from ..utils import ( | ||
|  |     ExtractorError, | ||
|  |     int_or_none, | ||
|  |     qualities, | ||
|  |     xpath_text, | ||
|  | ) | ||
|  | 
 | ||
|  | 
 | ||
|  | class TurboIE(InfoExtractor): | ||
|  |     _VALID_URL = r'https?://(?:www\.)?turbo\.fr/videos-voiture/(?P<id>[0-9]+)-' | ||
|  |     _API_URL = 'http://www.turbo.fr/api/tv/xml.php?player_generique=player_generique&id={0:}' | ||
|  |     _TEST = { | ||
|  |         'url': 'http://www.turbo.fr/videos-voiture/454443-turbo-du-07-09-2014-renault-twingo-3-bentley-continental-gt-speed-ces-guide-achat-dacia.html', | ||
|  |         'md5': '33f4b91099b36b5d5a91f84b5bcba600', | ||
|  |         'info_dict': { | ||
|  |             'id': '454443', | ||
|  |             'ext': 'mp4', | ||
|  |             'duration': 3715, | ||
|  |             'title': 'Turbo du 07/09/2014 : Renault Twingo 3, Bentley Continental GT Speed, CES, Guide Achat Dacia... ', | ||
|  |             'description': 'Retrouvez dans cette rubrique toutes les vidéos de l\'Turbo du 07/09/2014 : Renault Twingo 3, Bentley Continental GT Speed, CES, Guide Achat Dacia... ', | ||
|  |             'thumbnail': 're:^https?://.*\.jpg$', | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     def _real_extract(self, url): | ||
|  |         mobj = re.match(self._VALID_URL, url) | ||
|  |         video_id = mobj.group('id') | ||
|  | 
 | ||
|  |         webpage = self._download_webpage(url, video_id) | ||
|  | 
 | ||
|  |         playlist = self._download_xml(self._API_URL.format(video_id), video_id) | ||
|  |         item = playlist.find('./channel/item') | ||
|  |         if item is None: | ||
|  |             raise ExtractorError('Playlist item was not found', expected=True) | ||
|  | 
 | ||
|  |         title = xpath_text(item, './title', 'title') | ||
|  |         duration = int_or_none(xpath_text(item, './durate', 'duration')) | ||
|  |         thumbnail = xpath_text(item, './visuel_clip', 'thumbnail') | ||
|  |         description = self._og_search_description(webpage) | ||
|  | 
 | ||
|  |         formats = [] | ||
|  |         get_quality = qualities(['3g', 'sd', 'hq']) | ||
|  |         for child in item: | ||
|  |             m = re.search(r'url_video_(?P<quality>.+)', child.tag) | ||
|  |             if m: | ||
|  |                 quality = m.group('quality') | ||
|  |                 formats.append({ | ||
|  |                     'format_id': quality, | ||
|  |                     'url': child.text, | ||
|  |                     'quality': get_quality(quality), | ||
|  |                 }) | ||
|  |         self._sort_formats(formats) | ||
|  | 
 | ||
|  |         return { | ||
|  |             'id': video_id, | ||
|  |             'title': title, | ||
|  |             'duration': duration, | ||
|  |             'thumbnail': thumbnail, | ||
|  |             'description': description, | ||
|  |             'formats': formats, | ||
|  |         } |