Files
batchtube/backend/batchtube-windows.spec

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',
)