diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2014-10-27 01:14:17 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2014-10-27 01:14:17 +0100 | 
| commit | 10e3d734723def2d91bdd3d02b85a149c056dcfb (patch) | |
| tree | 90afd203c23f52b379e6c29498efc3e43a83919a | |
| parent | 15956b5aa1867e9511d5edeebc5d4e9e70ed39c0 (diff) | |
[nbc] Fix ThePlatform embedded videos
| -rw-r--r-- | youtube_dl/extractor/nbc.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/theplatform.py | 34 | 
2 files changed, 22 insertions, 19 deletions
| diff --git a/youtube_dl/extractor/nbc.py b/youtube_dl/extractor/nbc.py index e75ab7c39..7b5449031 100644 --- a/youtube_dl/extractor/nbc.py +++ b/youtube_dl/extractor/nbc.py @@ -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'] diff --git a/youtube_dl/extractor/theplatform.py b/youtube_dl/extractor/theplatform.py index 0be793b1c..a04925633 100644 --- a/youtube_dl/extractor/theplatform.py +++ b/youtube_dl/extractor/theplatform.py @@ -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) +        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) | 
