summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-10-01 07:01:21 +0700
committerSergey M․ <dstftw@gmail.com>2017-10-01 07:01:42 +0700
commitc5b7014a9c936ab8cd0c3b8514a278575c414aa1 (patch)
treeab77437496a50097a4134841be0193d57931f22d
parentc8da40d834697c343f64609b2cfbb3ff759c18a4 (diff)
downloadyoutube-dl-c5b7014a9c936ab8cd0c3b8514a278575c414aa1.tar.gz
youtube-dl-c5b7014a9c936ab8cd0c3b8514a278575c414aa1.tar.xz
youtube-dl-c5b7014a9c936ab8cd0c3b8514a278575c414aa1.zip
[generic] Add support for single format Video.js embeds (closes #14371)
-rw-r--r--youtube_dl/extractor/generic.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index a3d09a036..1721a3dbd 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -1133,7 +1133,7 @@ class GenericIE(InfoExtractor):
             }
         },
         {
-            # Video.js embed
+            # Video.js embed, multiple formats
             'url': 'http://ortcam.com/solidworks-урок-6-настройка-чертежа_33f9b7351.html',
             'info_dict': {
                 'id': 'yygqldloqIk',
@@ -1148,6 +1148,19 @@ class GenericIE(InfoExtractor):
                 'skip_download': True,
             },
         },
+        {
+            # Video.js embed, single format
+            'url': 'https://www.vooplayer.com/v3/watch/watch.php?v=NzgwNTg=',
+            'info_dict': {
+                'id': 'watch',
+                'ext': 'mp4',
+                'title': 'Step 1 -  Good Foundation',
+                'description': 'md5:d1e7ff33a29fc3eb1673d6c270d344f4',
+            },
+            'params': {
+                'skip_download': True,
+            },
+        },
         # rtl.nl embed
         {
             'url': 'http://www.rtlnieuws.nl/nieuws/buitenland/aanslagen-kopenhagen',
@@ -2900,12 +2913,14 @@ class GenericIE(InfoExtractor):
 
         # Video.js embed
         mobj = re.search(
-            r'(?s)\bvideojs\s*\(.+?\bplayer\.src\s*\(\s*(\[.+?\])\s*\)\s*;',
+            r'(?s)\bvideojs\s*\(.+?\.src\s*\(\s*((?:\[.+?\]|{.+?}))\s*\)\s*;',
             webpage)
         if mobj is not None:
             sources = self._parse_json(
                 mobj.group(1), video_id, transform_source=js_to_json,
                 fatal=False) or []
+            if not isinstance(sources, list):
+                sources = [sources]
             formats = []
             for source in sources:
                 src = source.get('src')