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/') 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/') 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)