Update main.py
Browse files
main.py
CHANGED
|
@@ -367,9 +367,20 @@ async def run_process_url(request: ProcessUrlRequest, record_id: int):
|
|
| 367 |
|
| 368 |
if crop_status == "aborted_area_too_small":
|
| 369 |
print(f"🚫 [{time.time()-t_start:.1f}s] Crop abortado: área de texto no centro. Negando filtro.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 370 |
requests.patch(f"{supabase_url}/rest/v1/posts?id=eq.{record_id}", headers=headers, json={
|
| 371 |
"approved_filter": False,
|
| 372 |
-
"
|
|
|
|
| 373 |
})
|
| 374 |
return # Para o processamento aqui
|
| 375 |
|
|
@@ -1174,10 +1185,18 @@ LEGENDA ORIGINAL:
|
|
| 1174 |
json=export_payload,
|
| 1175 |
timeout=600
|
| 1176 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1177 |
if not export_resp.ok:
|
| 1178 |
raise Exception(f"API de video export falhou com status {export_resp.status_code}: {export_resp.text}")
|
| 1179 |
|
| 1180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1181 |
final_content_url = export_data.get("video_url")
|
| 1182 |
if not final_content_url:
|
| 1183 |
raise Exception(f"API de video export não retornou a URL do vídeo final. Resposta: {export_data}")
|
|
|
|
| 367 |
|
| 368 |
if crop_status == "aborted_area_too_small":
|
| 369 |
print(f"🚫 [{time.time()-t_start:.1f}s] Crop abortado: área de texto no centro. Negando filtro.")
|
| 370 |
+
|
| 371 |
+
# Notificação do Agente no Discord (Octavio/Diana)
|
| 372 |
+
try:
|
| 373 |
+
import urllib.parse as _up
|
| 374 |
+
reject_msg = f"Analisando aqui, notei que o texto desse vídeo está bem no centro. Se eu cortasse agora, ia acabar destruindo o conteúdo principal. Como a gente preza pela qualidade da página, preferi reprovar esse aqui automaticamente. ❌"
|
| 375 |
+
_reject_url = "https://discordmsg.arthurmribeiro51.workers.dev/?" + _up.urlencode({"mensagem": reject_msg, "id": discord_id})
|
| 376 |
+
requests.get("https://proxy.onrecurve.com/", params={"quest": _reject_url}, timeout=5)
|
| 377 |
+
except Exception as _e_dc:
|
| 378 |
+
print(f"⚠️ Erro ao enviar Discord de rejeição automática: {_e_dc}")
|
| 379 |
+
|
| 380 |
requests.patch(f"{supabase_url}/rest/v1/posts?id=eq.{record_id}", headers=headers, json={
|
| 381 |
"approved_filter": False,
|
| 382 |
+
"filter_message": "Rejeitado automaticamente: Região útil de texto insuficiente para crop seguro (texto centralizado).",
|
| 383 |
+
"contains_image": False
|
| 384 |
})
|
| 385 |
return # Para o processamento aqui
|
| 386 |
|
|
|
|
| 1185 |
json=export_payload,
|
| 1186 |
timeout=600
|
| 1187 |
)
|
| 1188 |
+
|
| 1189 |
+
# Log do payload para depuração
|
| 1190 |
+
print(f"📡 Export Payload URL: {export_payload.get('video_url')}")
|
| 1191 |
+
|
| 1192 |
if not export_resp.ok:
|
| 1193 |
raise Exception(f"API de video export falhou com status {export_resp.status_code}: {export_resp.text}")
|
| 1194 |
|
| 1195 |
+
try:
|
| 1196 |
+
export_data = export_resp.json()
|
| 1197 |
+
except Exception as json_e:
|
| 1198 |
+
print(f"⚠️ Resposta da API não é JSON: {export_resp.text[:500]}")
|
| 1199 |
+
raise Exception(f"API de video export retornou resposta inválida (não JSON). Status: {export_resp.status_code}. Resposta: {export_resp.text[:200]}")
|
| 1200 |
final_content_url = export_data.get("video_url")
|
| 1201 |
if not final_content_url:
|
| 1202 |
raise Exception(f"API de video export não retornou a URL do vídeo final. Resposta: {export_data}")
|