Browse Source

Add automatic generation of format note based on bitrate and codecs

Philipp Hagemeister 11 years ago
parent
commit
91c7271aab
3 changed files with 25 additions and 4 deletions
  1. 17 1
      youtube_dl/YoutubeDL.py
  2. 4 0
      youtube_dl/extractor/common.py
  3. 4 3
      youtube_dl/extractor/vevo.py

+ 17 - 1
youtube_dl/YoutubeDL.py

@@ -781,12 +781,28 @@ class YoutubeDL(object):
         return res
         return res
 
 
     def list_formats(self, info_dict):
     def list_formats(self, info_dict):
+        def format_note(fdict):
+            if fdict.get('format_note') is not None:
+                return fdict['format_note']
+            res = u''
+            if fdict.get('vcodec') is not None:
+                res += fdict['vcodec']
+            if fdict.get('vbr') is not None:
+                res += u'@%4dk' % fdict['vbr']
+            if fdict.get('acodec') is not None:
+                if res:
+                    res += u', '
+                res += fdict['acodec']
+            if fdict.get('abr') is not None:
+                res += u'@%3dk' % fdict['abr']
+            return res
+
         def line(format):
         def line(format):
             return (u'%-20s%-10s%-12s%s' % (
             return (u'%-20s%-10s%-12s%s' % (
                 format['format_id'],
                 format['format_id'],
                 format['ext'],
                 format['ext'],
                 self.format_resolution(format),
                 self.format_resolution(format),
-                format.get('format_note', ''),
+                format_note(format),
                 )
                 )
             )
             )
 
 

+ 4 - 0
youtube_dl/extractor/common.py

@@ -71,6 +71,10 @@ class InfoExtractor(object):
                                 ("3D" or "DASH video")
                                 ("3D" or "DASH video")
                     * width     Width of the video, if known
                     * width     Width of the video, if known
                     * height    Height of the video, if known
                     * height    Height of the video, if known
+                    * abr       Average audio bitrate in KBit/s
+                    * acodec    Name of the audio codec in use
+                    * vbr       Average video bitrate in KBit/s
+                    * vcodec    Name of the video codec in use
     webpage_url:    The url to the video webpage, if given to youtube-dl it
     webpage_url:    The url to the video webpage, if given to youtube-dl it
                     should allow to get the same result again. (It will be set
                     should allow to get the same result again. (It will be set
                     by YoutubeDL if it's missing)
                     by YoutubeDL if it's missing)

+ 4 - 3
youtube_dl/extractor/vevo.py

@@ -78,12 +78,13 @@ class VevoIE(InfoExtractor):
                 continue
                 continue
 
 
             format_url = self._SMIL_BASE_URL + m.group('path')
             format_url = self._SMIL_BASE_URL + m.group('path')
-            format_note = ('%(vcodec)s@%(vbr)4sk, %(acodec)s@%(abr)3sk' %
-                           m.groupdict())
             formats.append({
             formats.append({
                 'url': format_url,
                 'url': format_url,
                 'format_id': u'SMIL_' + m.group('cbr'),
                 'format_id': u'SMIL_' + m.group('cbr'),
-                'format_note': format_note,
+                'vcodec': m.group('vcodec'),
+                'acodec': m.group('acodec'),
+                'vbr': int(m.group('vbr')),
+                'abr': int(m.group('abr')),
                 'ext': m.group('ext'),
                 'ext': m.group('ext'),
                 'width': int(m.group('width')),
                 'width': int(m.group('width')),
                 'height': int(m.group('height')),
                 'height': int(m.group('height')),