mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 08:17:08 -05: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