AutoD / app.py
TechDev's picture
Upload 5 files
4903704 verified
raw
history blame
1.32 kB
import os
from flask import Flask, send_file
from flask_socketio import SocketIO
import threading, subprocess
app = Flask(__name__)
socketio = SocketIO(app, async_mode='eventlet')
base_dir = os.path.abspath('files')
subprocess.Popen(["venv/bin/python", "main.py"])
@socketio.on('request_dir_structure')
def send_dir_structure():
structure = {}
for root, dirs, files in os.walk(base_dir):
rel_path = os.path.relpath(root, base_dir)
structure[rel_path] = {
'dirs': dirs,
'files': [{'name': f, 'size': os.path.getsize(os.path.join(root, f))} for f in files]
}
socketio.emit('dir_structure', structure)
@socketio.on('download_file')
def send_file_chunk(data):
file_path = os.path.join(base_dir, data['path'])
offset = data.get('offset', 0)
chunk_size = 1024 * 64 # 64KB chunks
with open(file_path, 'rb') as f:
f.seek(offset)
while True:
chunk = f.read(chunk_size)
if not chunk:
break
socketio.emit('file_chunk', {
'path': data['path'],
'offset': f.tell(),
'data': chunk
})
socketio.sleep(0.01) # Evita bloquear el hilo del servidor
if __name__ == '__main__':
socketio.run(app, port=7860)