From 7217e148fb03ea27edb12a878c959ebefec4c6c3 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Wed, 25 Dec 2013 15:18:40 +0100 Subject: [PATCH] [yahoo] Use centralized sorting, and add tbr field --- youtube_dl/YoutubeDL.py | 2 ++ youtube_dl/extractor/common.py | 1 + youtube_dl/extractor/yahoo.py | 12 ++++++------ youtube_dl/utils.py | 4 ++++ 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 88f4b11f6..a9a3639d7 100644 --- a/youtube_dl/YoutubeDL.py +++ b/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'] diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 05f0cb6d5..6fa60622e 100644 --- a/youtube_dl/extractor/common.py +++ b/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 diff --git a/youtube_dl/extractor/yahoo.py b/youtube_dl/extractor/yahoo.py index 5c9c361b9..e17a39782 100644 --- a/youtube_dl/extractor/yahoo.py +++ b/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, diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 2e48f187e..4c8bdbb0c 100644 --- a/youtube_dl/utils.py +++ b/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)