Spaces:
Running
Running
from flask import Flask, render_template | |
from flask_socketio import SocketIO, send, emit | |
import json, subprocess, os | |
app = Flask(__name__) | |
app.config['SECRET_KEY'] = 'secret!' | |
socketio = SocketIO(app, cors_allowed_origins="*") | |
subprocess.Popen(["venv/bin/python","main.py"]) | |
def list_directory(path): | |
result = [] | |
for root, dirs, files in os.walk(path): | |
rel_path = os.path.relpath(root, path) | |
if rel_path == ".": | |
rel_path = "" | |
for file in files: | |
file_path = os.path.join(rel_path, file) | |
file_full_path = os.path.join(root, file) | |
file_size = os.path.getsize(file_full_path) | |
result.append({"type": "file", "path": file_path, "size": file_size}) | |
for dir in dirs: | |
dir_path = os.path.join(rel_path, dir) | |
dir_full_path = os.path.join(root, dir) | |
dir_content = list_directory(dir_full_path) | |
result.append({"type": "directory", "path": dir_path, "files": dir_content}) | |
return result | |
def handle_connect(): | |
print('Client connected') | |
emit('response', {'data': 'Connected'}) | |
def handle_disconnect(): | |
print('Client disconnected') | |
def handle_message(message): | |
if message == "files": | |
dir = './files' | |
if not os.path.exists(dir): | |
os.mkdir(dir) | |
files_list = list_directory(dir) | |
emit("files",files_list) | |
def index(): | |
return json.dumps({"connect":True}) | |
if __name__ == '__main__': | |
socketio.run(app, host='0.0.0.0', port=7860) |