from flask import Flask, request, jsonify, send_file from playwright.sync_api import sync_playwright import tempfile import time import requests import os app = Flask(__name__) # ============================================ # COOKIES # ============================================ META_COOKIES = [ { "name": "datr", "value": "qpUmasbNzVLrDaDwS4LXdXDq", "domain": ".meta.ai", "path": "/", "httpOnly": False, "secure": True, "sameSite": "Lax" }, { "name": "ecto_1_sess", "value": "5ef8da02-93df-4c1f-babc-a2401171f154.v1%3AmkpAc8uOfJwaDaqf5KCGDSjF3ga4L4VgqInMrTsLJ__PL5ZSG-lfYhLfCM8_baLfCVSmMaL-MXr5s6qum4IAVBV8sM6tjhYhkXok9qhCKUCEjwXvPCSatiIdEa4zTsL-93K21Q1QB_QTT6WwtN7nfSKtpRxM6lB2EZ9yeLWRsOtwErDQqFAGp7bPXqa8bp80d2RtDkE2a2txGNHnCf541npmzXQ5_SgoAKStBko1t7mEVUVpeiKtCeFtngmEySoyQ-D7H2-Vj6-nHillF0oA2kyKgaVHhBxAghh4naE2bxsIuiQtC9idO6b_9hzd2NWGhW1GvU3ASNGlQmgRuEDhuUFl246LtmCBTHcINZDJje3uSVpQY97PiuTuTAgStIbpTR8RnCfCzBii-tc2FlSACzLfogaffx8Y8Jt3RKVlD2C82doS2scxSD3AIjRrtLQQDjk34T0zd-PlJXqu3Rij61gPAq9NUPo1zp8jRsqb0fWXfbiVRCosWgpR5XmGcZtjwQ%3AJFEueqKcSdHRbj-z%3AZKY7jfLHaHsnM19I7UzJrw.I4DGes0ksGkql66r1eCj1MdKvPBAVO-fqV_Gn1rTf7Y", "domain": ".meta.ai", "path": "/", "httpOnly": True, "secure": True, "sameSite": "Lax" } ] def generate_video(prompt): with sync_playwright() as p: browser = p.chromium.launch( headless=True, args=["--no-sandbox", "--disable-dev-shm-usage"] ) context = browser.new_context( viewport={"width": 1280, "height": 720}, user_agent="Mozilla/5.0" ) context.add_cookies(META_COOKIES) page = context.new_page() page.goto("https://www.meta.ai", wait_until="networkidle") # Input find selectors = [ 'textarea[data-testid="ai-chat-input"]', 'textarea', '[contenteditable="true"]', 'div[role="textbox"]' ] input_box = None for selector in selectors: try: input_box = page.wait_for_selector(selector, timeout=5000) break except: pass if not input_box: browser.close() raise Exception("Input field not found") input_box.fill(f"Create a video of {prompt}") input_box.press("Enter") print("Prompt sent") video_url = None # Wait up to 5 minutes for _ in range(300): try: video = page.query_selector("video") if video: video_url = video.get_attribute("src") if video_url: break except: pass time.sleep(1) browser.close() if not video_url: raise Exception("Video not found") return video_url # ============================================ # API ENDPOINTS # ============================================ @app.route("/generate", methods=["POST"]) def generate(): data = request.get_json() prompt = data.get("prompt") if not prompt: return jsonify({ "success": False, "error": "Prompt required" }), 400 try: video_url = generate_video(prompt) # Download video response = requests.get(video_url) temp_file = tempfile.NamedTemporaryFile( delete=False, suffix=".mp4" ) temp_file.write(response.content) temp_file.close() return send_file( temp_file.name, mimetype="video/mp4", as_attachment=True, download_name="generated_video.mp4" ) except Exception as e: return jsonify({ "success": False, "error": str(e) }), 500 # ============================================ # HEALTH CHECK ENDPOINT (FIXED) # ============================================ @app.route("/health", methods=["GET"]) def health(): return jsonify({ "success": True, "status": "healthy", "service": "Meta AI Video Generator", "message": "Server is running" }) # ============================================ # ROOT ENDPOINT (Optional) # ============================================ @app.route("/", methods=["GET"]) def root(): return jsonify({ "service": "Meta AI Video Generator", "endpoints": { "POST /generate": "Generate video from prompt", "GET /health": "Health check", "GET /": "This info" }, "usage": { "curl": "curl -X POST /generate -H 'Content-Type: application/json' -d '{\"prompt\": \"your prompt\"}' --output video.mp4" } }) if __name__ == "__main__": print(""" ╔═══════════════════════════════════════════════════════════╗ ║ 🎬 Meta AI Video Generator - Flask API ║ ║ Cookies loaded! Ready to generate videos ║ ╚═══════════════════════════════════════════════════════════╝ """) print("📋 Endpoints:") print(" POST /generate - Generate video") print(" GET /health - Health check") print(" GET / - API info") print("") print("🌐 Server running on http://0.0.0.0:7860") app.run( host="0.0.0.0", port=7860, debug=False # Set to False for production )