55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
# batchtube-windows.spec
|
|
# PyInstaller spec for Windows single-file EXE
|
|
# Run from backend/ directory: pyinstaller batchtube-windows.spec --clean
|
|
# Output: dist/BatchTube.exe
|
|
|
|
from PyInstaller.utils.hooks import collect_all
|
|
block_cipher = None
|
|
datas, binaries, hiddenimports = [], [], []
|
|
for pkg in ['yt_dlp','uvicorn','fastapi','starlette','anyio','sse_starlette','youtube_transcript_api','openai','pydantic']:
|
|
d,b,h = collect_all(pkg)
|
|
datas+=d; binaries+=b; hiddenimports+=h
|
|
datas += [('web','backend/web')]
|
|
hiddenimports += [
|
|
'uvicorn.logging','uvicorn.loops','uvicorn.loops.auto','uvicorn.loops.asyncio',
|
|
'uvicorn.protocols','uvicorn.protocols.http','uvicorn.protocols.http.auto',
|
|
'uvicorn.protocols.http.h11_impl','uvicorn.protocols.http.httptools_impl',
|
|
'uvicorn.protocols.websockets','uvicorn.protocols.websockets.auto',
|
|
'uvicorn.lifespan','uvicorn.lifespan.off','uvicorn.lifespan.on',
|
|
'fastapi','fastapi.middleware.cors','starlette.middleware.cors',
|
|
'sse_starlette','sse_starlette.sse',
|
|
'pydantic','pydantic.v1','pydantic_core','annotated_types','typing_extensions',
|
|
'h11','httptools','httpx','anyio','anyio._backends._asyncio','sniffio',
|
|
'multipart','python_multipart','aiofiles','aiofiles.os','aiofiles.threadpool',
|
|
'yt_dlp','yt_dlp.extractor','yt_dlp.downloader','yt_dlp.postprocessor',
|
|
'youtube_transcript_api','youtube_transcript_api._transcripts',
|
|
'openai','openai.resources',
|
|
'requests','urllib3','certifi','charset_normalizer',
|
|
'slugify','python_slugify','tqdm','tqdm.auto',
|
|
'sqlite3','_sqlite3','asyncio','concurrent.futures','threading','queue',
|
|
'websockets','click','rich','watchfiles','mcp',
|
|
'api_server','worker','database','extractors','config',
|
|
]
|
|
a = Analysis(
|
|
['batchtube-launcher.py'],
|
|
pathex=['.'],
|
|
binaries=binaries,
|
|
datas=datas,
|
|
hiddenimports=hiddenimports,
|
|
hookspath=[],
|
|
runtime_hooks=[],
|
|
excludes=['tkinter','matplotlib','numpy','pandas','torch','tensorflow','PyQt5','PyQt6'],
|
|
cipher=block_cipher,
|
|
noarchive=False,
|
|
)
|
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
exe = EXE(
|
|
pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [],
|
|
name='BatchTube',
|
|
debug=False, strip=False, upx=True,
|
|
runtime_tmpdir=None,
|
|
console=False,
|
|
icon='../src-tauri/icons/icon.ico',
|
|
version='version_info.txt',
|
|
)
|