Akwbw commited on
Commit
b1ce4d9
·
verified ·
1 Parent(s): bc384be

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
2
+ from playwright.sync_api import sync_playwright
3
+ import base64
4
+
5
+ app = Flask(__name__)
6
+
7
+ @app.route("/command", methods=["POST"])
8
+ def command():
9
+ data = request.json
10
+ action = data.get("action")
11
+ value = data.get("value")
12
+
13
+ # Stateless: fresh browser per request
14
+ with sync_playwright() as p:
15
+ browser = p.chromium.launch(headless=True)
16
+ page = browser.new_page()
17
+ try:
18
+ if action == "goto":
19
+ page.goto(value)
20
+ elif action == "scroll":
21
+ page.evaluate(f"window.scrollTo(0, {value})")
22
+ elif action == "click":
23
+ x, y = value["x"], value["y"]
24
+ page.mouse.click(x, y)
25
+ elif action == "type":
26
+ selector, text = value["selector"], value["text"]
27
+ page.fill(selector, text)
28
+ elif action == "hold":
29
+ x, y, duration = value["x"], value["y"], value["duration"]
30
+ page.mouse.move(x, y)
31
+ page.mouse.down()
32
+ page.wait_for_timeout(duration)
33
+ page.mouse.up()
34
+
35
+ # Screenshot
36
+ screenshot = page.screenshot()
37
+ screenshot_b64 = base64.b64encode(screenshot).decode()
38
+
39
+ # DOM HTML
40
+ html = page.content()
41
+
42
+ return jsonify({"screenshot": screenshot_b64, "html": html})
43
+
44
+ except Exception as e:
45
+ return jsonify({"error": str(e)}), 400
46
+ finally:
47
+ browser.close()
48
+
49
+ if __name__ == "__main__":
50
+ app.run(host="0.0.0.0", port=5000)