import os import socket import threading import time import webview from app import db, decoder from app.server import app as flask_app from app import session as sess PORT = 5050 class Api: def open_file(self, file_path): try: os.startfile(file_path) return True except Exception as e: return str(e) def start_flask(): import logging logging.getLogger("werkzeug").setLevel(logging.ERROR) flask_app.run(port=PORT, debug=False, use_reloader=False) def _wait_for_server(host="127.0.0.1", port=PORT, timeout=10): start = time.time() while time.time() - start < timeout: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) if s.connect_ex((host, port)) == 0: s.close() return True s.close() except Exception: pass time.sleep(0.1) return False def _sync_db(): from app import state db.init_db() ok = db.sync_from_access() state.db_sync_ok = ok def _background_init(): decoder.load() _sync_db() def main(): sess.init_logging() threading.Thread(target=_background_init, daemon=True).start() flask_thread = threading.Thread(target=start_flask, daemon=True) flask_thread.start() _wait_for_server() webview.create_window( "Osservatorio Internazionale TV", f"http://localhost:{PORT}", width=1280, height=760, min_size=(1024, 600), js_api=Api(), ) webview.start() if __name__ == "__main__": main()