]> jfr.im git - yt-dlp.git/commitdiff
[extractor/foxnews] Fix extractors (#7222)
authorbashonly <redacted>
Sun, 4 Jun 2023 13:37:59 +0000 (08:37 -0500)
committerGitHub <redacted>
Sun, 4 Jun 2023 13:37:59 +0000 (13:37 +0000)
Closes #6050
Authored by: bashonly

yt_dlp/extractor/amp.py
yt_dlp/extractor/foxnews.py

index b0cbd775c02a6274c3866ee0405569472951b802..0d259c549fa315f7420d7015eb497dbb1d3f0bd8 100644 (file)
@@ -5,6 +5,7 @@
     int_or_none,
     mimetype2ext,
     parse_iso8601,
+    strip_jsonp,
     unified_timestamp,
     url_or_none,
 )
@@ -15,7 +16,7 @@ class AMPIE(InfoExtractor):  # XXX: Conventionally, base classes should end with
     def _extract_feed_info(self, url):
         feed = self._download_json(
             url, None, 'Downloading Akamai AMP feed',
-            'Unable to download Akamai AMP feed')
+            'Unable to download Akamai AMP feed', transform_source=strip_jsonp)
         item = feed.get('channel', {}).get('item')
         if not item:
             raise ExtractorError('%s said: %s' % (self.IE_NAME, feed['error']))
@@ -73,8 +74,10 @@ def get_media_node(name, default=None):
                     media_url + '?hdcore=3.4.0&plugin=aasp-3.4.0.132.124',
                     video_id, f4m_id='hds', fatal=False))
             elif ext == 'm3u8':
-                formats.extend(self._extract_m3u8_formats(
-                    media_url, video_id, 'mp4', m3u8_id='hls', fatal=False))
+                fmts, subs = self._extract_m3u8_formats_and_subtitles(
+                    media_url, video_id, 'mp4', m3u8_id='hls', fatal=False)
+                formats.extend(fmts)
+                self._merge_subtitles(subs, target=subtitles)
             else:
                 formats.append({
                     'format_id': media_data.get('media-category', {}).get('@attributes', {}).get('label'),
index 52172aacef5df06d7a89dd27476e646411ef9120..6aa63614efe4b87c05d5e826e69063e43b7abb12 100644 (file)
@@ -7,8 +7,37 @@
 class FoxNewsIE(AMPIE):
     IE_NAME = 'foxnews'
     IE_DESC = 'Fox News and Fox Business Video'
-    _VALID_URL = r'https?://(?P<host>video\.(?:insider\.)?fox(?:news|business)\.com)/v/(?:video-embed\.html\?video_id=)?(?P<id>\d+)'
+    _VALID_URL = r'https?://video\.(?:insider\.)?fox(?:news|business)\.com/v/(?:video-embed\.html\?video_id=)?(?P<id>\d+)'
     _TESTS = [
+        {
+            'url': 'https://video.foxnews.com/v/6320653836112',
+            'info_dict': {
+                'id': '6320653836112',
+                'ext': 'mp4',
+                'title': 'Tucker Carlson joins \'Gutfeld!\' to discuss his new documentary',
+                'thumbnail': r're:^https?://.*\.jpg$',
+                'duration': 404,
+                'upload_date': '20230217',
+                'description': 'md5:858a8a36f59e9ca897d758855bcdfa02',
+                'timestamp': 1676611344.0,
+            },
+            'params': {'skip_download': 'm3u8'},
+        },
+        {
+            # From http://insider.foxnews.com/2016/08/25/univ-wisconsin-student-group-pushing-silence-certain-words
+            'url': 'http://video.insider.foxnews.com/v/video-embed.html?video_id=5099377331001&autoplay=true&share_url=http://insider.foxnews.com/2016/08/25/univ-wisconsin-student-group-pushing-silence-certain-words&share_title=Student%20Group:%20Saying%20%27Politically%20Correct,%27%20%27Trash%27%20and%20%27Lame%27%20Is%20Offensive&share=true',
+            'info_dict': {
+                'id': '5099377331001',
+                'ext': 'mp4',
+                'title': '82416_censoring',
+                'description': '82416_censoring',
+                'upload_date': '20160826',
+                'timestamp': 1472169708.0,
+                'thumbnail': r're:^https?://.*\.jpg$',
+                'duration': 521,
+            },
+            'params': {'skip_download': 'm3u8'},
+        },
         {
             'url': 'http://video.foxnews.com/v/3937480/frozen-in-time/#sp=show-clips',
             'md5': '32aaded6ba3ef0d1c04e238d01031e5e',
@@ -22,6 +51,7 @@ class FoxNewsIE(AMPIE):
                 'upload_date': '20110503',
                 'thumbnail': r're:^https?://.*\.jpg$',
             },
+            'skip': '404 page',
         },
         {
             'url': 'http://video.foxnews.com/v/3922535568001/rep-luis-gutierrez-on-if-obamas-immigration-plan-is-legal/#sp=show-clips',
@@ -36,10 +66,7 @@ class FoxNewsIE(AMPIE):
                 'upload_date': '20141204',
                 'thumbnail': r're:^https?://.*\.jpg$',
             },
-            'params': {
-                # m3u8 download
-                'skip_download': True,
-            },
+            'skip': 'm3u8 HTTP error 400 in web browser',
         },
         {
             'url': 'http://video.foxnews.com/v/video-embed.html?video_id=3937480&d=video.foxnews.com',
@@ -49,11 +76,6 @@ class FoxNewsIE(AMPIE):
             'url': 'http://video.foxbusiness.com/v/4442309889001',
             'only_matching': True,
         },
-        {
-            # From http://insider.foxnews.com/2016/08/25/univ-wisconsin-student-group-pushing-silence-certain-words
-            'url': 'http://video.insider.foxnews.com/v/video-embed.html?video_id=5099377331001&autoplay=true&share_url=http://insider.foxnews.com/2016/08/25/univ-wisconsin-student-group-pushing-silence-certain-words&share_title=Student%20Group:%20Saying%20%27Politically%20Correct,%27%20%27Trash%27%20and%20%27Lame%27%20Is%20Offensive&share=true',
-            'only_matching': True,
-        },
     ]
 
     @classmethod
@@ -67,10 +89,10 @@ def _extract_embed_urls(cls, url, webpage):
             yield f'https://video.foxnews.com/v/video-embed.html?video_id={mobj.group("video_id")}'
 
     def _real_extract(self, url):
-        host, video_id = self._match_valid_url(url).groups()
+        video_id = self._match_id(url)
 
         info = self._extract_feed_info(
-            'http://%s/v/feed/video/%s.js?template=fox' % (host, video_id))
+            f'https://api.foxnews.com/v3/video-player/{video_id}?callback=uid_{video_id}')
         info['id'] = video_id
         return info
 
@@ -78,6 +100,19 @@ def _real_extract(self, url):
 class FoxNewsVideoIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.)?foxnews\.com/video/(?P<id>\d+)'
     _TESTS = [{
+        'url': 'https://www.foxnews.com/video/6328632286112',
+        'info_dict': {
+            'id': '6328632286112',
+            'ext': 'mp4',
+            'title': 'Review: 2023 Toyota Prius Prime',
+            'duration': 155,
+            'thumbnail': r're:^https://.+\.jpg$',
+            'timestamp': 1685720177.0,
+            'upload_date': '20230602',
+            'description': 'md5:b69aafb125b41c1402e9744f53d6edc4',
+        },
+        'params': {'skip_download': 'm3u8'},
+    }, {
         'url': 'https://www.foxnews.com/video/6313058664112',
         'info_dict': {
             'id': '6313058664112',
@@ -89,8 +124,7 @@ class FoxNewsVideoIE(InfoExtractor):
             'title': 'Gutfeld! - Thursday, September 29',
             'timestamp': 1664527538,
         },
-        'expected_warnings': ['Ignoring subtitle tracks'],
-        'params': {'skip_download': 'm3u8'},
+        'skip': '404 page',
     }]
 
     def _real_extract(self, url):
@@ -104,19 +138,22 @@ class FoxNewsArticleIE(InfoExtractor):
 
     _TESTS = [{
         # data-video-id
-        'url': 'http://www.foxnews.com/politics/2016/09/08/buzz-about-bud-clinton-camp-denies-claims-wore-earpiece-at-forum.html',
-        'md5': '83d44e1aff1433e7a29a7b537d1700b5',
+        'url': 'https://www.foxnews.com/politics/2016/09/08/buzz-about-bud-clinton-camp-denies-claims-wore-earpiece-at-forum.html',
+        'md5': 'd2dd6ce809cedeefa96460e964821437',
         'info_dict': {
             'id': '5116295019001',
             'ext': 'mp4',
             'title': 'Trump and Clinton asked to defend positions on Iraq War',
-            'description': 'Veterans react on \'The Kelly File\'',
+            'description': 'Veterans and Fox News host Dana Perino react on \'The Kelly File\' to NBC\'s presidential forum',
             'timestamp': 1473301045,
             'upload_date': '20160908',
+            'thumbnail': r're:^https?://.*\.jpg$',
+            'duration': 426,
         },
+        'params': {'skip_download': 'm3u8'},
     }, {
         # iframe embed
-        'url': 'http://www.foxnews.com/us/2018/03/09/parkland-survivor-kyle-kashuv-on-meeting-trump-his-app-to-prevent-another-school-shooting.amp.html?__twitter_impression=true',
+        'url': 'https://www.foxnews.com/us/2018/03/09/parkland-survivor-kyle-kashuv-on-meeting-trump-his-app-to-prevent-another-school-shooting.amp.html?__twitter_impression=true',
         'info_dict': {
             'id': '5748266721001',
             'ext': 'flv',
@@ -127,9 +164,7 @@ class FoxNewsArticleIE(InfoExtractor):
             'timestamp': 1520594670,
             'upload_date': '20180309',
         },
-        'params': {
-            'skip_download': True,
-        },
+        'skip': '404 page',
     }, {
         'url': 'http://insider.foxnews.com/2016/08/25/univ-wisconsin-student-group-pushing-silence-certain-words',
         'only_matching': True,