[wsj:article] Add extractor
authorJohn Hawkinson <jhawk@mit.edu>
Sat, 25 Mar 2017 23:47:48 +0000 (19:47 -0400)
committerSergey M․ <dstftw@gmail.com>
Sat, 15 Apr 2017 13:58:57 +0000 (20:58 +0700)
youtube_dl/extractor/extractors.py
youtube_dl/extractor/wsj.py

index 1671090f47caab4f8a02b05166645942aabafd1d..72d28a7e65f7a5ea9d6be5631586b7542e483d12 100644 (file)
@@ -1233,7 +1233,10 @@ from .wrzuta import (
     WrzutaIE,
     WrzutaPlaylistIE,
 )
-from .wsj import WSJIE
+from .wsj import (
+    WSJIE,
+    WSJArticleIE,
+)
 from .xbef import XBefIE
 from .xboxclips import XboxClipsIE
 from .xfileshare import XFileShareIE
index deb7483ae51699df4670675db4622503320f1cbc..ec38a2ad8e5d900e2b4143b9ede160072bdb35c2 100644 (file)
@@ -10,10 +10,11 @@ from ..utils import (
 
 
 class WSJIE(InfoExtractor):
-    _VALID_URL = r'''(?x)https?://
+    _VALID_URL = r'''(?x)
         (?:
-            video-api\.wsj\.com/api-video/player/iframe\.html\?guid=|
-            (?:www\.)?wsj\.com/video/[^/]+/
+            https?://video-api\.wsj\.com/api-video/player/iframe\.html\?guid=|
+            https?://(?:www\.)?wsj\.com/video/[^/]+/|
+            wsj:
         )
         (?P<id>[a-zA-Z0-9-]+)'''
     IE_DESC = 'Wall Street Journal'
@@ -87,3 +88,24 @@ class WSJIE(InfoExtractor):
             'title': title,
             'categories': info.get('keywords'),
         }
+
+
+class WSJArticleIE(InfoExtractor):
+    _VALID_URL = r'(?i)https?://(?:www\.)?wsj\.com/articles/(?P<id>\w[^/]+)'
+    _TESTS = [{
+        'url': 'https://www.wsj.com/articles/dont-like-china-no-pandas-for-you-1490366939?',
+        'info_dict': {
+            'id': '4B13FA62-1D8C-45DB-8EA1-4105CB20B362',
+            'ext': 'mp4',
+            'upload_date': '20170221',
+            'uploader_id': 'ralcaraz',
+            'title': 'Bao Bao the Panda Leaves for China',
+        }
+    }]
+
+    def _real_extract(self, url):
+        article_id = self._match_id(url)
+        webpage = self._download_webpage(url, article_id)
+        video_id = self._search_regex(r'data-src=["\']([A-Z0-9\-]+)',
+                                      webpage, 'video id')
+        return self.url_result('wsj:%s' % video_id, WSJIE.ie_key(), video_id)