]>
Commit | Line | Data |
---|---|---|
acb1042a | 1 | import sys |
2 | ||
52f5be1f | 3 | from PyInstaller.utils.hooks import collect_submodules, collect_data_files |
acb1042a | 4 | |
5 | ||
b85faf6f | 6 | def pycryptodome_module(): |
acb1042a | 7 | try: |
8 | import Cryptodome # noqa: F401 | |
9 | except ImportError: | |
10 | try: | |
11 | import Crypto # noqa: F401 | |
12 | print('WARNING: Using Crypto since Cryptodome is not available. ' | |
47ab66db | 13 | 'Install with: python3 -m pip install pycryptodomex', file=sys.stderr) |
acb1042a | 14 | return 'Crypto' |
15 | except ImportError: | |
16 | pass | |
17 | return 'Cryptodome' | |
18 | ||
19 | ||
b85faf6f | 20 | def get_hidden_imports(): |
131d132d | 21 | yield from ('yt_dlp.compat._legacy', 'yt_dlp.compat._deprecated') |
22 | yield from ('yt_dlp.utils._legacy', 'yt_dlp.utils._deprecated') | |
65f6e807 | 23 | yield pycryptodome_module() |
8a8b5452 | 24 | # Only `websockets` is required, others are collected just in case |
25 | for module in ('websockets', 'requests', 'urllib3'): | |
26 | yield from collect_submodules(module) | |
acb1042a | 27 | # These are auto-detected, but explicitly add them just in case |
52f5be1f | 28 | yield from ('mutagen', 'brotli', 'certifi', 'secretstorage', 'curl_cffi') |
acb1042a | 29 | |
30 | ||
b85faf6f | 31 | hiddenimports = list(get_hidden_imports()) |
32 | print(f'Adding imports: {hiddenimports}') | |
33 | ||
43cfd462 | 34 | excludedimports = ['youtube_dl', 'youtube_dlc', 'test', 'ytdlp_plugins', 'devscripts', 'bundle'] |
52f5be1f | 35 | |
36 | datas = collect_data_files('curl_cffi', includes=['cacert.pem']) |