Dev-tools / app.py
Neon-AI's picture
Update app.py
1d45997 verified
import streamlit as st
import asyncio
from playwright.async_api import async_playwright
if "logs" not in st.session_state:
st.session_state.logs = []
if "running" not in st.session_state:
st.session_state.running = False
async def run_bot(url):
st.session_state.logs.append("Starting bot...")
async with async_playwright() as p:
browser = await p.chromium.launch(
headless=True,
args=["--no-sandbox", "--disable-dev-shm-usage"]
)
page = await browser.new_page()
page.on("console", lambda msg: st.session_state.logs.append(f"LOG: {msg.text}"))
page.on("request", lambda req: st.session_state.logs.append(f"REQ: {req.url}"))
page.on("response", lambda res: st.session_state.logs.append(f"RES: {res.url} {res.status}"))
await page.goto(url)
# keep session alive
for _ in range(15):
await asyncio.sleep(1)
await browser.close()
st.session_state.logs.append("Bot finished.")
st.session_state.running = False
st.title("DevTools Bot Dashboard")
url = st.text_input("Enter URL", "https://example.com")
if st.button("Run Bot") and not st.session_state.running:
st.session_state.logs.clear()
st.session_state.running = True
# Run in background
loop = asyncio.get_event_loop()
loop.create_task(run_bot(url))
st.subheader("Logs")
for log in st.session_state.logs:
st.text(log)