youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 00f4764cb7fdb39e3fd238440c373a2d7712d8d2
parent 51c2cd0b83777f87fbc45b18f59a6f467717ba57
Author: Remita Amine <remitamine@gmail.com>
Date:   Wed, 13 Jul 2016 15:54:43 +0100

[common] extract vbr, abr and fps for Unified Streaming Platform m3u8 manifests

Diffstat:
Myoutube_dl/extractor/common.py | 26++++++++++----------------
Myoutube_dl/extractor/wat.py | 12+-----------
2 files changed, 11 insertions(+), 27 deletions(-)

diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py @@ -1207,6 +1207,7 @@ class InfoExtractor(object): 'url': format_url(line.strip()), 'tbr': tbr, 'ext': ext, + 'fps': float_or_none(last_info.get('FRAME-RATE')), 'protocol': entry_protocol, 'preference': preference, } @@ -1215,24 +1216,17 @@ class InfoExtractor(object): width_str, height_str = resolution.split('x') f['width'] = int(width_str) f['height'] = int(height_str) - codecs = last_info.get('CODECS') - if codecs: - vcodec, acodec = [None] * 2 - va_codecs = codecs.split(',') - if len(va_codecs) == 1: - # Audio only entries usually come with single codec and - # no resolution. For more robustness we also check it to - # be mp4 audio. - if not resolution and va_codecs[0].startswith('mp4a'): - vcodec, acodec = 'none', va_codecs[0] - else: - vcodec = va_codecs[0] - else: - vcodec, acodec = va_codecs[:2] + # Unified Streaming Platform + mobj = re.search( + r'audio.*?(?:%3D|=)(\d+)(?:-video.*?(?:%3D|=)(\d+))?', f['url']) + if mobj: + abr, vbr = mobj.groups() + abr, vbr = float_or_none(abr, 1000), float_or_none(vbr, 1000) f.update({ - 'acodec': acodec, - 'vcodec': vcodec, + 'vbr': vbr, + 'abr': abr, }) + f.update(parse_codecs(last_info.get('CODECS'))) if last_media is not None: f['m3u8_media'] = last_media last_media = None diff --git a/youtube_dl/extractor/wat.py b/youtube_dl/extractor/wat.py @@ -9,7 +9,6 @@ from ..utils import ( ExtractorError, unified_strdate, HEADRequest, - float_or_none, ) @@ -95,16 +94,7 @@ class WatIE(InfoExtractor): m3u8_url.replace('ios.', 'web.').replace('.m3u8', '.f4m'), video_id, f4m_id='hds', fatal=False)) for m3u8_format in m3u8_formats: - mobj = re.search( - r'audio.*?%3D(\d+)(?:-video.*?%3D(\d+))?', m3u8_format['url']) - if not mobj: - continue - abr, vbr = mobj.groups() - abr, vbr = float_or_none(abr, 1000), float_or_none(vbr, 1000) - m3u8_format.update({ - 'vbr': vbr, - 'abr': abr, - }) + vbr, abr = m3u8_format.get('vbr'), m3u8_format.get('abr') if not vbr or not abr: continue f = m3u8_format.copy()