chatgpt / app.py
Asad235's picture
Update app.py
894452b verified
Raw
History Blame Contribute Delete
5.81 kB
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
)