summaryrefslogtreecommitdiffstats
path: root/yt_dlp/compat
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/compat')
-rw-r--r--yt_dlp/compat/_legacy.py2
-rw-r--r--yt_dlp/compat/functools.py2
-rw-r--r--yt_dlp/compat/imghdr.py26
3 files changed, 18 insertions, 12 deletions
diff --git a/yt_dlp/compat/_legacy.py b/yt_dlp/compat/_legacy.py
index 7ea5d08..dfc792e 100644
--- a/yt_dlp/compat/_legacy.py
+++ b/yt_dlp/compat/_legacy.py
@@ -35,7 +35,7 @@ from .compat_utils import passthrough_module
from ..dependencies import brotli as compat_brotli # noqa: F401
from ..dependencies import websockets as compat_websockets # noqa: F401
from ..dependencies.Cryptodome import AES as compat_pycrypto_AES # noqa: F401
-from ..networking.exceptions import HTTPError as compat_HTTPError # noqa: F401
+from ..networking.exceptions import HTTPError as compat_HTTPError
passthrough_module(__name__, '...utils', ('WINDOWS_VT_MODE', 'windows_enable_vt_mode'))
diff --git a/yt_dlp/compat/functools.py b/yt_dlp/compat/functools.py
index 36c9836..9668957 100644
--- a/yt_dlp/compat/functools.py
+++ b/yt_dlp/compat/functools.py
@@ -7,6 +7,6 @@ passthrough_module(__name__, 'functools')
del passthrough_module
try:
- cache # >= 3.9
+ _ = cache # >= 3.9
except NameError:
cache = lru_cache(maxsize=None)
diff --git a/yt_dlp/compat/imghdr.py b/yt_dlp/compat/imghdr.py
index 5d64ab0..4ae173f 100644
--- a/yt_dlp/compat/imghdr.py
+++ b/yt_dlp/compat/imghdr.py
@@ -1,16 +1,22 @@
-tests = {
- 'webp': lambda h: h[0:4] == b'RIFF' and h[8:] == b'WEBP',
- 'png': lambda h: h[:8] == b'\211PNG\r\n\032\n',
- 'jpeg': lambda h: h[6:10] in (b'JFIF', b'Exif'),
- 'gif': lambda h: h[:6] in (b'GIF87a', b'GIF89a'),
-}
-
-
def what(file=None, h=None):
"""Detect format of image (Currently supports jpeg, png, webp, gif only)
- Ref: https://github.com/python/cpython/blob/3.10/Lib/imghdr.py
+ Ref: https://github.com/python/cpython/blob/3.11/Lib/imghdr.py
+ Ref: https://www.w3.org/Graphics/JPEG/itu-t81.pdf
"""
if h is None:
with open(file, 'rb') as f:
h = f.read(12)
- return next((type_ for type_, test in tests.items() if test(h)), None)
+
+ if h.startswith(b'RIFF') and h.startswith(b'WEBP', 8):
+ return 'webp'
+
+ if h.startswith(b'\x89PNG'):
+ return 'png'
+
+ if h.startswith(b'\xFF\xD8\xFF'):
+ return 'jpeg'
+
+ if h.startswith(b'GIF'):
+ return 'gif'
+
+ return None