]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/foxnews.py
[extractors] Use new framework for existing embeds (#4307)
[yt-dlp.git] / yt_dlp / extractor / foxnews.py
index 18fa0a5efb9a8894954414c58c70d2a54f9bb881..2343dd20d232ac0f6ce09be93751550f81d21ff6 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import unicode_literals
-
 import re
 
 from .amp import AMPIE
@@ -58,13 +56,16 @@ class FoxNewsIE(AMPIE):
         },
     ]
 
-    @staticmethod
-    def _extract_urls(webpage):
+    @classmethod
+    def _extract_embed_urls(cls, url, webpage):
         return [
-            mobj.group('url')
+            f'https://video.foxnews.com/v/video-embed.html?video_id={mobj.group("video_id")}'
             for mobj in re.finditer(
-                r'<(?:amp-)?iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//video\.foxnews\.com/v/video-embed\.html?.*?\bvideo_id=\d+.*?)\1',
-                webpage)]
+                r'''(?x)
+                    <(?:script|(?:amp-)?iframe)[^>]+\bsrc=["\']
+                    (?:https?:)?//video\.foxnews\.com/v/(?:video-embed\.html|embed\.js)\?
+                    (?:[^>"\']+&)?(?:video_)?id=(?P<video_id>\d+)
+                ''', webpage)]
 
     def _real_extract(self, url):
         host, video_id = self._match_valid_url(url).groups()
@@ -124,4 +125,4 @@ def _real_extract(self, url):
                 'http://video.foxnews.com/v/' + video_id, FoxNewsIE.ie_key())
 
         return self.url_result(
-            FoxNewsIE._extract_urls(webpage)[0], FoxNewsIE.ie_key())
+            FoxNewsIE._extract_embed_urls(url, webpage)[0], FoxNewsIE.ie_key())