]> jfr.im git - yt-dlp.git/commitdiff
[extractor/common] improve Akamai HTTP format extraction
authorRemita Amine <redacted>
Wed, 2 Dec 2020 20:37:14 +0000 (21:37 +0100)
committernixxo <redacted>
Thu, 3 Dec 2020 12:10:24 +0000 (13:10 +0100)
- Allow m3u8 manifest without an additional audio format
- Fix extraction for qualities starting with a number
Solution provided by @nixxo based on: https://stackoverflow.com/a/5984688

youtube_dlc/extractor/common.py

index aacdf06fe171dc8f78fe187c92112014cb3edd33..a56465956c550da65ff920d3b9816335e009aa59 100644 (file)
@@ -2624,7 +2624,7 @@ def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
             REPL_REGEX = r'https://[^/]+/i/([^,]+),([^/]+),([^/]+).csmil/.+'
             qualities = re.match(REPL_REGEX, m3u8_url).group(2).split(',')
             qualities_length = len(qualities)
-            if len(formats) in (qualities_length + 1, qualities_length * 2 + 1):
+            if len(formats) in (qualities_length, qualities_length + 1, qualities_length * 2, qualities_length * 2 + 1):
                 i = 0
                 http_formats = []
                 for f in formats:
@@ -2633,7 +2633,7 @@ def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
                             http_f = f.copy()
                             del http_f['manifest_url']
                             http_url = re.sub(
-                                REPL_REGEX, protocol + r'://%s/\1%s\3' % (http_host, qualities[i]), f['url'])
+                                REPL_REGEX, protocol + r'://%s/\g<1>%s\3' % (http_host, qualities[i]), f['url'])
                             http_f.update({
                                 'format_id': http_f['format_id'].replace('hls-', protocol + '-'),
                                 'url': http_url,