mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[options] Fix --no-config and refactor reading of config files
				
					
				
			Closes #912, #914
This commit is contained in:
		| @@ -235,7 +235,7 @@ def parseOpts(overrideArguments=None): | |||||||
|         help='Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for the search term "large apple". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching') |         help='Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for the search term "large apple". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching') | ||||||
|     general.add_option( |     general.add_option( | ||||||
|         '--ignore-config', '--no-config', |         '--ignore-config', '--no-config', | ||||||
|         action='store_true', |         action='store_true', dest='ignoreconfig', | ||||||
|         help=( |         help=( | ||||||
|             'Disable loading any configuration files except the one provided by --config-location. ' |             'Disable loading any configuration files except the one provided by --config-location. ' | ||||||
|             'When given inside a configuration file, no further configuration files are loaded. ' |             'When given inside a configuration file, no further configuration files are loaded. ' | ||||||
| @@ -1536,57 +1536,47 @@ def parseOpts(overrideArguments=None): | |||||||
|             'command-line': compat_conf(sys.argv[1:]), |             'command-line': compat_conf(sys.argv[1:]), | ||||||
|             'custom': [], 'home': [], 'portable': [], 'user': [], 'system': []} |             'custom': [], 'home': [], 'portable': [], 'user': [], 'system': []} | ||||||
|         paths = {'command-line': False} |         paths = {'command-line': False} | ||||||
|         opts, args = parser.parse_args(configs['command-line']) |  | ||||||
|  |         def read_options(name, path, user=False): | ||||||
|  |             ''' loads config files and returns ignoreconfig ''' | ||||||
|  |             # Multiple package names can be given here | ||||||
|  |             # Eg: ('yt-dlp', 'youtube-dlc', 'youtube-dl') will look for | ||||||
|  |             # the configuration file of any of these three packages | ||||||
|  |             for package in ('yt-dlp',): | ||||||
|  |                 if user: | ||||||
|  |                     config, current_path = _readUserConf(package, default=None) | ||||||
|  |                 else: | ||||||
|  |                     current_path = os.path.join(path, '%s.conf' % package) | ||||||
|  |                     config = _readOptions(current_path, default=None) | ||||||
|  |                 if config is not None: | ||||||
|  |                     configs[name], paths[name] = config, current_path | ||||||
|  |                     return parser.parse_args(config)[0].ignoreconfig | ||||||
|  |             return False | ||||||
|  |  | ||||||
|         def get_configs(): |         def get_configs(): | ||||||
|             if '--config-location' in configs['command-line']: |             opts, _ = parser.parse_args(configs['command-line']) | ||||||
|  |             if opts.config_location is not None: | ||||||
|                 location = compat_expanduser(opts.config_location) |                 location = compat_expanduser(opts.config_location) | ||||||
|                 if os.path.isdir(location): |                 if os.path.isdir(location): | ||||||
|                     location = os.path.join(location, 'yt-dlp.conf') |                     location = os.path.join(location, 'yt-dlp.conf') | ||||||
|                 if not os.path.exists(location): |                 if not os.path.exists(location): | ||||||
|                     parser.error('config-location %s does not exist.' % location) |                     parser.error('config-location %s does not exist.' % location) | ||||||
|                 configs['custom'] = _readOptions(location, default=None) |                 config = _readOptions(location, default=None) | ||||||
|                 if configs['custom'] is None: |                 if config: | ||||||
|                     configs['custom'] = [] |                     configs['custom'], paths['config'] = config, location | ||||||
|                 else: |  | ||||||
|                     paths['custom'] = location |             if opts.ignoreconfig: | ||||||
|             if '--ignore-config' in configs['command-line']: |  | ||||||
|                 return |                 return | ||||||
|             if '--ignore-config' in configs['custom']: |             if parser.parse_args(configs['custom'])[0].ignoreconfig: | ||||||
|                 return |                 return | ||||||
|  |             if read_options('portable', get_executable_path()): | ||||||
|             def read_options(path, user=False): |  | ||||||
|                 # Multiple package names can be given here |  | ||||||
|                 # Eg: ('yt-dlp', 'youtube-dlc', 'youtube-dl') will look for |  | ||||||
|                 # the configuration file of any of these three packages |  | ||||||
|                 for package in ('yt-dlp',): |  | ||||||
|                     if user: |  | ||||||
|                         config, current_path = _readUserConf(package, default=None) |  | ||||||
|                     else: |  | ||||||
|                         current_path = os.path.join(path, '%s.conf' % package) |  | ||||||
|                         config = _readOptions(current_path, default=None) |  | ||||||
|                     if config is not None: |  | ||||||
|                         return config, current_path |  | ||||||
|                 return [], None |  | ||||||
|  |  | ||||||
|             configs['portable'], paths['portable'] = read_options(get_executable_path()) |  | ||||||
|             if '--ignore-config' in configs['portable']: |  | ||||||
|                 return |                 return | ||||||
|  |             opts, _ = parser.parse_args(configs['portable'] + configs['custom'] + configs['command-line']) | ||||||
|             def get_home_path(): |             if read_options('home', expand_path(opts.paths.get('home', '')).strip()): | ||||||
|                 opts = parser.parse_args(configs['portable'] + configs['custom'] + configs['command-line'])[0] |  | ||||||
|                 return expand_path(opts.paths.get('home', '')).strip() |  | ||||||
|  |  | ||||||
|             configs['home'], paths['home'] = read_options(get_home_path()) |  | ||||||
|             if '--ignore-config' in configs['home']: |  | ||||||
|                 return |                 return | ||||||
|  |             if read_options('system', '/etc'): | ||||||
|             configs['system'], paths['system'] = read_options('/etc') |  | ||||||
|             if '--ignore-config' in configs['system']: |  | ||||||
|                 return |                 return | ||||||
|  |             if read_options('user', None, user=True): | ||||||
|             configs['user'], paths['user'] = read_options('', True) |  | ||||||
|             if '--ignore-config' in configs['user']: |  | ||||||
|                 configs['system'], paths['system'] = [], None |                 configs['system'], paths['system'] = [], None | ||||||
|  |  | ||||||
|         get_configs() |         get_configs() | ||||||
| @@ -1595,10 +1585,9 @@ def parseOpts(overrideArguments=None): | |||||||
|         if opts.verbose: |         if opts.verbose: | ||||||
|             for label in ('System', 'User', 'Portable', 'Home', 'Custom', 'Command-line'): |             for label in ('System', 'User', 'Portable', 'Home', 'Custom', 'Command-line'): | ||||||
|                 key = label.lower() |                 key = label.lower() | ||||||
|                 if paths.get(key) is None: |                 if paths.get(key): | ||||||
|                     continue |                     write_string(f'[debug] {label} config file: {paths[key]}\n') | ||||||
|                 if paths[key]: |                 if paths.get(key) is not None: | ||||||
|                     write_string('[debug] %s config file: %s\n' % (label, paths[key])) |                     write_string(f'[debug] {label} config: {_hide_login_info(configs[key])!r}\n') | ||||||
|                 write_string('[debug] %s config: %s\n' % (label, repr(_hide_login_info(configs[key])))) |  | ||||||
|  |  | ||||||
|     return parser, opts, args |     return parser, opts, args | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan