Zum Inhalt

webgui.py

#!/usr/bin/env python3
"""WebGUI entry-point.

Usage:
  python webgui.py             # opens browser at http://localhost:8765
  python webgui.py --port 9000 # custom port
  python webgui.py --no-open   # don't open browser
"""

import argparse
import threading
import time
import webbrowser

import uvicorn


def _open_browser_after_delay(url: str, delay: float = 1.0) -> None:
    time.sleep(delay)
    webbrowser.open(url)


def main() -> None:
    parser = argparse.ArgumentParser(description="Whisper-Pipeline WebGUI")
    parser.add_argument("--host", default="127.0.0.1")
    parser.add_argument("--port", type=int, default=8765)
    parser.add_argument("--no-open", action="store_true", help="Don't auto-open browser")
    parser.add_argument("--reload", action="store_true", help="Dev mode: reload on file change")
    args = parser.parse_args()

    url = f"http://{args.host}:{args.port}"
    if not args.no_open:
        threading.Thread(
            target=_open_browser_after_delay,
            args=(url,),
            daemon=True,
        ).start()

    print(f"\n  Whisper-Pipeline WebGUI  ->  {url}\n")
    uvicorn.run(
        "webgui.app:app",
        host=args.host,
        port=args.port,
        reload=args.reload,
        log_level="info",
    )


if __name__ == "__main__":
    main()