implement 'output.ansi' option (#2628)
This commit is contained in:
@@ -2948,6 +2948,17 @@ Description
|
||||
.. __: `output.mode`_
|
||||
|
||||
|
||||
output.ansi
|
||||
-----------
|
||||
Type
|
||||
``bool``
|
||||
Default
|
||||
``false``
|
||||
Description
|
||||
| On Windows, enable ANSI escape sequences and colored output
|
||||
| by setting the ``ENABLE_VIRTUAL_TERMINAL_PROCESSING`` flag for stdout and stderr.
|
||||
|
||||
|
||||
output.skip
|
||||
-----------
|
||||
Type
|
||||
|
||||
@@ -334,6 +334,9 @@
|
||||
"#": "while also considering wider East-Asian characters",
|
||||
"shorten": "eaw",
|
||||
|
||||
"#": "enable ANSI escape sequences on Windows",
|
||||
"ansi": true,
|
||||
|
||||
"#": "write logging messages to a separate file",
|
||||
"logfile": {
|
||||
"path": "~/gallery-dl/log.txt",
|
||||
|
||||
@@ -355,6 +355,7 @@
|
||||
"mode": "auto",
|
||||
"progress": true,
|
||||
"shorten": true,
|
||||
"ansi": false,
|
||||
"colors": {
|
||||
"success": "1;32",
|
||||
"skip" : "2"
|
||||
|
||||
@@ -154,6 +154,21 @@ def main():
|
||||
else:
|
||||
signal.signal(signal_num, signal.SIG_IGN)
|
||||
|
||||
# enable ANSI escape sequences on Windows
|
||||
if util.WINDOWS and config.get(("output",), "ansi"):
|
||||
from ctypes import windll, wintypes, byref
|
||||
kernel32 = windll.kernel32
|
||||
mode = wintypes.DWORD()
|
||||
|
||||
for handle_id in (-11, -12): # stdout and stderr
|
||||
handle = kernel32.GetStdHandle(handle_id)
|
||||
kernel32.GetConsoleMode(handle, byref(mode))
|
||||
if not mode.value & 0x4:
|
||||
mode.value |= 0x4
|
||||
kernel32.SetConsoleMode(handle, mode)
|
||||
|
||||
output.ANSI = True
|
||||
|
||||
# extractor modules
|
||||
modules = config.get(("extractor",), "modules")
|
||||
if modules is not None:
|
||||
|
||||
Reference in New Issue
Block a user