diff options
| -rw-r--r-- | youtube_dl/extractor/common.py | 26 | ||||
| -rw-r--r-- | youtube_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 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()  | 
