Prechádzať zdrojové kódy

[spiegeltv] Simplify and PEP8

Philipp Hagemeister 11 rokov pred
rodič
commit
d551980823

+ 9 - 0
youtube_dl/YoutubeDL.py

@@ -717,6 +717,15 @@ class YoutubeDL(object):
             info_dict['playlist'] = None
             info_dict['playlist'] = None
             info_dict['playlist_index'] = None
             info_dict['playlist_index'] = None
 
 
+        thumbnails = info_dict.get('thumbnails')
+        if thumbnails:
+            for t in thumbnails:
+                if 'width' in t and 'height' in t:
+                    t['resolution'] = '%dx%d' % (t['width'], t['height'])
+
+        if thumbnails and 'thumbnail' not in info_dict:
+            info_dict['thumbnail'] = thumbnails[-1]['url']
+
         if 'display_id' not in info_dict and 'id' in info_dict:
         if 'display_id' not in info_dict and 'id' in info_dict:
             info_dict['display_id'] = info_dict['id']
             info_dict['display_id'] = info_dict['id']
 
 

+ 6 - 2
youtube_dl/extractor/common.py

@@ -92,8 +92,12 @@ class InfoExtractor(object):
                     unique, but available before title. Typically, id is
                     unique, but available before title. Typically, id is
                     something like "4234987", title "Dancing naked mole rats",
                     something like "4234987", title "Dancing naked mole rats",
                     and display_id "dancing-naked-mole-rats"
                     and display_id "dancing-naked-mole-rats"
-    thumbnails:     A list of dictionaries (with the entries "resolution" and
-                    "url") for the varying thumbnails
+    thumbnails:     A list of dictionaries, with the following entries:
+                        * "url"
+                        * "width" (optional, int)
+                        * "height" (optional, int)
+                        * "resolution" (optional, string "{width}x{height"},
+                                        deprecated)
     thumbnail:      Full URL to a video thumbnail image.
     thumbnail:      Full URL to a video thumbnail image.
     description:    One-line video description.
     description:    One-line video description.
     uploader:       Full name of the video uploader.
     uploader:       Full name of the video uploader.

+ 31 - 18
youtube_dl/extractor/spiegeltv.py

@@ -4,6 +4,7 @@ from __future__ import unicode_literals
 import re
 import re
 from .common import InfoExtractor
 from .common import InfoExtractor
 
 
+
 class SpiegeltvIE(InfoExtractor):
 class SpiegeltvIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.)?spiegel\.tv/filme/(?P<id>[\-a-z0-9]+)'
     _VALID_URL = r'https?://(?:www\.)?spiegel\.tv/filme/(?P<id>[\-a-z0-9]+)'
     _TEST = {
     _TEST = {
@@ -13,6 +14,7 @@ class SpiegeltvIE(InfoExtractor):
             'ext': 'm4v',
             'ext': 'm4v',
             'title': 'Flug MH370',
             'title': 'Flug MH370',
             'description': 'Das Rätsel um die Boeing 777 der Malaysia-Airlines',
             'description': 'Das Rätsel um die Boeing 777 der Malaysia-Airlines',
+            'thumbnail': 're:http://.*\.jpg$',
         },
         },
         'params': {
         'params': {
             # rtmp download
             # rtmp download
@@ -27,36 +29,48 @@ class SpiegeltvIE(InfoExtractor):
         webpage = self._download_webpage(url, video_id)
         webpage = self._download_webpage(url, video_id)
         title = self._html_search_regex(r'<h1.*?>(.*?)</h1>', webpage, 'title')
         title = self._html_search_regex(r'<h1.*?>(.*?)</h1>', webpage, 'title')
 
 
-        apihost           = 'http://spiegeltv-ivms2-restapi.s3.amazonaws.com';
+        apihost = 'http://spiegeltv-ivms2-restapi.s3.amazonaws.com'
+        version_json = self._download_json(
+            '%s/version.json' % apihost, video_id,
+            note='Downloading version information')
+        version_name = version_json['version_name']
 
 
-        version_json      = self._download_json('%s/version.json' % apihost, None)
-        version_name      = version_json['version_name']
+        slug_json = self._download_json(
+            '%s/%s/restapi/slugs/%s.json' % (apihost, version_name, video_id),
+            video_id,
+            note='Downloading object information')
+        oid = slug_json['object_id']
 
 
-        slug_json         = self._download_json('%s/%s/restapi/slugs/%s.json' % (apihost, version_name, video_id), None)
-        oid               = slug_json['object_id']
-              
-        media_json        = self._download_json('%s/%s/restapi/media/%s.json' % (apihost, version_name, oid), None)
-        uuid              = media_json['uuid']
-        is_wide           = media_json['is_wide']
+        media_json = self._download_json(
+            '%s/%s/restapi/media/%s.json' % (apihost, version_name, oid),
+            video_id, note='Downloading media information')
+        uuid = media_json['uuid']
+        is_wide = media_json['is_wide']
 
 
-        server_json       = self._download_json('http://www.spiegel.tv/streaming_servers/', None)
-        server            = server_json[0]['endpoint']
+        server_json = self._download_json(
+            'http://www.spiegel.tv/streaming_servers/', video_id,
+            note='Downloading server information')
+        server = server_json[0]['endpoint']
 
 
         thumbnails = []
         thumbnails = []
         for image in media_json['images']:
         for image in media_json['images']:
-          thumbnails.append({'url': image['url'], 'resolution': str(image['width']) + 'x' + str(image['height']) })
+            thumbnails.append({
+                'url': image['url'],
+                'width': image['width'],
+                'height': image['height'],
+            })
 
 
         description = media_json['subtitle']
         description = media_json['subtitle']
-        duration = int(round(media_json['duration_in_ms'] / 1000))
+        duration = media_json['duration_in_ms'] / 1000.
 
 
         if is_wide:
         if is_wide:
-          format = '16x9'
+            format = '16x9'
         else:
         else:
-          format = '4x3'
+            format = '4x3'
 
 
         url = server + 'mp4:' + uuid + '_spiegeltv_0500_' + format + '.m4v'
         url = server + 'mp4:' + uuid + '_spiegeltv_0500_' + format + '.m4v'
 
 
-        return_dict = {
+        return {
             'id': video_id,
             'id': video_id,
             'title': title,
             'title': title,
             'url': url,
             'url': url,
@@ -64,5 +78,4 @@ class SpiegeltvIE(InfoExtractor):
             'description': description,
             'description': description,
             'duration': duration,
             'duration': duration,
             'thumbnails': thumbnails
             'thumbnails': thumbnails
-        }
-        return return_dict
+        }