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() | |