import requests import time import subprocess from pathlib import Path def get_current_ngrok_url(): """Get current ngrok URL from ngrok API""" try: response = requests.get("http://localhost:4040/api/tunnels") if response.status_code == 200: data = response.json() tunnels = data.get("tunnels", []) for tunnel in tunnels: if tunnel.get("proto") == "https": return tunnel.get("public_url") except: pass return None def update_env_file(url): """Update .env file with new URL""" env_file = Path(".env") if env_file.exists(): with open(env_file, "r") as f: lines = f.readlines() with open(env_file, "w") as f: for line in lines: if line.startswith("OLLAMA_HOST="): f.write(f"OLLAMA_HOST={url}\n") else: f.write(line) def main(): """Monitor ngrok URL changes""" print("Monitoring ngrok URL changes...") last_url = None while True: try: current_url = get_current_ngrok_url() if current_url and current_url != last_url: print(f"Ngrok URL changed: {current_url}") update_env_file(current_url) last_url = current_url print("Environment updated!") time.sleep(30) # Check every 30 seconds except KeyboardInterrupt: print("Monitoring stopped.") break except Exception as e: print(f"Error: {e}") time.sleep(30) if __name__ == "__main__": main()