[nbcnews] Look in all playlists for video
authorPhilipp Hagemeister <phihag@phihag.de>
Mon, 21 Jul 2014 16:06:21 +0000 (18:06 +0200)
committerPhilipp Hagemeister <phihag@phihag.de>
Mon, 21 Jul 2014 16:06:21 +0000 (18:06 +0200)
youtube_dl/extractor/nbc.py

index aa34665d1669f32ab31a02618c58ef9c4b130fe2..70aa98aee3e5d3044080e6a5d2d1605955cda49e 100644 (file)
@@ -85,11 +85,25 @@ class NBCNewsIE(InfoExtractor):
                 flags=re.MULTILINE)
             bootstrap = json.loads(bootstrap_json)
             info = bootstrap['results'][0]['video']
-            playlist_url = info['fallbackPlaylistUrl'] + '?form=MPXNBCNewsAPI'
             mpxid = info['mpxId']
-            all_videos = self._download_json(playlist_url, title)['videos']
-            # The response contains additional videos
-            info = next(v for v in all_videos if v['mpxId'] == mpxid)
+
+            base_urls = [
+                info['fallbackPlaylistUrl'],
+                info['associatedPlaylistUrl'],
+            ]
+
+            for base_url in base_urls:
+                playlist_url = base_url + '?form=MPXNBCNewsAPI'
+                all_videos = self._download_json(playlist_url, title)['videos']
+
+                try:
+                    info = next(v for v in all_videos if v['mpxId'] == mpxid)
+                    break
+                except StopIteration:
+                    continue
+
+            if info is None:
+                raise ExtractorError('Could not find video in playlists')
 
             return {
                 '_type': 'url',