[pluralsight] Process all clip URLs (closes #10984)
[youtube-dl] / youtube_dl / extractor / wimp.py
index 9a6bb0c768a046e96bac0aa3dd39875821119e83..54eb5142793827f8b733592d22b979d326593bee 100644 (file)
@@ -1,33 +1,57 @@
 from __future__ import unicode_literals
 
-import re
+from .youtube import YoutubeIE
+from .jwplatform import JWPlatformBaseIE
 
-from .common import InfoExtractor
 
-
-class WimpIE(InfoExtractor):
-    _VALID_URL = r'(?:http://)?(?:www\.)?wimp\.com/([^/]+)/'
-    _TEST = {
-        'url': 'http://www.wimp.com/deerfence/',
-        'file': 'deerfence.flv',
-        'md5': '8b215e2e0168c6081a1cf84b2846a2b5',
+class WimpIE(JWPlatformBaseIE):
+    _VALID_URL = r'https?://(?:www\.)?wimp\.com/(?P<id>[^/]+)'
+    _TESTS = [{
+        'url': 'http://www.wimp.com/maru-is-exhausted/',
+        'md5': 'ee21217ffd66d058e8b16be340b74883',
         'info_dict': {
-            "title": "Watch Till End: Herd of deer jump over a fence.",
-            "description": "These deer look as fluid as running water when they jump over this fence as a herd. This video is one that needs to be watched until the very end for the true majesty to be witnessed, but once it comes, it's sure to take your breath away.",
+            'id': 'maru-is-exhausted',
+            'ext': 'mp4',
+            'title': 'Maru is exhausted.',
+            'description': 'md5:57e099e857c0a4ea312542b684a869b8',
         }
-    }
+    }, {
+        'url': 'http://www.wimp.com/clowncar/',
+        'md5': '5c31ad862a90dc5b1f023956faec13fe',
+        'info_dict': {
+            'id': 'cG4CEr2aiSg',
+            'ext': 'webm',
+            'title': 'Basset hound clown car...incredible!',
+            'description': '5 of my Bassets crawled in this dog loo! www.bellinghambassets.com\n\nFor licensing/usage please contact: licensing(at)jukinmediadotcom',
+            'upload_date': '20140303',
+            'uploader': 'Gretchen Hoey',
+            'uploader_id': 'gretchenandjeff1',
+        },
+        'add_ie': ['Youtube'],
+    }]
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
-        video_id = mobj.group(1)
+        video_id = self._match_id(url)
+
         webpage = self._download_webpage(url, video_id)
-        video_url = self._search_regex(
-            r's1\.addVariable\("file",\s*"([^"]+)"\);', webpage, 'video URL')
 
-        return {
+        youtube_id = self._search_regex(
+            r"videoId\s*:\s*[\"']([0-9A-Za-z_-]{11})[\"']",
+            webpage, 'video URL', default=None)
+        if youtube_id:
+            return {
+                '_type': 'url',
+                'url': youtube_id,
+                'ie_key': YoutubeIE.ie_key(),
+            }
+
+        info_dict = self._extract_jwplayer_data(
+            webpage, video_id, require_title=False)
+
+        info_dict.update({
             'id': video_id,
-            'url': video_url,
             'title': self._og_search_title(webpage),
-            'thumbnail': self._og_search_thumbnail(webpage),
             'description': self._og_search_description(webpage),
-        }
+        })
+
+        return info_dict