[ninegag] extract source url
authorremitamine <remitamine@gmail.com>
Tue, 22 Sep 2015 18:20:18 +0000 (19:20 +0100)
committerSergey M․ <dstftw@gmail.com>
Tue, 22 Sep 2015 19:39:06 +0000 (01:39 +0600)
youtube_dl/extractor/ninegag.py

index eee65873a456aac716f0dc89f56703df3962881a..00bf98ef5fa9700350a354a437d6b3d3649f36f3 100644 (file)
@@ -68,8 +68,13 @@ class NineGagIE(InfoExtractor):
         post_view = json.loads(self._html_search_regex(
             r'var postView = new app\.PostView\({\s*post:\s*({.+?}),\s*posts:\s*prefetchedCurrentPost', webpage, 'post view'))
 
-        external_video_id = post_view['videoExternalId']
-        external_video_provider = post_view['videoExternalProvider']
+        ie_key = None
+        source_url = post_view.get('sourceUrl')
+        if not source_url or source_url == '':
+            external_video_id = post_view['videoExternalId']
+            external_video_provider = post_view['videoExternalProvider']
+            source_url = self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['url'] % external_video_id
+            ie_key = self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['ie_key']
         title = post_view['title']
         description = post_view['description']
         view_count = str_to_int(post_view['externalView'])
@@ -77,8 +82,8 @@ class NineGagIE(InfoExtractor):
 
         return {
             '_type': 'url_transparent',
-            'url': self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['url'] % external_video_id,
-            'ie_key': self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['ie_key'],
+            'url': source_url,
+            'ie_key': ie_key,
             'id': video_id,
             'display_id': display_id,
             'title': title,