|
|
import os |
|
|
import time |
|
|
import threading |
|
|
import gradio as gr |
|
|
from playwright.sync_api import sync_playwright |
|
|
|
|
|
TARGET_URL = os.getenv("TARGET_URL", "https://packet-25ek.onrender.com") |
|
|
logs = [] |
|
|
|
|
|
def run_refresher(): |
|
|
with sync_playwright() as p: |
|
|
browser = p.chromium.launch(headless=True) |
|
|
page = browser.new_page() |
|
|
while True: |
|
|
try: |
|
|
current_time = time.strftime('%Y-%m-%d %H:%M:%S') |
|
|
page.goto(TARGET_URL, wait_until="networkidle", timeout=60000) |
|
|
msg = f"[{current_time}] β
Success: Pinged {TARGET_URL}" |
|
|
logs.append(msg) |
|
|
except Exception as e: |
|
|
msg = f"[{time.strftime('%H:%M:%S')}] β Error: {str(e)}" |
|
|
logs.append(msg) |
|
|
|
|
|
if len(logs) > 20: logs.pop(0) |
|
|
time.sleep(300) |
|
|
|
|
|
threading.Thread(target=run_refresher, daemon=True).start() |
|
|
|
|
|
def get_logs(): |
|
|
return "\n".join(logs) if logs else "Starting bot... Please wait." |
|
|
|
|
|
|
|
|
with gr.Blocks(title="Link Refresher Bot") as demo: |
|
|
gr.Markdown(f"### π Bot is running for: `{TARGET_URL}`") |
|
|
log_output = gr.Textbox(label="Live Status Logs", value="Waiting for first ping...", lines=10) |
|
|
|
|
|
|
|
|
timer = gr.Timer(10) |
|
|
timer.tick(get_logs, outputs=log_output) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch(server_name="0.0.0.0", server_port=7860) |