[motorsport] Fix extraction and make trailing '/' optional
They directly embed a youtube video now.
This commit is contained in:
		| @@ -1,63 +1,49 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import hashlib | ||||
| import json | ||||
| import time | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..compat import ( | ||||
|     compat_parse_qs, | ||||
|     compat_str, | ||||
| ) | ||||
| from ..utils import ( | ||||
|     int_or_none, | ||||
|     compat_urlparse, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class MotorsportIE(InfoExtractor): | ||||
|     IE_DESC = 'motorsport.com' | ||||
|     _VALID_URL = r'http://www\.motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P<id>[^/]+)/(?:$|[?#])' | ||||
|     _VALID_URL = r'http://www\.motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P<id>[^/]+)/?(?:$|[?#])' | ||||
|     _TEST = { | ||||
|         'url': 'http://www.motorsport.com/f1/video/main-gallery/red-bull-racing-2014-rules-explained/', | ||||
|         'md5': '5592cb7c5005d9b2c163df5ac3dc04e4', | ||||
|         'info_dict': { | ||||
|             'id': '7063', | ||||
|             'id': '2-T3WuR-KMM', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Red Bull Racing: 2014 Rules Explained', | ||||
|             'duration': 207, | ||||
|             'duration': 208, | ||||
|             'description': 'A new clip from Red Bull sees Daniel Ricciardo and Sebastian Vettel explain the 2014 Formula One regulations – which are arguably the most complex the sport has ever seen.', | ||||
|             'uploader': 'rainiere', | ||||
|             'thumbnail': r're:^http://.*motorsport\.com/.+\.jpg$' | ||||
|         } | ||||
|             'uploader': 'mcomstaff', | ||||
|             'uploader_id': 'UC334JIYKkVnyFoNCclfZtHQ', | ||||
|             'upload_date': '20140903', | ||||
|             'thumbnail': r're:^https?://.+\.jpg$' | ||||
|         }, | ||||
|         'add_ie': ['Youtube'], | ||||
|         'params': { | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     } | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         display_id = self._match_id(url) | ||||
|         webpage = self._download_webpage(url, display_id) | ||||
|  | ||||
|         flashvars_code = self._html_search_regex( | ||||
|             r'<embed id="player".*?flashvars="([^"]+)"', webpage, 'flashvars') | ||||
|         flashvars = compat_parse_qs(flashvars_code) | ||||
|         params = json.loads(flashvars['parameters'][0]) | ||||
|  | ||||
|         e = compat_str(int(time.time()) + 24 * 60 * 60) | ||||
|         base_video_url = params['location'] + '?e=' + e | ||||
|         s = 'h3hg713fh32' | ||||
|         h = hashlib.md5((s + base_video_url).encode('utf-8')).hexdigest() | ||||
|         video_url = base_video_url + '&h=' + h | ||||
|  | ||||
|         uploader = self._html_search_regex( | ||||
|             r'(?s)<span class="label">Video by: </span>(.*?)</a>', webpage, | ||||
|             'uploader', fatal=False) | ||||
|         iframe_path = self._html_search_regex( | ||||
|             r'<iframe id="player_iframe"[^>]+src="([^"]+)"', webpage, | ||||
|             'iframe path') | ||||
|         iframe = self._download_webpage( | ||||
|             compat_urlparse.urljoin(url, iframe_path), display_id, | ||||
|             'Downloading iframe') | ||||
|         youtube_id = self._search_regex( | ||||
|             r'www.youtube.com/embed/(.{11})', iframe, 'youtube id') | ||||
|  | ||||
|         return { | ||||
|             'id': params['video_id'], | ||||
|             '_type': 'url_transparent', | ||||
|             'display_id': display_id, | ||||
|             'title': params['title'], | ||||
|             'url': video_url, | ||||
|             'description': params.get('description'), | ||||
|             'thumbnail': params.get('main_thumb'), | ||||
|             'duration': int_or_none(params.get('duration')), | ||||
|             'uploader': uploader, | ||||
|             'url': 'https://youtube.com/watch?v=%s' % youtube_id, | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz