[nhl] Skip invalid m3u8 formats (closes #10713)
authorYen Chi Hsuan <yan12125@gmail.com>
Tue, 11 Oct 2016 12:50:52 +0000 (20:50 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Tue, 11 Oct 2016 12:50:52 +0000 (20:50 +0800)
ChangeLog
youtube_dl/extractor/nhl.py

index 76c446a6da51d00ce3cb0043706346fd64b4a8ed..9a7e7133b44061505b197f0c6270808d176d7f0e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@ Core
 * [Makefile] Support for GNU make < 4 is fixed; BSD make dropped (#9387)
 
 Extractors
+* [nhl] Correctly handle invalid formats (#10713)
 * [footyroom] Fix extraction (#10810)
 * [abc.net.au:iview] Fix for standalone (non series) videos (#10895)
 + [hbo] Add support for episode pages (#10892)
index 26149c88ff649742105c1b2c3797e0eaabb93f07..62ce800c072d2a316a0c6b8b7479cc89dc29b90d 100644 (file)
@@ -274,6 +274,18 @@ class NHLIE(InfoExtractor):
             'upload_date': '20160204',
             'timestamp': 1454544904,
         },
+    }, {
+        # Some m3u8 URLs are invalid (https://github.com/rg3/youtube-dl/issues/10713)
+        'url': 'https://www.nhl.com/predators/video/poile-laviolette-on-subban-trade/t-277437416/c-44315003',
+        'md5': '50b2bb47f405121484dda3ccbea25459',
+        'info_dict': {
+            'id': '44315003',
+            'ext': 'mp4',
+            'title': 'Poile, Laviolette on Subban trade',
+            'description': 'General manager David Poile and head coach Peter Laviolette share their thoughts on acquiring P.K. Subban from Montreal (06/29/16)',
+            'timestamp': 1467242866,
+            'upload_date': '20160629',
+        },
     }, {
         'url': 'https://www.wch2016.com/video/caneur-best-of-game-2-micd-up/t-281230378/c-44983703',
         'only_matching': True,
@@ -301,9 +313,11 @@ class NHLIE(InfoExtractor):
                 continue
             ext = determine_ext(playback_url)
             if ext == 'm3u8':
-                formats.extend(self._extract_m3u8_formats(
+                m3u8_formats = self._extract_m3u8_formats(
                     playback_url, video_id, 'mp4', 'm3u8_native',
-                    m3u8_id=playback.get('name', 'hls'), fatal=False))
+                    m3u8_id=playback.get('name', 'hls'), fatal=False)
+                self._check_formats(m3u8_formats, video_id)
+                formats.extend(m3u8_formats)
             else:
                 height = int_or_none(playback.get('height'))
                 formats.append({