habulaj commited on
Commit
4f468ef
·
verified ·
1 Parent(s): 656c17d

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +27 -18
main.py CHANGED
@@ -558,10 +558,12 @@ EXEMPLOS
558
  # Se for imagem e result_type == meme
559
  elif 'image' in content_type and title_text and result_data.get("result_type") == "meme":
560
  try:
 
561
  img_for_meme = cropped_file_path if cropped_file_path and os.path.exists(cropped_file_path) else temp_file.name
562
 
 
563
  image_needs_correction = record.get("image_needs_correction", False)
564
- if image_needs_correction:
565
  print("🍌 Chamando Nano Banana Pro (Gemini) para limpar a imagem...")
566
  clean_prompt = "Anexei uma imagem que pode ser um post de rede social, um meme, um screenshot ou qualquer composição visual que mistura texto com imagem. Sua única tarefa é limpar essa imagem, removendo tudo que não faz parte do conteúdo visual original. Remova completamente qualquer texto sobreposto, seja título, legenda, frase, username, arroba, logo ou qualquer marcação de outras páginas ou plataformas. Onde o texto estiver sobreposto diretamente na imagem, remova-o e reconstrua o fundo de forma coerente com o estilo visual ao redor. Preserve absolutamente tudo da imagem original: cores, iluminação, estilo artístico, traços, texturas, proporções, enquadramento, clima e contexto visual. Não altere, não melhore, não filtre e não modifique nada além do que for necessário para a remoção dos textos e marcas. Retorne apenas a imagem limpa, sem nenhum texto, sem nenhuma explicação, sem nenhum comentário. Só a imagem, mantendo a mesma proporção e tamanho."
567
  nano_model = get_gemini_model("pro")
@@ -589,24 +591,31 @@ EXEMPLOS
589
  else:
590
  print("⚠️ Gemini não retornou imagem limpa. Usando a original.")
591
 
592
- print("📸 Enviando imagem base do meme para recurve-save...")
593
- with open(img_for_meme, 'rb') as img_f:
594
- upload_resp = requests.post(
595
- "https://habulaj-recurve-save.hf.space/upload",
596
- files={'files': ('meme_base.jpg', img_f, 'image/jpeg')},
597
- timeout=60
598
- )
599
- upload_resp.raise_for_status()
600
- uploaded_img_url = upload_resp.json().get("url", "")
601
-
602
- if uploaded_img_url:
603
- import urllib.parse
604
- meme_params = urllib.parse.urlencode({
605
- "text": title_text,
606
- "image_url": uploaded_img_url
607
- })
 
 
 
 
 
 
 
608
  final_content_url = f"https://habulaj-recurve-api-img.hf.space/meme?{meme_params}"
609
- print(f"✅ Meme API URL gerada: {final_content_url}")
610
  except Exception as e:
611
  print(f"⚠️ Erro ao gerar URL do meme: {e}")
612
 
 
558
  # Se for imagem e result_type == meme
559
  elif 'image' in content_type and title_text and result_data.get("result_type") == "meme":
560
  try:
561
+ contains_image = record.get("contains_image", False)
562
  img_for_meme = cropped_file_path if cropped_file_path and os.path.exists(cropped_file_path) else temp_file.name
563
 
564
+ # Nano Banana Pro: só roda se tiver imagem de apoio E precisar de correção
565
  image_needs_correction = record.get("image_needs_correction", False)
566
+ if contains_image and image_needs_correction:
567
  print("🍌 Chamando Nano Banana Pro (Gemini) para limpar a imagem...")
568
  clean_prompt = "Anexei uma imagem que pode ser um post de rede social, um meme, um screenshot ou qualquer composição visual que mistura texto com imagem. Sua única tarefa é limpar essa imagem, removendo tudo que não faz parte do conteúdo visual original. Remova completamente qualquer texto sobreposto, seja título, legenda, frase, username, arroba, logo ou qualquer marcação de outras páginas ou plataformas. Onde o texto estiver sobreposto diretamente na imagem, remova-o e reconstrua o fundo de forma coerente com o estilo visual ao redor. Preserve absolutamente tudo da imagem original: cores, iluminação, estilo artístico, traços, texturas, proporções, enquadramento, clima e contexto visual. Não altere, não melhore, não filtre e não modifique nada além do que for necessário para a remoção dos textos e marcas. Retorne apenas a imagem limpa, sem nenhum texto, sem nenhuma explicação, sem nenhum comentário. Só a imagem, mantendo a mesma proporção e tamanho."
569
  nano_model = get_gemini_model("pro")
 
591
  else:
592
  print("⚠️ Gemini não retornou imagem limpa. Usando a original.")
593
 
594
+ import urllib.parse
595
+ if contains_image:
596
+ # Tem imagem de apoio: faz upload e inclui image_url no meme
597
+ print("📸 Enviando imagem base do meme para recurve-save...")
598
+ with open(img_for_meme, 'rb') as img_f:
599
+ upload_resp = requests.post(
600
+ "https://habulaj-recurve-save.hf.space/upload",
601
+ files={'files': ('meme_base.jpg', img_f, 'image/jpeg')},
602
+ timeout=60
603
+ )
604
+ upload_resp.raise_for_status()
605
+ uploaded_img_url = upload_resp.json().get("url", "")
606
+
607
+ if uploaded_img_url:
608
+ meme_params = urllib.parse.urlencode({
609
+ "text": title_text,
610
+ "image_url": uploaded_img_url
611
+ })
612
+ final_content_url = f"https://habulaj-recurve-api-img.hf.space/meme?{meme_params}"
613
+ print(f"✅ Meme API URL gerada (com imagem): {final_content_url}")
614
+ else:
615
+ # Só texto, sem imagem de apoio: manda apenas o text
616
+ meme_params = urllib.parse.urlencode({"text": title_text})
617
  final_content_url = f"https://habulaj-recurve-api-img.hf.space/meme?{meme_params}"
618
+ print(f"✅ Meme API URL gerada (só texto): {final_content_url}")
619
  except Exception as e:
620
  print(f"⚠️ Erro ao gerar URL do meme: {e}")
621