File size: 1,024 Bytes
8c3e275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Desktop wrapper for PageParse using pywebview.

Usage: python -m pageparse.desktop

Requires: pip install pywebview
"""

from __future__ import annotations

import threading
import webbrowser

import uvicorn
from pageparse.web import app as fastapi_app


def start_desktop_app() -> None:
    try:
        import webview
    except ImportError:
        print("pywebview not installed. Install with: pip install pageparse[desktop]")
        print("Falling back to browser...")
        webbrowser.open("http://127.0.0.1:8000")
        return

    def run_server():
        uvicorn.run(fastapi_app, host="127.0.0.1", port=8000, log_level="warning")

    server_thread = threading.Thread(target=run_server, daemon=True)
    server_thread.start()

    webview.create_window(
        "PageParse",
        "http://127.0.0.1:8000",
        width=1280,
        height=800,
        min_size=(800, 600),
        resizable=True,
        text_select=True,
    )
    webview.start()


if __name__ == "__main__":
    start_desktop_app()