aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2016-07-13 15:54:43 +0100
committerRemita Amine <remitamine@gmail.com>2016-07-13 15:58:24 +0100
commit00f4764cb7fdb39e3fd238440c373a2d7712d8d2 (patch)
treecb7b053b28ebb88cafb8c5d9578e8caf44b27af2 /youtube_dl
parent51c2cd0b83777f87fbc45b18f59a6f467717ba57 (diff)
downloadyoutube-dl-00f4764cb7fdb39e3fd238440c373a2d7712d8d2.tar.xz
[common] extract vbr, abr and fps for Unified Streaming Platform m3u8 manifests
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/extractor/common.py26
-rw-r--r--youtube_dl/extractor/wat.py12
2 files changed, 11 insertions, 27 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index df546da27..29544c1a8 100644
--- 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
index de7d6b559..48fc438ed 100644
--- 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()