summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2013-10-29 15:09:45 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2013-10-29 15:09:45 +0100
commit57dd9a8f2f5885fb3d909c4905adb69b4749491c (patch)
tree085467580537634cdd77cc925088049f6710a428
parent912cbf5d4ef5b131af88e63815863c389083d077 (diff)
downloadyoutube-dl-57dd9a8f2f5885fb3d909c4905adb69b4749491c.tar.gz
youtube-dl-57dd9a8f2f5885fb3d909c4905adb69b4749491c.tar.xz
youtube-dl-57dd9a8f2f5885fb3d909c4905adb69b4749491c.zip
Nicer --list-formats output
-rw-r--r--youtube_dl/YoutubeDL.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py
index 060678e9b..260cd2809 100644
--- a/youtube_dl/YoutubeDL.py
+++ b/youtube_dl/YoutubeDL.py
@@ -759,6 +759,8 @@ class YoutubeDL(object):
 
     @staticmethod
     def format_resolution(format, default='unknown'):
+        if format.get('_resolution') is not None:
+            return format['_resolution']
         if format.get('height') is not None:
             if format.get('width') is not None:
                 res = u'%sx%s' % (format['width'], format['height'])
@@ -769,19 +771,22 @@ class YoutubeDL(object):
         return res
 
     def list_formats(self, info_dict):
-        formats_s = []
-        for format in info_dict.get('formats', [info_dict]):
-            formats_s.append(u'%-15s%-7s     %-15s%s' % (
+        def line(format):
+            return (u'%-15s%-10s%-12s%s' % (
                 format['format_id'],
                 format['ext'],
-                format.get('format_note', ''),
                 self.format_resolution(format),
+                format.get('format_note', ''),
                 )
             )
+
+        formats_s = list(map(line, info_dict.get('formats', [info_dict])))
         if len(formats_s) != 1:
-            formats_s[0] += ' (worst)'
-            formats_s[-1] += ' (best)'
-        formats_s = "\n".join(formats_s)
-        self.to_screen(u'[info] Available formats for %s:\n'
-            u'format code    extension   note           resolution\n%s' % (
-                info_dict['id'], formats_s))
+            formats_s[0] += (' ' if formats_s[0] else '') + '(worst)'
+            formats_s[-1] += (' ' if formats_s[-1] else '') + '(best)'
+
+        header_line = line({
+            'format_id': u'format code', 'ext': u'extension',
+            '_resolution': u'resolution', 'format_note': u'note'})
+        self.to_screen(u'[info] Available formats for %s:\n%s\n%s' %
+                       (info_dict['id'], header_line, u"\n".join(formats_s)))