[toggle] Extract thumbnails
authorSergey M․ <dstftw@gmail.com>
Sat, 19 Dec 2015 13:19:26 +0000 (19:19 +0600)
committerSergey M․ <dstftw@gmail.com>
Sat, 19 Dec 2015 13:19:26 +0000 (19:19 +0600)
youtube_dl/extractor/togglesg.py

index 244c79e8d34d7119d9a8993ec60099ca65e5f375..a2b89d6bb49d93b333dec1d46a4597e07b1e4bde 100644 (file)
@@ -2,6 +2,7 @@
 from __future__ import unicode_literals
 
 import json
+import re
 
 from .common import InfoExtractor
 from ..utils import (
@@ -119,12 +120,8 @@ class ToggleSgIE(InfoExtractor):
         info = self._download_json(req, video_id, 'Downloading video info json')
 
         title = info['MediaName']
-        duration = int_or_none(info.get('Duration'))
-        thumbnail = info.get('PicURL')
-        description = info.get('Description')
-        created_at = parse_iso8601(info.get('CreationDate') or None)
-        formats = []
 
+        formats = []
         for video_file in info.get('Files', []):
             ext = determine_ext(video_file['URL'])
             vid_format = video_file['Format'].replace(' ', '')
@@ -146,19 +143,40 @@ class ToggleSgIE(InfoExtractor):
                     'preference': self._FORMAT_PREFERENCES.get(ext + '-' + vid_format) or -1,
                     'format_note': 'DRM-protected video' if ext == 'wvm' else None
                 })
-
         if not formats:
             # Most likely because geo-blocked
             raise ExtractorError('No downloadable videos found', expected=True)
-
         self._sort_formats(formats)
 
+        duration = int_or_none(info.get('Duration'))
+        description = info.get('Description')
+        created_at = parse_iso8601(info.get('CreationDate') or None)
+
+        thumbnails = []
+        for picture in info.get('Pictures', []):
+            if not isinstance(picture, dict):
+                continue
+            pic_url = picture.get('URL')
+            if not pic_url:
+                continue
+            thumbnail = {
+                'url': pic_url,
+            }
+            pic_size = picture.get('PicSize', '')
+            m = re.search(r'(?P<width>\d+)[xX](?P<height>\d+)', pic_size)
+            if m:
+                thumbnail.update({
+                    'width': int(m.group('width')),
+                    'height': int(m.group('height')),
+                })
+            thumbnails.append(thumbnail)
+
         return {
             'id': video_id,
             'title': title,
             'description': description,
             'duration': duration,
             'timestamp': created_at,
-            'thumbnail': thumbnail,
+            'thumbnails': thumbnails,
             'formats': formats,
         }