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