From 59e92b1f1833440bb2190f847eb735cf0f90bc85 Mon Sep 17 00:00:00 2001 From: Simon Sawicki Date: Sun, 27 Aug 2023 00:13:30 +0200 Subject: [PATCH] [rh/urllib] Simplify gzip decoding (#7611) Authored by: Grub4K --- yt_dlp/networking/_urllib.py | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/yt_dlp/networking/_urllib.py b/yt_dlp/networking/_urllib.py index 0c4794954..5a804d99b 100644 --- a/yt_dlp/networking/_urllib.py +++ b/yt_dlp/networking/_urllib.py @@ -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