Spaces:
Sleeping
Sleeping
File size: 3,421 Bytes
6c13b27 d751d47 3bae5e9 d50a8df 1f3a91d f91e542 6c13b27 1f3a91d 6c13b27 f02f41f ba5021a f02f41f d64d909 ba5021a f02f41f 6c13b27 b372d57 6c13b27 454016c b8a09db b97d301 daa2a28 454016c 7def20b 6c13b27 454016c 6c13b27 b372d57 6c13b27 b372d57 d50a8df b372d57 79dc39d b372d57 d547c45 6c13b27 25fbe95 2ab749a 7994dc0 08f0992 7246e87 88979a1 49482fd 6c13b27 9da3914 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
try:
from analyzer.process_video import analyze_video
except Exception as e:
print("Failed to import analyze_video:", e)
def analyze_video(*args, **kwargs):
print("Stub analyze_video called.")
return {
"plot": "placeholder.jpg",
"frames": []
}
from flask import Flask, render_template, request, redirect, url_for, session
from flask import send_from_directory
import os
import uuid
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'uploads'
app.config['RESULT_FOLDER'] = 'static/results'
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 # 100MB
app.secret_key = os.environ.get("FLASK_SECRET_KEY", "your-secret-key")
# π₯ ADD THIS BLOCK RIGHT HERE:
@app.before_request
def make_session_permanent():
session.permanent = True
if 'user_id' not in session:
session['user_id'] = str(uuid.uuid4())
@app.route('/')
def index():
video_filename = request.args.get('video_filename')
result_image = request.args.get('result_image')
frame_images = request.args.get('frame_images')
if frame_images:
frame_images = frame_images.split("|")
else:
frame_images = []
user_id = session.get('user_id', 'unknown')
return render_template(
'index.html',
video_filename=video_filename,
result_image=result_image,
frame_images=frame_images,
user_id=user_id # <-- pass it in
)
@app.route('/upload', methods=['POST'])
def upload():
if 'video' not in request.files:
return 'No video file uploaded', 400
video = request.files['video']
print("π₯ Received file:", video.filename)
if video.filename == '':
return 'No selected file', 400
# Ensure user-specific upload and result folders exist
user_upload_folder = os.path.join('/tmp/uploads', session['user_id'])
user_result_folder = '/tmp/results'
os.makedirs(user_upload_folder, exist_ok=True)
os.makedirs(user_result_folder, exist_ok=True)
filename = f"{uuid.uuid4()}.mp4"
filepath = os.path.join(user_upload_folder, filename)
video.save(filepath)
print(f"π Saved video to: {filepath}")
try:
result_data = analyze_video(filepath, filename, session['user_id'])
result_image = result_data["plot"]
frame_images = result_data["frames"]
except Exception as e:
print(f"β analyze_video failed: {e}")
result_image = "placeholder.jpg"
frame_images = []
print(f"π€ Redirecting with result_image={result_image}, frame_images={frame_images}")
print(f"β
analyze_video returned: {result_image}, {frame_images}")
return redirect(url_for(
'index',
video_filename=filename,
result_image=result_image,
frame_images="|".join(frame_images)
)) # <-- this is the required closing parenthesis
@app.route('/uploads/<path:filename>')
def uploaded_file(filename):
full_path = os.path.join('/tmp/uploads', filename)
print(f"π€ Serving upload: {full_path}")
return send_from_directory('/tmp/uploads', filename)
@app.route('/results/<path:filename>')
def result_file(filename):
full_path = os.path.join('/tmp/results', filename)
print(f"π§Ύ Serving flat result path: {full_path}")
return send_from_directory('/tmp/results', filename)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860, debug=False)
|