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') | ||||
|     general.add_option( | ||||
|         '--ignore-config', '--no-config', | ||||
|         action='store_true', | ||||
|         action='store_true', dest='ignoreconfig', | ||||
|         help=( | ||||
|             'Disable loading any configuration files except the one provided by --config-location. ' | ||||
|             '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:]), | ||||
|             'custom': [], 'home': [], 'portable': [], 'user': [], 'system': []} | ||||
|         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(): | ||||
|             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) | ||||
|                 if os.path.isdir(location): | ||||
|                     location = os.path.join(location, 'yt-dlp.conf') | ||||
|                 if not os.path.exists(location): | ||||
|                     parser.error('config-location %s does not exist.' % location) | ||||
|                 configs['custom'] = _readOptions(location, default=None) | ||||
|                 if configs['custom'] is None: | ||||
|                     configs['custom'] = [] | ||||
|                 else: | ||||
|                     paths['custom'] = location | ||||
|             if '--ignore-config' in configs['command-line']: | ||||
|                 config = _readOptions(location, default=None) | ||||
|                 if config: | ||||
|                     configs['custom'], paths['config'] = config, location | ||||
|  | ||||
|             if opts.ignoreconfig: | ||||
|                 return | ||||
|             if '--ignore-config' in configs['custom']: | ||||
|             if parser.parse_args(configs['custom'])[0].ignoreconfig: | ||||
|                 return | ||||
|  | ||||
|             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']: | ||||
|             if read_options('portable', get_executable_path()): | ||||
|                 return | ||||
|  | ||||
|             def get_home_path(): | ||||
|                 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']: | ||||
|             opts, _ = parser.parse_args(configs['portable'] + configs['custom'] + configs['command-line']) | ||||
|             if read_options('home', expand_path(opts.paths.get('home', '')).strip()): | ||||
|                 return | ||||
|  | ||||
|             configs['system'], paths['system'] = read_options('/etc') | ||||
|             if '--ignore-config' in configs['system']: | ||||
|             if read_options('system', '/etc'): | ||||
|                 return | ||||
|  | ||||
|             configs['user'], paths['user'] = read_options('', True) | ||||
|             if '--ignore-config' in configs['user']: | ||||
|             if read_options('user', None, user=True): | ||||
|                 configs['system'], paths['system'] = [], None | ||||
|  | ||||
|         get_configs() | ||||
| @@ -1595,10 +1585,9 @@ def parseOpts(overrideArguments=None): | ||||
|         if opts.verbose: | ||||
|             for label in ('System', 'User', 'Portable', 'Home', 'Custom', 'Command-line'): | ||||
|                 key = label.lower() | ||||
|                 if paths.get(key) is None: | ||||
|                     continue | ||||
|                 if paths[key]: | ||||
|                     write_string('[debug] %s config file: %s\n' % (label, paths[key])) | ||||
|                 write_string('[debug] %s config: %s\n' % (label, repr(_hide_login_info(configs[key])))) | ||||
|                 if paths.get(key): | ||||
|                     write_string(f'[debug] {label} config file: {paths[key]}\n') | ||||
|                 if paths.get(key) is not None: | ||||
|                     write_string(f'[debug] {label} config: {_hide_login_info(configs[key])!r}\n') | ||||
|  | ||||
|     return parser, opts, args | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan