Update main.py
Browse files
main.py
CHANGED
|
@@ -214,7 +214,7 @@ async def process_girlsmoodaily_endpoint():
|
|
| 214 |
if not client:
|
| 215 |
raise HTTPException(status_code=500, detail="Gemini client is not initialized")
|
| 216 |
temp_file = None
|
| 217 |
-
|
| 218 |
try:
|
| 219 |
supabase_url = os.getenv("SUPABASE_URL", "").rstrip("/")
|
| 220 |
supabase_key = os.getenv("SUPABASE_KEY", "")
|
|
@@ -262,7 +262,16 @@ async def process_girlsmoodaily_endpoint():
|
|
| 262 |
temp_file.close()
|
| 263 |
|
| 264 |
video_path_to_analyze = temp_file.name
|
|
|
|
| 265 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
contexto_add = f"\n{context}" if context else ""
|
| 267 |
comentarios_add = ""
|
| 268 |
if comments:
|
|
@@ -283,7 +292,11 @@ Sua personalidade: divertida, intuitiva e criativa. Você tem um olhar muito apu
|
|
| 283 |
|
| 284 |
SUA MISSÃO
|
| 285 |
|
| 286 |
-
Você recebe um conteúdo (vídeo ou imagem) aprovado pela Diana e cria a postagem completa para a @girlsmoodaily.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 287 |
|
| 288 |
Tudo que você produz deve soar como algo que uma menina brasileira de 14 a 30 anos escreveria, não como texto de IA, não como manchete de jornal, não como copy corporativo.
|
| 289 |
|
|
@@ -396,8 +409,8 @@ EXEMPLOS
|
|
| 396 |
model_obj = get_gemini_model(model_name)
|
| 397 |
print(f"🧠 Enviando para Gemini ({model_name}) para processamento...")
|
| 398 |
|
| 399 |
-
# Envio do prompt +
|
| 400 |
-
response_gemini = await client.generate_content(prompt, files=
|
| 401 |
|
| 402 |
titles_data = extract_json_from_text(response_gemini.text)
|
| 403 |
if not titles_data:
|
|
@@ -424,7 +437,7 @@ EXEMPLOS
|
|
| 424 |
raise HTTPException(status_code=500, detail=f"Erro interno: {str(e)}")
|
| 425 |
finally:
|
| 426 |
if temp_file and os.path.exists(temp_file.name): os.unlink(temp_file.name)
|
| 427 |
-
if
|
| 428 |
|
| 429 |
|
| 430 |
@app.api_route("/filter-girlsmoodaily", methods=["GET", "POST"])
|
|
|
|
| 214 |
if not client:
|
| 215 |
raise HTTPException(status_code=500, detail="Gemini client is not initialized")
|
| 216 |
temp_file = None
|
| 217 |
+
cropped_file_path = None
|
| 218 |
try:
|
| 219 |
supabase_url = os.getenv("SUPABASE_URL", "").rstrip("/")
|
| 220 |
supabase_key = os.getenv("SUPABASE_KEY", "")
|
|
|
|
| 262 |
temp_file.close()
|
| 263 |
|
| 264 |
video_path_to_analyze = temp_file.name
|
| 265 |
+
files_to_send = [video_path_to_analyze]
|
| 266 |
|
| 267 |
+
if 'image' in content_type:
|
| 268 |
+
print(f"✂️ Processando imagem: detectando e cortando...")
|
| 269 |
+
try:
|
| 270 |
+
cropped_file_path = detect_and_crop_image(video_path_to_analyze)
|
| 271 |
+
if cropped_file_path and os.path.exists(cropped_file_path):
|
| 272 |
+
files_to_send.append(cropped_file_path)
|
| 273 |
+
except Exception as e:
|
| 274 |
+
print(f"⚠️ Erro ao cortar imagem: {e}")
|
| 275 |
contexto_add = f"\n{context}" if context else ""
|
| 276 |
comentarios_add = ""
|
| 277 |
if comments:
|
|
|
|
| 292 |
|
| 293 |
SUA MISSÃO
|
| 294 |
|
| 295 |
+
Você recebe um conteúdo (vídeo ou imagem) aprovado pela Diana e cria a postagem completa para a @girlsmoodaily. O conteúdo enviado é o post base original, geralmente em inglês. Sua missão não é apenas traduzir, mas **ADAPTAR** o conteúdo para a realidade das seguidoras brasileiras da @girlsmoodaily.
|
| 296 |
+
|
| 297 |
+
Se o post original for algo como "How I feel when my bestie is crying over a man...", um título excelente seria "Amiga pelo amor de Deus acorda que você é um monumento 💅". Fuja do literal, seja criativa e use o "girl mood" brasileiro.
|
| 298 |
+
|
| 299 |
+
A página tem uma identidade clara: feminina, leve, alto-astral, identificável, com aquela energia de "sua dose diária de girl mood".
|
| 300 |
|
| 301 |
Tudo que você produz deve soar como algo que uma menina brasileira de 14 a 30 anos escreveria, não como texto de IA, não como manchete de jornal, não como copy corporativo.
|
| 302 |
|
|
|
|
| 409 |
model_obj = get_gemini_model(model_name)
|
| 410 |
print(f"🧠 Enviando para Gemini ({model_name}) para processamento...")
|
| 411 |
|
| 412 |
+
# Envio do prompt + arquivos (original e opcionalmente cortado) pro Gemini
|
| 413 |
+
response_gemini = await client.generate_content(prompt, files=files_to_send, model=model_obj)
|
| 414 |
|
| 415 |
titles_data = extract_json_from_text(response_gemini.text)
|
| 416 |
if not titles_data:
|
|
|
|
| 437 |
raise HTTPException(status_code=500, detail=f"Erro interno: {str(e)}")
|
| 438 |
finally:
|
| 439 |
if temp_file and os.path.exists(temp_file.name): os.unlink(temp_file.name)
|
| 440 |
+
if cropped_file_path and os.path.exists(cropped_file_path): os.unlink(cropped_file_path)
|
| 441 |
|
| 442 |
|
| 443 |
@app.api_route("/filter-girlsmoodaily", methods=["GET", "POST"])
|