diff options
Diffstat (limited to 'youtube_dl/downloader/f4m.py')
| -rw-r--r-- | youtube_dl/downloader/f4m.py | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/youtube_dl/downloader/f4m.py b/youtube_dl/downloader/f4m.py index e6be6ae6c..71353f607 100644 --- a/youtube_dl/downloader/f4m.py +++ b/youtube_dl/downloader/f4m.py @@ -220,6 +220,7 @@ class F4mFD(FileDownloader):      def real_download(self, filename, info_dict):          man_url = info_dict['url'] +        requested_bitrate = info_dict.get('tbr')          self.to_screen('[download] Downloading f4m manifest')          manifest = self.ydl.urlopen(man_url).read()          self.report_destination(filename) @@ -233,8 +234,14 @@ class F4mFD(FileDownloader):          doc = etree.fromstring(manifest)          formats = [(int(f.attrib.get('bitrate', -1)), f) for f in doc.findall(_add_ns('media'))] -        formats = sorted(formats, key=lambda f: f[0]) -        rate, media = formats[-1] +        if requested_bitrate is None: +            # get the best format +            formats = sorted(formats, key=lambda f: f[0]) +            rate, media = formats[-1] +        else: +            rate, media = list(filter( +                lambda f: int(f[0]) == requested_bitrate, formats))[0] +          base_url = compat_urlparse.urljoin(man_url, media.attrib['url'])          bootstrap = base64.b64decode(doc.find(_add_ns('bootstrapInfo')).text)          metadata = base64.b64decode(media.find(_add_ns('metadata')).text)  | 
