Spaces:
Paused
Paused
from flask import Flask, render_template, request, jsonify | |
from form_filler import FormFiller | |
import threading | |
import os | |
import logging | |
import random | |
from concurrent.futures import ThreadPoolExecutor | |
import time | |
from selenium import webdriver | |
from selenium.webdriver.chrome.options import Options | |
from selenium.webdriver.common.by import By | |
from xvfbwrapper import Xvfb | |
from threading import Lock, Event | |
# Create a logger | |
logger = logging.getLogger(__name__) | |
# Set up the Flask application | |
app = Flask(__name__) | |
# Create a FormFiller instance | |
form_filler = FormFiller() | |
# Define the routes for the Flask application | |
def index(): | |
return render_template('index.html') | |
def start_form_filling(): | |
url = request.json['url'] | |
iterations = int(request.json['iterations']) | |
def run_form_filler(): | |
try: | |
form_filler.fill_form_in_parallel(url, iterations) | |
except Exception as e: | |
logger.error(f"Error occurred: {e}") | |
form_filler.total_iterations = iterations | |
form_filler.iterations_left = iterations | |
form_filler.responses_sent = 0 | |
form_filler.errors = 0 | |
form_filler.environment_status = [] | |
thread = threading.Thread(target=run_form_filler) | |
thread.start() | |
return jsonify({"message": "Form filling started"}) | |
def stop_form_filling(): | |
form_filler.stop() | |
return jsonify({"message": "Form filling stopped"}) | |
def get_status(): | |
with form_filler.lock: | |
if form_filler.responses_sent == 0 and form_filler.errors == 0 and form_filler.iterations_left == form_filler.total_iterations: | |
# This condition checks if everything is still initializing | |
return jsonify({ | |
"total_iterations": form_filler.total_iterations, | |
"responses_sent": None, # Return None instead of 0 to indicate uninitialized | |
"errors": None, | |
"iterations_left": form_filler.iterations_left, | |
"environment_status": None | |
}) | |
else: | |
return jsonify({ | |
"total_iterations": form_filler.total_iterations, | |
"responses_sent": form_filler.responses_sent, | |
"errors": form_filler.errors, | |
"iterations_left": form_filler.iterations_left, | |
"environment_status": list(form_filler.environment_status) | |
}) | |
if __name__ == '__main__': | |
app.run() | |