Spaces:
Sleeping
Sleeping
| 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: | |
| def make_session_permanent(): | |
| session.permanent = True | |
| if 'user_id' not in session: | |
| session['user_id'] = str(uuid.uuid4()) | |
| 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 | |
| ) | |
| 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 | |
| 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) | |
| 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) | |