mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[utils] Popen: Refactor to use contextmanager
				
					
				
			Fixes https://github.com/yt-dlp/yt-dlp/issues/3531#issuecomment-1156223597
This commit is contained in:
		| @@ -709,21 +709,19 @@ def _get_kwallet_network_wallet(logger): | ||||
|     """ | ||||
|     default_wallet = 'kdewallet' | ||||
|     try: | ||||
|         proc = Popen([ | ||||
|         stdout, _, returncode = Popen.run([ | ||||
|             'dbus-send', '--session', '--print-reply=literal', | ||||
|             '--dest=org.kde.kwalletd5', | ||||
|             '/modules/kwalletd5', | ||||
|             'org.kde.KWallet.networkWallet' | ||||
|         ], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) | ||||
|         ], text=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) | ||||
| 
 | ||||
|         stdout, stderr = proc.communicate_or_kill() | ||||
|         if proc.returncode != 0: | ||||
|         if returncode: | ||||
|             logger.warning('failed to read NetworkWallet') | ||||
|             return default_wallet | ||||
|         else: | ||||
|             network_wallet = stdout.decode().strip() | ||||
|             logger.debug(f'NetworkWallet = "{network_wallet}"') | ||||
|             return network_wallet | ||||
|             logger.debug(f'NetworkWallet = "{stdout.strip()}"') | ||||
|             return stdout.strip() | ||||
|     except Exception as e: | ||||
|         logger.warning(f'exception while obtaining NetworkWallet: {e}') | ||||
|         return default_wallet | ||||
| @@ -741,17 +739,16 @@ def _get_kwallet_password(browser_keyring_name, logger): | ||||
|     network_wallet = _get_kwallet_network_wallet(logger) | ||||
| 
 | ||||
|     try: | ||||
|         proc = Popen([ | ||||
|         stdout, _, returncode = Popen.run([ | ||||
|             'kwallet-query', | ||||
|             '--read-password', f'{browser_keyring_name} Safe Storage', | ||||
|             '--folder', f'{browser_keyring_name} Keys', | ||||
|             network_wallet | ||||
|         ], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) | ||||
| 
 | ||||
|         stdout, stderr = proc.communicate_or_kill() | ||||
|         if proc.returncode != 0: | ||||
|             logger.error(f'kwallet-query failed with return code {proc.returncode}. Please consult ' | ||||
|                          'the kwallet-query man page for details') | ||||
|         if returncode: | ||||
|             logger.error(f'kwallet-query failed with return code {returncode}. ' | ||||
|                          'Please consult the kwallet-query man page for details') | ||||
|             return b'' | ||||
|         else: | ||||
|             if stdout.lower().startswith(b'failed to read'): | ||||
| @@ -766,9 +763,7 @@ def _get_kwallet_password(browser_keyring_name, logger): | ||||
|                 return b'' | ||||
|             else: | ||||
|                 logger.debug('password found') | ||||
|                 if stdout[-1:] == b'\n': | ||||
|                     stdout = stdout[:-1] | ||||
|                 return stdout | ||||
|                 return stdout.rstrip(b'\n') | ||||
|     except Exception as e: | ||||
|         logger.warning(f'exception running kwallet-query: {error_to_str(e)}') | ||||
|         return b'' | ||||
| @@ -815,17 +810,13 @@ def _get_linux_keyring_password(browser_keyring_name, keyring, logger): | ||||
| def _get_mac_keyring_password(browser_keyring_name, logger): | ||||
|     logger.debug('using find-generic-password to obtain password from OSX keychain') | ||||
|     try: | ||||
|         proc = Popen( | ||||
|         stdout, _, _ = Popen.run( | ||||
|             ['security', 'find-generic-password', | ||||
|              '-w',  # write password to stdout | ||||
|              '-a', browser_keyring_name,  # match 'account' | ||||
|              '-s', f'{browser_keyring_name} Safe Storage'],  # match 'service' | ||||
|             stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) | ||||
| 
 | ||||
|         stdout, stderr = proc.communicate_or_kill() | ||||
|         if stdout[-1:] == b'\n': | ||||
|             stdout = stdout[:-1] | ||||
|         return stdout | ||||
|         return stdout.rstrip(b'\n') | ||||
|     except Exception as e: | ||||
|         logger.warning(f'exception running find-generic-password: {error_to_str(e)}') | ||||
|         return None | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan