hook-yt_dlp.py 908 B

12345678910111213141516171819202122232425262728293031
  1. import sys
  2. from PyInstaller.utils.hooks import collect_submodules
  3. def pycryptodome_module():
  4. try:
  5. import Cryptodome # noqa: F401
  6. except ImportError:
  7. try:
  8. import Crypto # noqa: F401
  9. print('WARNING: Using Crypto since Cryptodome is not available. '
  10. 'Install with: pip install pycryptodomex', file=sys.stderr)
  11. return 'Crypto'
  12. except ImportError:
  13. pass
  14. return 'Cryptodome'
  15. def get_hidden_imports():
  16. yield 'yt_dlp.compat._legacy'
  17. yield pycryptodome_module()
  18. yield from collect_submodules('websockets')
  19. # These are auto-detected, but explicitly add them just in case
  20. yield from ('mutagen', 'brotli', 'certifi')
  21. hiddenimports = list(get_hidden_imports())
  22. print(f'Adding imports: {hiddenimports}')
  23. excludedimports = ['youtube_dl', 'youtube_dlc', 'test', 'ytdlp_plugins', 'devscripts']