mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-29 13:41:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sys
 | |
| 
 | |
| from PyInstaller.utils.hooks import collect_submodules
 | |
| 
 | |
| 
 | |
| def pycryptodome_module():
 | |
|     try:
 | |
|         import Cryptodome  # noqa: F401
 | |
|     except ImportError:
 | |
|         try:
 | |
|             import Crypto  # noqa: F401
 | |
|             print('WARNING: Using Crypto since Cryptodome is not available. '
 | |
|                   'Install with: pip install pycryptodomex', file=sys.stderr)
 | |
|             return 'Crypto'
 | |
|         except ImportError:
 | |
|             pass
 | |
|     return 'Cryptodome'
 | |
| 
 | |
| 
 | |
| def get_hidden_imports():
 | |
|     yield from ('yt_dlp.compat._legacy', 'yt_dlp.compat._deprecated')
 | |
|     yield from ('yt_dlp.utils._legacy', 'yt_dlp.utils._deprecated')
 | |
|     yield pycryptodome_module()
 | |
|     # Only `websockets` is required, others are collected just in case
 | |
|     for module in ('websockets', 'requests', 'urllib3'):
 | |
|         yield from collect_submodules(module)
 | |
|     # These are auto-detected, but explicitly add them just in case
 | |
|     yield from ('mutagen', 'brotli', 'certifi', 'secretstorage')
 | |
| 
 | |
| 
 | |
| hiddenimports = list(get_hidden_imports())
 | |
| print(f'Adding imports: {hiddenimports}')
 | |
| 
 | |
| excludedimports = ['youtube_dl', 'youtube_dlc', 'test', 'ytdlp_plugins', 'devscripts']
 | 
