]> jfr.im git - yt-dlp.git/commitdiff
[rh/urllib] Simplify gzip decoding (#7611)
authorSimon Sawicki <redacted>
Sat, 26 Aug 2023 22:13:30 +0000 (00:13 +0200)
committerGitHub <redacted>
Sat, 26 Aug 2023 22:13:30 +0000 (00:13 +0200)
Authored by: Grub4K

yt_dlp/networking/_urllib.py

index 0c4794954b76f04244a28d9f37a8c67cc2154b36..5a804d99b472a30a05c4a5bafc8f73bac65387c1 100644 (file)
@@ -1,7 +1,6 @@
 from __future__ import annotations
 
 import functools
-import gzip
 import http.client
 import io
 import socket
@@ -155,20 +154,9 @@ def brotli(data):
 
     @staticmethod
     def gz(data):
-        gz = gzip.GzipFile(fileobj=io.BytesIO(data), mode='rb')
-        try:
-            return gz.read()
-        except OSError as original_oserror:
-            # There may be junk add the end of the file
-            # See http://stackoverflow.com/q/4928560/35070 for details
-            for i in range(1, 1024):
-                try:
-                    gz = gzip.GzipFile(fileobj=io.BytesIO(data[:-i]), mode='rb')
-                    return gz.read()
-                except OSError:
-                    continue
-            else:
-                raise original_oserror
+        # There may be junk added the end of the file
+        # We ignore it by only ever decoding a single gzip payload
+        return zlib.decompress(data, wbits=zlib.MAX_WBITS | 16)
 
     def http_request(self, req):
         # According to RFC 3986, URLs can not contain non-ASCII characters, however this is not