-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
108 lines (86 loc) · 2.91 KB
/
Copy pathapp.py
File metadata and controls
108 lines (86 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import socket
import webbrowser
import secrets
import pyautogui
import json
from flask import Flask, request, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = secrets.token_hex()
socketio = SocketIO(app, async_mode="threading")
pyautogui.FAILSAFE = False
IP_ADDRESS = ""
PORT = 5000
mouse_multiplier = 0
scroll_multiplier = 0
def get_ipv4_address():
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as st:
st.connect(("8.8.8.8", 80))
ipv4_address = st.getsockname()[0]
return ipv4_address
def load_settings():
global mouse_multiplier
global scroll_multiplier
try:
with open("settings.json", "r") as file:
data = json.load(file)
mouse_multiplier = data.get("mouseMultiplier")
scroll_multiplier = data.get("scrollMultiplier")
except Exception:
mouse_multiplier = 1
scroll_multiplier = 1
@app.route("/")
def index():
return render_template("index.html", IP_ADDRESS=IP_ADDRESS, PORT=PORT,
MOUSE_MULTIPLIER=mouse_multiplier, SCROLL_MULTIPLIER=scroll_multiplier)
@app.post("/type-character")
def type_character():
try:
character = request.form.get("character", type=str)
if character == "Enter" or character == "Backspace":
pyautogui.press(character.lower())
else:
pyautogui.write(character)
except ValueError:
return "Bad request"
return "Ok"
@app.post("/click")
def click_response():
try:
button = request.form.get("button", type=str)
pyautogui.click(button=button)
except ValueError:
return "Bad request"
return "Ok"
@app.post("/multiplier-change")
def multiplier_change():
global mouse_multiplier
global scroll_multiplier
try:
mouse_multiplier = request.form.get("mouseMultiplier", type=int)
scroll_multiplier = request.form.get("scrollMultiplier", type=int)
jsonData = json.dumps(
{"mouseMultiplier": mouse_multiplier, "scrollMultiplier": scroll_multiplier})
with open("settings.json", "w") as file:
file.write(jsonData)
except Exception:
return "Bad request"
return "Ok"
@socketio.on("move-mouse")
def handle_move_mouse(delta_coordinates):
x = int(delta_coordinates["x"]) * mouse_multiplier
y = int(delta_coordinates["y"]) * mouse_multiplier
pyautogui.moveRel(xOffset=x, yOffset=y)
@socketio.on("scrolling")
def handle_scrolling(delta_coordinates):
y = int(delta_coordinates["y"]) * scroll_multiplier
pyautogui.scroll(y)
@socketio.on_error()
def error_handler(e):
print(e)
if __name__ == "__main__":
IP_ADDRESS = get_ipv4_address()
load_settings()
webbrowser.open(f"https://{IP_ADDRESS}:{PORT}", new=0, autoraise=True)
socketio.run(app, host=IP_ADDRESS, port=PORT,
debug=True, allow_unsafe_werkzeug=True, ssl_context="adhoc")