summary refs log tree commit diff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2017-08-19 22:48:00 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2017-08-19 22:48:00 +0800
commit381ad4f30998443fabc4c8633caa548685f49c6b (patch)
treeb50283d66013507617132e13807e0d6010da8eae
parente2481b9b6e621e43fd77e395fd2283ce262b71f3 (diff)
downloadyoutube-dl-381ad4f30998443fabc4c8633caa548685f49c6b.tar.gz
youtube-dl-381ad4f30998443fabc4c8633caa548685f49c6b.tar.xz
youtube-dl-381ad4f30998443fabc4c8633caa548685f49c6b.zip
[liveleak] Support multi-video pages (closes #6542)
-rw-r--r--ChangeLog1
-rw-r--r--youtube_dl/extractor/liveleak.py43
2 files changed, 28 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 320609a4f..c07cb9648 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@ Core
 * [utils] Fix unescapeHTML for misformed string like "&a&quot;" (#13935)
 
 Extractors
++ [liveleak] Support multi-video pages (#6542)
 + [liveleak] Support another liveleak embedding pattern (#13336)
 * [cda] Fix extraction (#13935)
 
diff --git a/youtube_dl/extractor/liveleak.py b/youtube_dl/extractor/liveleak.py
index d23eaa355..246aac576 100644
--- a/youtube_dl/extractor/liveleak.py
+++ b/youtube_dl/extractor/liveleak.py
@@ -72,6 +72,13 @@ class LiveLeakIE(InfoExtractor):
         'params': {
             'skip_download': True,
         },
+    }, {
+        'url': 'https://www.liveleak.com/view?i=677_1439397581',
+        'info_dict': {
+            'id': '677_1439397581',
+            'title': 'Fuel Depot in China Explosion caught on video',
+        },
+        'playlist_count': 3,
     }]
 
     @staticmethod
@@ -109,26 +116,30 @@ class LiveLeakIE(InfoExtractor):
                 'age_limit': age_limit,
             }
 
-        info_dict = entries[0]
+        for idx, info_dict in enumerate(entries):
+            for a_format in info_dict['formats']:
+                if not a_format.get('height'):
+                    a_format['height'] = int_or_none(self._search_regex(
+                        r'([0-9]+)p\.mp4', a_format['url'], 'height label',
+                        default=None))
 
-        for a_format in info_dict['formats']:
-            if not a_format.get('height'):
-                a_format['height'] = int_or_none(self._search_regex(
-                    r'([0-9]+)p\.mp4', a_format['url'], 'height label',
-                    default=None))
+            self._sort_formats(info_dict['formats'])
 
-        self._sort_formats(info_dict['formats'])
+            # Don't append entry ID for one-video pages to keep backward compatibility
+            if len(entries) > 1:
+                info_dict['id'] = '%s_%s' % (video_id, idx + 1)
+            else:
+                info_dict['id'] = video_id
 
-        info_dict.update({
-            'id': video_id,
-            'title': video_title,
-            'description': video_description,
-            'uploader': video_uploader,
-            'age_limit': age_limit,
-            'thumbnail': video_thumbnail,
-        })
+            info_dict.update({
+                'title': video_title,
+                'description': video_description,
+                'uploader': video_uploader,
+                'age_limit': age_limit,
+                'thumbnail': video_thumbnail,
+            })
 
-        return info_dict
+        return self.playlist_result(entries, video_id, video_title)
 
 
 class LiveLeakEmbedIE(InfoExtractor):