habulaj commited on
Commit
9897e5a
·
verified ·
1 Parent(s): d25c2b2

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +61 -3
main.py CHANGED
@@ -573,9 +573,63 @@ EXEMPLOS
573
  video_x = 0
574
  video_y = 0
575
  print(f" → video_y (crop offset): {video_y}px")
576
-
577
- # 5. Montar title_url
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  import urllib.parse
 
579
  title_params = urllib.parse.urlencode({
580
  "text": title_text,
581
  "image_url": screenshot_url,
@@ -583,7 +637,7 @@ EXEMPLOS
583
  })
584
  title_url = f"https://habulaj-recurve-api-img.hf.space/cover/title?{title_params}"
585
 
586
- # 6. Chamar API de video export
587
  print(f"🎬 Chamando video export API...")
588
  export_payload = {
589
  "video_url": export_video_url,
@@ -597,6 +651,10 @@ EXEMPLOS
597
  "video_height": crop_h,
598
  "video_template": video_template
599
  }
 
 
 
 
600
  export_resp = requests.post(
601
  "https://habulaj-recurve-videos-export.hf.space/video/export",
602
  json=export_payload,
 
573
  video_x = 0
574
  video_y = 0
575
  print(f" → video_y (crop offset): {video_y}px")
576
+
577
+ # 5. Gerar legendas se necessário
578
+ needs_legenda = result_data.get("legenda", False)
579
+ srt_for_export = None
580
+ if needs_legenda:
581
+ print("🎙️ Gerando legendas (Groq + Gemini)...")
582
+ try:
583
+ # Transcricao via Groq usando o arquivo local
584
+ import urllib.request as _urlreq
585
+ import uuid as _uuid
586
+
587
+ # Groq precisa de URL — usamos o video já upado (export_video_url)
588
+ srt_raw, _, _, _ = await get_groq_srt_base(
589
+ export_video_url, language="en", temperature=0.4,
590
+ has_bg_music=False
591
+ )
592
+
593
+ if srt_raw and srt_raw.strip():
594
+ # Tradução via Gemini (mesmo prompt do /subtitle)
595
+ translate_prompt = f"""IDIOMA: A legenda traduzida DEVE ser inteiramente em PORTUGUÊS DO BRASIL (pt-BR).
596
+
597
+ Traduza essa legenda pro português do Brasil, corrija qualquer erro de formatação, pontuação e mantenha timestamps e os textos nos seus respectivos blocos de legenda.
598
+ Você DEVE se basear estritamente na legenda original fornecida. NUNCA crie legendas novas e NUNCA adicione ou verifique diálogos no áudio que não estejam presentes na legenda original. Apenas traduza.
599
+ Mande o SRT completo, sem textos adicionais na resposta, apenas o SRT traduzido.
600
+ Não deve ser literal a tradução, deve se adaptar ao contexto e entonação. Se alguém estiver gritando, ESCREVA MAIÚSCULO!
601
+ NUNCA legende músicas, apenas diálogos falados.
602
+ PALAVRÕES: substitua com asteriscos (ex: "merda" → "merd*", "caralho" → "caral**").
603
+
604
+ LEGENDA ORIGINAL:
605
+ {srt_raw}"""
606
+ translate_model = get_gemini_model("flash")
607
+ translate_resp = await client.generate_content(translate_prompt, model=translate_model)
608
+ translated_srt = translate_resp.text.strip()
609
+
610
+ # Limpar bloco de código se o Gemini retornar com ```
611
+ if "```" in translated_srt:
612
+ parts = translated_srt.split("```")
613
+ for part in parts:
614
+ clean = part.strip()
615
+ if clean.startswith("srt"): clean = clean[3:].strip()
616
+ if re.match(r"\d+\s*\n\d{2}:", clean):
617
+ translated_srt = clean
618
+ break
619
+
620
+ if translated_srt:
621
+ srt_for_export = translated_srt
622
+ print(f"✅ Legendas geradas ({len(srt_for_export)} chars)")
623
+ else:
624
+ print("⚠️ Gemini retornou SRT vazio na tradução")
625
+ else:
626
+ print("⚠️ Groq não retornou transcrição válida")
627
+ except Exception as sub_e:
628
+ print(f"⚠️ Erro ao gerar legendas: {sub_e}")
629
+
630
+ # 6. Montar title_url
631
  import urllib.parse
632
+
633
  title_params = urllib.parse.urlencode({
634
  "text": title_text,
635
  "image_url": screenshot_url,
 
637
  })
638
  title_url = f"https://habulaj-recurve-api-img.hf.space/cover/title?{title_params}"
639
 
640
+ # 7. Chamar API de video export
641
  print(f"🎬 Chamando video export API...")
642
  export_payload = {
643
  "video_url": export_video_url,
 
651
  "video_height": crop_h,
652
  "video_template": video_template
653
  }
654
+ if srt_for_export:
655
+ export_payload["subtitles"] = srt_for_export
656
+ print(f"📝 Legendas incluídas no export")
657
+
658
  export_resp = requests.post(
659
  "https://habulaj-recurve-videos-export.hf.space/video/export",
660
  json=export_payload,