from flask import Flask, render_template, Response, request, jsonify import cv2 from camera import VideoCamera from transformers import CLIPProcessor, CLIPModel from PIL import Image import numpy as np from instagrapi import Client import os app = Flask(__name__) app.config['UPLOAD_FOLDER'] = 'uploads' camera = None captured_image = None # Initialize Hugging Face CLIP model model = CLIPModel.from_pretrained("openai/clip-vit-base-patch16") processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch16") def gen(camera): while True: frame = camera.get_frame() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n') @app.route('/') def index(): return render_template('index.html') @app.route('/video_feed') def video_feed(): global camera if camera is None: camera = VideoCamera() return Response(gen(camera), mimetype='multipart/x-mixed-replace; boundary=frame') @app.route('/capture', methods=['POST']) def capture(): global captured_image, camera if camera: captured_image = camera.get_frame() img_array = np.frombuffer(captured_image, np.uint8) img = cv2.imdecode(img_array, cv2.IMREAD_COLOR) cv2.imwrite(os.path.join(app.config['UPLOAD_FOLDER'], 'captured.jpg'), img) return jsonify({'status': 'captured'}) @app.route('/switch_camera', methods=['POST']) def switch_camera(): global camera camera_type = request.json.get('camera_type', 'user') # 'user' for front, 'environment' for back if camera: camera.switch_camera(camera_type) return jsonify({'status': 'switched'}) @app.route('/retake', methods=['POST']) def retake(): global captured_image captured_image = None return jsonify({'status': 'retake'}) @app.route('/upload', methods=['POST']) def upload(): global captured_image if captured_image: # Process image with Hugging Face CLIP img_path = os.path.join(app.config['UPLOAD_FOLDER'], 'captured.jpg') image = Image.open(img_path) inputs = processor(images=image, return_tensors="pt") outputs = model.get_image_features(**inputs) # Generate a caption (simplified example) caption = "Captured image from Flask app! #AI #HuggingFace" # Upload to Instagram try: cl = Client() cl.login('YOUR_INSTAGRAM_USERNAME', 'YOUR_INSTAGRAM_PASSWORD') cl.photo_upload(img_path, caption=caption) return jsonify({'status': 'uploaded'}) except Exception as e: return jsonify({'status': 'error', 'message': str(e)}) return jsonify({'status': 'error', 'message': 'No image captured'}) if __name__ == '__main__': os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) app.run(debug=True, host='0.0.0.0', port=5000)