from flask import Flask, Response, request, jsonify from camera import Camera from database import log_event, get_all_events import threading app = Flask(__name__) # Хранилище камер и событий детекции cameras = {} motion_detected = [] @app.route('/add_camera', methods=['POST']) def add_camera(): camera_id = request.json['id'] if camera_id not in cameras: cameras[camera_id] = Camera(camera_id) threading.Thread(target=cameras[camera_id].start_stream, args=(motion_detected,)).start() return jsonify({"message": "Camera added"}), 200 return jsonify({"message": "Camera already exists"}), 400 @app.route('/remove_camera', methods=['POST']) def remove_camera(): camera_id = request.json['id'] if camera_id in cameras: cameras[camera_id].stop_stream() del cameras[camera_id] return jsonify({"message": "Camera removed"}), 200 return jsonify({"message": "Camera not found"}), 404 @app.route('/stream/') def stream(camera_id): if camera_id in cameras: return Response(cameras[camera_id].get_frame(), mimetype='multipart/x-mixed-replace; boundary=frame') return "Camera not found", 404 @app.route('/events', methods=['GET']) def get_events(): return jsonify(get_all_events()), 200 @app.route('/motion', methods=['GET']) def motion(): return jsonify(motion_detected), 200 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)