浏览代码

[yahoo] Use centralized sorting, and add tbr field

Philipp Hagemeister 11 年之前
父节点
当前提交
7217e148fb
共有 4 个文件被更改,包括 13 次插入6 次删除
  1. 2 0
      youtube_dl/YoutubeDL.py
  2. 1 0
      youtube_dl/extractor/common.py
  3. 6 6
      youtube_dl/extractor/yahoo.py
  4. 4 0
      youtube_dl/utils.py

+ 2 - 0
youtube_dl/YoutubeDL.py

@@ -1018,6 +1018,8 @@ class YoutubeDL(object):
                 res += u'(unsupported) '
             if fdict.get('format_note') is not None:
                 res += fdict['format_note'] + u' '
+            if fdict.get('tbr') is not None:
+                res += u'%4dk ' % fdict['tbr']
             if (fdict.get('vcodec') is not None and
                     fdict.get('vcodec') != 'none'):
                 res += u'%-5s@' % fdict['vcodec']

+ 1 - 0
youtube_dl/extractor/common.py

@@ -57,6 +57,7 @@ class InfoExtractor(object):
                     * width      Width of the video, if known
                     * height     Height of the video, if known
                     * resolution Textual description of width and height
+                    * tbr        Average bitrate of audio and video in KBit/s
                     * abr        Average audio bitrate in KBit/s
                     * acodec     Name of the audio codec in use
                     * vbr        Average video bitrate in KBit/s

+ 6 - 6
youtube_dl/extractor/yahoo.py

@@ -6,8 +6,8 @@ from .common import InfoExtractor, SearchInfoExtractor
 from ..utils import (
     compat_urllib_parse,
     compat_urlparse,
-    determine_ext,
     clean_html,
+    int_or_none,
 )
 
 
@@ -68,9 +68,9 @@ class YahooIE(InfoExtractor):
         formats = []
         for s in info['streams']:
             format_info = {
-                'width': s.get('width'),
-                'height': s.get('height'),
-                'bitrate': s.get('bitrate'),
+                'width': int_or_none(s.get('width')),
+                'height': int_or_none(s.get('height')),
+                'tbr': int_or_none(s.get('bitrate')),
             }
 
             host = s['host']
@@ -84,10 +84,10 @@ class YahooIE(InfoExtractor):
             else:
                 format_url = compat_urlparse.urljoin(host, path)
                 format_info['url'] = format_url
-                format_info['ext'] = determine_ext(format_url)
                 
             formats.append(format_info)
-        formats = sorted(formats, key=lambda f:(f['height'], f['width']))
+
+        self._sort_formats(formats)
 
         return {
             'id': video_id,

+ 4 - 0
youtube_dl/utils.py

@@ -1098,3 +1098,7 @@ def url_basename(url):
 class HEADRequest(compat_urllib_request.Request):
     def get_method(self):
         return "HEAD"
+
+
+def int_or_none(v):
+    return v if v is None else int(v)