aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-08-03 17:47:38 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-08-03 17:48:59 +0530
commitfe0918bb65c828ec81ce904cece58d450c117eba (patch)
treec36e7f7404f8bb2629e765c626e59c3d28f8d88a
parentb99ba3df096cd9c2973f7cf978c58ccfb3fa2200 (diff)
downloadhypervideo-pre-fe0918bb65c828ec81ce904cece58d450c117eba.tar.lz
hypervideo-pre-fe0918bb65c828ec81ce904cece58d450c117eba.tar.xz
hypervideo-pre-fe0918bb65c828ec81ce904cece58d450c117eba.zip
Import ctypes only when necessary
Closes #4541
-rw-r--r--yt_dlp/cookies.py7
-rw-r--r--yt_dlp/utils.py9
2 files changed, 9 insertions, 7 deletions
diff --git a/yt_dlp/cookies.py b/yt_dlp/cookies.py
index df8f97b44..1a164bb31 100644
--- a/yt_dlp/cookies.py
+++ b/yt_dlp/cookies.py
@@ -1,6 +1,5 @@
import base64
import contextlib
-import ctypes
import http.cookiejar
import json
import os
@@ -876,10 +875,12 @@ def _decrypt_windows_dpapi(ciphertext, logger):
References:
- https://docs.microsoft.com/en-us/windows/win32/api/dpapi/nf-dpapi-cryptunprotectdata
"""
- from ctypes.wintypes import DWORD
+
+ import ctypes
+ import ctypes.wintypes
class DATA_BLOB(ctypes.Structure):
- _fields_ = [('cbData', DWORD),
+ _fields_ = [('cbData', ctypes.wintypes.DWORD),
('pbData', ctypes.POINTER(ctypes.c_char))]
buffer = ctypes.create_string_buffer(ciphertext)
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index c0d9c6f79..c3ccb3a78 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -6,7 +6,6 @@ import calendar
import codecs
import collections
import contextlib
-import ctypes
import datetime
import email.header
import email.utils
@@ -1983,6 +1982,7 @@ class LockingUnsupportedError(OSError):
# Cross-platform file locking
if sys.platform == 'win32':
+ import ctypes
import ctypes.wintypes
import msvcrt
@@ -2362,9 +2362,10 @@ def fix_xml_ampersands(xml_str):
def setproctitle(title):
assert isinstance(title, str)
- # ctypes in Jython is not complete
- # http://bugs.jython.org/issue2148
- if sys.platform.startswith('java'):
+ # Workaround for https://github.com/yt-dlp/yt-dlp/issues/4541
+ try:
+ import ctypes
+ except ImportError:
return
try: