mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[nbc] Fix ThePlatform embedded videos
This commit is contained in:
		| @@ -26,8 +26,7 @@ class NBCIE(InfoExtractor): | ||||
|     } | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|         video_id = self._match_id(url) | ||||
|         webpage = self._download_webpage(url, video_id) | ||||
|         theplatform_url = self._search_regex('class="video-player video-player-full" data-mpx-url="(.*?)"', webpage, 'theplatform url') | ||||
|         if theplatform_url.startswith('//'): | ||||
| @@ -57,7 +56,7 @@ class NBCNewsIE(InfoExtractor): | ||||
|             'md5': 'b2421750c9f260783721d898f4c42063', | ||||
|             'info_dict': { | ||||
|                 'id': 'I1wpAI_zmhsQ', | ||||
|                 'ext': 'flv', | ||||
|                 'ext': 'mp4', | ||||
|                 'title': 'How Twitter Reacted To The Snowden Interview', | ||||
|                 'description': 'md5:65a0bd5d76fe114f3c2727aa3a81fe64', | ||||
|             }, | ||||
| @@ -97,6 +96,8 @@ class NBCNewsIE(InfoExtractor): | ||||
|             ] | ||||
|  | ||||
|             for base_url in base_urls: | ||||
|                 if not base_url: | ||||
|                     continue | ||||
|                 playlist_url = base_url + '?form=MPXNBCNewsAPI' | ||||
|                 all_videos = self._download_json(playlist_url, title)['videos'] | ||||
|  | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import json | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     compat_str, | ||||
|     determine_ext, | ||||
|     ExtractorError, | ||||
|     xpath_with_ns, | ||||
| ) | ||||
| @@ -34,10 +35,21 @@ class ThePlatformIE(InfoExtractor): | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     } | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|         if mobj.group('config'): | ||||
|             config_url = url+ '&form=json' | ||||
|             config_url = config_url.replace('swf/', 'config/') | ||||
|             config_url = config_url.replace('onsite/', 'onsite/config/') | ||||
|             config = self._download_json(config_url, video_id, 'Downloading config') | ||||
|             smil_url = config['releaseUrl'] + '&format=SMIL&formats=MPEG4&manifest=f4m' | ||||
|         else: | ||||
|             smil_url = ('http://link.theplatform.com/s/dJ5BDC/{0}/meta.smil?' | ||||
|                 'format=smil&mbr=true'.format(video_id)) | ||||
|  | ||||
|  | ||||
|     def _get_info(self, video_id, smil_url): | ||||
|         meta = self._download_xml(smil_url, video_id) | ||||
|  | ||||
|         try: | ||||
|             error_msg = next( | ||||
|                 n.attrib['abstract'] | ||||
| @@ -89,10 +101,14 @@ class ThePlatformIE(InfoExtractor): | ||||
|                 for f in switch.findall(_x('smil:video')): | ||||
|                     attr = f.attrib | ||||
|                     vbr = int(attr['system-bitrate']) // 1000 | ||||
|                     ext = determine_ext(attr['src']) | ||||
|                     if ext == 'once': | ||||
|                         ext = 'mp4' | ||||
|                     formats.append({ | ||||
|                         'format_id': compat_str(vbr), | ||||
|                         'url': attr['src'], | ||||
|                         'vbr': vbr, | ||||
|                         'ext': ext, | ||||
|                     }) | ||||
|             self._sort_formats(formats) | ||||
|  | ||||
| @@ -104,17 +120,3 @@ class ThePlatformIE(InfoExtractor): | ||||
|             'thumbnail': info['defaultThumbnailUrl'], | ||||
|             'duration': info['duration']//1000, | ||||
|         } | ||||
|          | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|         if mobj.group('config'): | ||||
|             config_url = url+ '&form=json' | ||||
|             config_url = config_url.replace('swf/', 'config/') | ||||
|             config_url = config_url.replace('onsite/', 'onsite/config/') | ||||
|             config = self._download_json(config_url, video_id, 'Downloading config') | ||||
|             smil_url = config['releaseUrl'] + '&format=SMIL&formats=MPEG4&manifest=f4m' | ||||
|         else: | ||||
|             smil_url = ('http://link.theplatform.com/s/dJ5BDC/{0}/meta.smil?' | ||||
|                 'format=smil&mbr=true'.format(video_id)) | ||||
|         return self._get_info(video_id, smil_url) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister