from flask import Flask, render_template, request, jsonify import zipfile import os import time app = Flask(__name__) UPLOAD_FOLDER = "ipv4" EXTRACT_FOLDER = "ipv4" os.makedirs(UPLOAD_FOLDER, exist_ok=True) os.makedirs(EXTRACT_FOLDER, exist_ok=True) progress = 0 # Global progress variable @app.route("/", methods=["GET", "POST"]) def index(): return render_template("index.html") @app.route("/upload", methods=["POST"]) def upload(): global progress zip_file = request.files["zip_file"] extract_to = request.form.get("extract_path") if zip_file and extract_to: os.makedirs(extract_to, exist_ok=True) zip_path = os.path.join(UPLOAD_FOLDER, zip_file.filename) zip_file.save(zip_path) with zipfile.ZipFile(zip_path, 'r') as zip_ref: files = zip_ref.namelist() total_files = len(files) for i, file in enumerate(files): zip_ref.extract(file, extract_to) progress = ((i + 1) / total_files) * 100 time.sleep(0.1) # Simulate progress update return jsonify({"message": "✅ Extracted Successfully!", "progress": 100}) return jsonify({"message": "❌ Error Extracting!"}), 400 @app.route("/progress", methods=["GET"]) def get_progress(): return jsonify({"progress": progress}) if __name__ == "__main__": app.run(host='0.0.0.0', port=7860)