mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-09 10:50:38 +00:00
[core] Support auto-tty
and no_color-tty
for --color
(#10453)
Authored by: Grub4K
This commit is contained in:
parent
66ce3d76d8
commit
d9cbced493
@ -452,7 +452,8 @@ class YoutubeDL:
|
|||||||
Can also just be a single color policy,
|
Can also just be a single color policy,
|
||||||
in which case it applies to all outputs.
|
in which case it applies to all outputs.
|
||||||
Valid stream names are 'stdout' and 'stderr'.
|
Valid stream names are 'stdout' and 'stderr'.
|
||||||
Valid color policies are one of 'always', 'auto', 'no_color' or 'never'.
|
Valid color policies are one of 'always', 'auto',
|
||||||
|
'no_color', 'never', 'auto-tty' or 'no_color-tty'.
|
||||||
geo_bypass: Bypass geographic restriction via faking X-Forwarded-For
|
geo_bypass: Bypass geographic restriction via faking X-Forwarded-For
|
||||||
HTTP header
|
HTTP header
|
||||||
geo_bypass_country:
|
geo_bypass_country:
|
||||||
@ -659,12 +660,15 @@ class YoutubeDL:
|
|||||||
self.params['color'] = 'no_color'
|
self.params['color'] = 'no_color'
|
||||||
|
|
||||||
term_allow_color = os.getenv('TERM', '').lower() != 'dumb'
|
term_allow_color = os.getenv('TERM', '').lower() != 'dumb'
|
||||||
no_color = bool(os.getenv('NO_COLOR'))
|
base_no_color = bool(os.getenv('NO_COLOR'))
|
||||||
|
|
||||||
def process_color_policy(stream):
|
def process_color_policy(stream):
|
||||||
stream_name = {sys.stdout: 'stdout', sys.stderr: 'stderr'}[stream]
|
stream_name = {sys.stdout: 'stdout', sys.stderr: 'stderr'}[stream]
|
||||||
policy = traverse_obj(self.params, ('color', (stream_name, None), {str}), get_all=False)
|
policy = traverse_obj(self.params, ('color', (stream_name, None), {str}, any)) or 'auto'
|
||||||
if policy in ('auto', None):
|
if policy in ('auto', 'auto-tty', 'no_color-tty'):
|
||||||
|
no_color = base_no_color
|
||||||
|
if policy.endswith('tty'):
|
||||||
|
no_color = policy.startswith('no_color')
|
||||||
if term_allow_color and supports_terminal_sequences(stream):
|
if term_allow_color and supports_terminal_sequences(stream):
|
||||||
return 'no_color' if no_color else True
|
return 'no_color' if no_color else True
|
||||||
return False
|
return False
|
||||||
|
@ -468,7 +468,7 @@ def validate_options(opts):
|
|||||||
default_downloader = ed.get_basename()
|
default_downloader = ed.get_basename()
|
||||||
|
|
||||||
for policy in opts.color.values():
|
for policy in opts.color.values():
|
||||||
if policy not in ('always', 'auto', 'no_color', 'never'):
|
if policy not in ('always', 'auto', 'auto-tty', 'no_color', 'no_color-tty', 'never'):
|
||||||
raise ValueError(f'"{policy}" is not a valid color policy')
|
raise ValueError(f'"{policy}" is not a valid color policy')
|
||||||
|
|
||||||
warnings, deprecation_warnings = [], []
|
warnings, deprecation_warnings = [], []
|
||||||
|
@ -462,6 +462,7 @@ def create_parser():
|
|||||||
'the STREAM (stdout or stderr) to apply the setting to. '
|
'the STREAM (stdout or stderr) to apply the setting to. '
|
||||||
'Can be one of "always", "auto" (default), "never", or '
|
'Can be one of "always", "auto" (default), "never", or '
|
||||||
'"no_color" (use non color terminal sequences). '
|
'"no_color" (use non color terminal sequences). '
|
||||||
|
'Use "auto-tty" or "no_color-tty" to decide based on terminal support only. '
|
||||||
'Can be used multiple times'))
|
'Can be used multiple times'))
|
||||||
general.add_option(
|
general.add_option(
|
||||||
'--compat-options',
|
'--compat-options',
|
||||||
|
Loading…
Reference in New Issue
Block a user