46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from flask import Flask, send_file
|
|
import os
|
|
import subprocess
|
|
from datetime import datetime
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Folder to store the screenshots
|
|
SCREENSHOT_DIR = "/tmp/screenshots"
|
|
if not os.path.exists(SCREENSHOT_DIR):
|
|
os.makedirs(SCREENSHOT_DIR)
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return '''
|
|
<h1>Flask Screenshot & Click App</h1>
|
|
<p>Take a screenshot: <a href="/screenshot">/screenshot</a></p>
|
|
<p>Click at position (x, y): <a href="/click/100/100">/click/x/y</a></p>
|
|
'''
|
|
|
|
@app.route('/screenshot')
|
|
def screenshot():
|
|
# Generate a screenshot file name
|
|
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
|
screenshot_path = os.path.join(SCREENSHOT_DIR, f'screenshot_{timestamp}.png')
|
|
|
|
# Capture the screenshot using `scrot`
|
|
subprocess.run(['scrot', screenshot_path])
|
|
|
|
# Return the screenshot file as response
|
|
return send_file(screenshot_path, mimetype='image/png')
|
|
|
|
@app.route('/click/<int:x>/<int:y>')
|
|
def click(x, y):
|
|
# Perform a click at the specified (x, y) position using `xdotool`
|
|
subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'click', '1'])
|
|
|
|
return f'Click performed at position ({x}, {y})'
|
|
|
|
@app.route('/htmlthing')
|
|
def htmlstuff():
|
|
return send_file('htmlthing.html', mimetype='text/html')
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True, host='0.0.0.0', port=5000)
|