summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-01-20 21:23:51 +0600
committerSergey M․ <dstftw@gmail.com>2015-01-20 21:23:51 +0600
commit2df54b4ba81a2615d8f5a9016061eed389ba5b6e (patch)
tree691cce1ad48770c49c22627fc608a48b838e86f7
parent030aa5d9e7f482ab7baba18a9ff45e41021d60e3 (diff)
downloadyoutube-dl-2df54b4ba81a2615d8f5a9016061eed389ba5b6e.tar.gz
youtube-dl-2df54b4ba81a2615d8f5a9016061eed389ba5b6e.tar.xz
youtube-dl-2df54b4ba81a2615d8f5a9016061eed389ba5b6e.zip
[nbcnews] Ignore HTTP errors while coping with playlists (Closes #4749)
-rw-r--r--youtube_dl/extractor/nbc.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/youtube_dl/extractor/nbc.py b/youtube_dl/extractor/nbc.py
index 690c46b6a..7ae66616a 100644
--- a/youtube_dl/extractor/nbc.py
+++ b/youtube_dl/extractor/nbc.py
@@ -6,6 +6,7 @@ import json
 from .common import InfoExtractor
 from ..compat import (
     compat_str,
+    compat_HTTPError,
 )
 from ..utils import (
     ExtractorError,
@@ -78,6 +79,16 @@ class NBCNewsIE(InfoExtractor):
             },
             'add_ie': ['ThePlatform'],
         },
+        {
+            'url': 'http://www.nbcnews.com/feature/dateline-full-episodes/full-episode-family-business-n285156',
+            'md5': 'fdbf39ab73a72df5896b6234ff98518a',
+            'info_dict': {
+                'id': 'Wjf9EDR3A_60',
+                'ext': 'mp4',
+                'title': 'FULL EPISODE: Family Business',
+                'description': 'md5:757988edbaae9d7be1d585eb5d55cc04',
+            },
+        },
     ]
 
     def _real_extract(self, url):
@@ -115,10 +126,19 @@ class NBCNewsIE(InfoExtractor):
                 if not base_url:
                     continue
                 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)
+                    all_videos = self._download_json(playlist_url, title)
+                except ExtractorError as ee:
+                    if isinstance(ee.cause, compat_HTTPError):
+                        continue
+                    raise
+
+                if not all_videos or not 'videos' in all_videos:
+                    continue
+
+                try:
+                    info = next(v for v in all_videos['videos'] if v['mpxId'] == mpxid)
                     break
                 except StopIteration:
                     continue