default info_dict['format'] to info_dict['ext'] and make the YT one more verbose
authorFilippo Valsorda <filippo.valsorda@gmail.com>
Tue, 27 Nov 2012 16:20:25 +0000 (17:20 +0100)
committerFilippo Valsorda <filippo.valsorda@gmail.com>
Tue, 27 Nov 2012 16:20:25 +0000 (17:20 +0100)
youtube_dl/FileDownloader.py
youtube_dl/InfoExtractors.py

index b6aebe4ac24f5dfcbdaf044730365b833eeab091..69d169904937d2d2ac7f06459a49b3a4782ed291 100644 (file)
@@ -355,6 +355,9 @@ class FileDownloader(object):
                # Keep for backwards compatibility
                info_dict['stitle'] = info_dict['title']
 
+               if not 'format' in info_dict:
+                       info_dict['format'] = info_dict['ext']
+
                reason = self._match_entry(info_dict)
                if reason is not None:
                        self.to_screen(u'[download] ' + reason)
index 13b04ab5bcce4ee1e57e46afab0b198f1a477991..44b2472c2677334b935f9e0723d53d43cd915a5e 100644 (file)
@@ -29,33 +29,34 @@ class InfoExtractor(object):
        """Information Extractor class.
 
        Information extractors are the classes that, given a URL, extract
-       information from the video (or videos) the URL refers to. This
-       information includes the real video URL, the video title and simplified
-       title, author and others. The information is stored in a dictionary
-       which is then passed to the FileDownloader. The FileDownloader
-       processes this information possibly downloading the video to the file
-       system, among other possible outcomes. The dictionaries must include
-       the following fields:
-
-       id:             Video identifier.
-       url:            Final video URL.
-       uploader:       Nickname of the video uploader.
-       title:          Literal title.
-       ext:            Video filename extension.
-       format:         Video format.
-       player_url:     SWF Player URL (may be None).
-
-       The following fields are optional. Their primary purpose is to allow
-       youtube-dl to serve as the backend for a video search function, such
-       as the one in youtube2mp3.  They are only used when their respective
-       forced printing functions are called:
-
-       thumbnail:      Full URL to a video thumbnail image.
-       description:    One-line video description.
+       information about the video (or videos) the URL refers to. This
+       information includes the real video URL, the video title, author and
+       others. The information is stored in a dictionary which is then 
+       passed to the FileDownloader. The FileDownloader processes this
+       information possibly downloading the video to the file system, among
+       other possible outcomes.
+
+       The dictionaries must include the following fields:
+
+       id:         Video identifier.
+       url:        Final video URL.
+       uploader:   Nickname of the video uploader.
+       title:      Video title, unescaped.
+       ext:        Video filename extension.
+       player_url: SWF Player URL (may be None).
+
+       The following fields are optional:
+
+       format:         The video format, defaults to ext. Used by --get-format
+       thumbnail:      Full URL to a video thumbnail image.
+       description     One-line video description.
 
        Subclasses of this one should re-define the _real_initialize() and
        _real_extract() methods and define a _VALID_URL regexp.
        Probably, they should also be added to the list of extractors.
+
+       _real_extract() must return a *list* of information dictionaries as
+       described above.
        """
 
        _ready = False
@@ -475,6 +476,9 @@ class YoutubeIE(InfoExtractor):
                        # Extension
                        video_extension = self._video_extensions.get(format_param, 'flv')
 
+                       video_format = '{} - {}'.format(format_param.decode('utf-8') if format_param else video_extension.decode('utf-8'),
+                                                           self._video_dimensions.get(format_param, '???'))
+
                        results.append({
                                'id':           video_id.decode('utf-8'),
                                'url':          video_real_url.decode('utf-8'),
@@ -482,7 +486,7 @@ class YoutubeIE(InfoExtractor):
                                'upload_date':  upload_date,
                                'title':        video_title,
                                'ext':          video_extension.decode('utf-8'),
-                               'format':       (format_param is None and u'NA' or format_param.decode('utf-8')),
+                               'format':       video_format,
                                'thumbnail':    video_thumbnail.decode('utf-8'),
                                'description':  video_description,
                                'player_url':   player_url,
@@ -616,7 +620,6 @@ class MetacafeIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        video_title,
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -715,7 +718,6 @@ class DailymotionIE(InfoExtractor):
                        'upload_date':  video_upload_date,
                        'title':        video_title,
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -810,7 +812,6 @@ class GoogleIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        video_title,
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -877,7 +878,6 @@ class PhotobucketIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        video_title,
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -1282,7 +1282,6 @@ class GenericIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        video_title,
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -1888,7 +1887,6 @@ class DepositFilesIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        file_title,
                        'ext':          file_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -2243,7 +2241,6 @@ class MyVideoIE(InfoExtractor):
                        'upload_date':  u'NA',
                        'title':        video_title,
                        'ext':          u'flv',
-                       'format':       u'NA',
                        'player_url':   None,
                }]
 
@@ -2501,7 +2498,6 @@ class EscapistIE(InfoExtractor):
                        'upload_date': None,
                        'title': showName,
                        'ext': 'flv',
-                       'format': 'flv',
                        'thumbnail': imgUrl,
                        'description': description,
                        'player_url': playerUrl,
@@ -2566,7 +2562,6 @@ class CollegeHumorIE(InfoExtractor):
                        info['url'] = videoNode.findall('./file')[0].text
                        info['thumbnail'] = videoNode.findall('./thumbnail')[0].text
                        info['ext'] = info['url'].rpartition('.')[2]
-                       info['format'] = info['ext']
                except IndexError:
                        self._downloader.trouble(u'\nERROR: Invalid metadata XML file')
                        return
@@ -2637,7 +2632,6 @@ class XVideosIE(InfoExtractor):
                        'upload_date': None,
                        'title': video_title,
                        'ext': 'flv',
-                       'format': 'flv',
                        'thumbnail': video_thumbnail,
                        'description': None,
                        'player_url': None,
@@ -2734,7 +2728,6 @@ class SoundcloudIE(InfoExtractor):
                        'upload_date':  upload_date,
                        'title':        title,
                        'ext':          u'mp3',
-                       'format':       u'NA',
                        'player_url':   None,
                        'description': description.decode('utf-8')
                }]
@@ -2802,8 +2795,7 @@ class InfoQIE(InfoExtractor):
                        'uploader': None,
                        'upload_date': None,
                        'title': video_title,
-                       'ext': extension,
-                       'format': extension, # Extension is always(?) mp4, but seems to be flv
+                       'ext': extension, # Extension is always(?) mp4, but seems to be flv
                        'thumbnail': None,
                        'description': video_description,
                        'player_url': None,
@@ -2967,7 +2959,6 @@ class StanfordOpenClassroomIE(InfoExtractor):
                                self._downloader.trouble(u'\nERROR: Invalid metadata XML file')
                                return
                        info['ext'] = info['url'].rpartition('.')[2]
-                       info['format'] = info['ext']
                        return [info]
                elif mobj.group('course'): # A course page
                        course = mobj.group('course')
@@ -3241,7 +3232,6 @@ class YoukuIE(InfoExtractor):
                                'uploader': None,
                                'title': video_title,
                                'ext': ext,
-                               'format': u'NA'
                        }
                        files_info.append(info)
 
@@ -3305,7 +3295,6 @@ class XNXXIE(InfoExtractor):
                                'upload_date': None,
                                'title': video_title,
                                'ext': 'flv',
-                               'format': 'flv',
                                'thumbnail': video_thumbnail,
                                'description': None,
                                'player_url': None}
@@ -3432,6 +3421,5 @@ class GooglePlusIE(InfoExtractor):
                        'upload_date':  upload_date.decode('utf-8'),
                        'title':        video_title.decode('utf-8'),
                        'ext':          video_extension.decode('utf-8'),
-                       'format':       u'NA',
                        'player_url':   None,
                }]