habulaj commited on
Commit
01bbcb0
·
verified ·
1 Parent(s): 206c1bc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +155 -16
app.py CHANGED
@@ -759,28 +759,167 @@ async def generate_elements_endpoint(request: GenerateElementsRequest):
759
  # 3. Preparar Prompt
760
  contexto_add = f"\n{request.context}" if request.context else ""
761
 
762
- prompt = f"""Analise essa notícia e o vídeo:
763
 
764
  {contexto_add}
765
 
766
- Com base nela, gere titulos de notícias que podem ser extraidos do vídeo/notícia. Títulos de notícias.
767
-
768
- Exemplos:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
769
 
770
  [
771
- {{"title":"Trump repreende repórter da CNN por não sorrir"}},
772
- {{"title":"Duas semanas de fortes nevascas causam caos no Japão"}},
773
- {{"title":"Nova divulgação de arquivos sobre Jeffrey Epstein revela ligações com homens influentes"}},
774
- {{"title":"Trump anuncia fechamento do Kennedy Center em julho para reforma de dois anos"}},
775
- {{"title":"Como tecnologia de guerra foi usada em Minneapolis"}},
776
- {{"title":"Trump diz ter alcançado base de acordo com a Otan sobre a Groenlândia"}},
777
- {{"title":"Trump anuncia tarifas contra oito países europeus para forçar venda da Groenlândia"}},
778
- {{"title":"Trump tem muitas opções para lidar com o Irã, diz porta-voz"}}
779
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
780
 
781
- Mande apenas os títulos, em forma JSON. Sem texto adicional. Deve analisar todo o contexto do vídeo e verificar qual o melhor título. O título deve ser sólido, evitar emojis, dois pontos, etc. O estilo dos títulos devem ser parecidos com o JSON.
782
-
783
- Deve ter parametro start e end, e cortar o vídeo enviado nesse tempo. Pra analisar corretamente apenas a parte que o usuário quer. Considere que o jornal é imparcial na apresentação dos fatos, mas possui uma inclinação editorial claramente mais conservadora, republicana e de direita na entonação. Adapte os títulos de acordo com esse posicionamento, mantendo rigor factual e linguagem jornalística."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
784
 
785
  # 4. Enviar para o Gemini
786
  model_name = request.model or "flash"
 
759
  # 3. Preparar Prompt
760
  contexto_add = f"\n{request.context}" if request.context else ""
761
 
762
+ prompt = f"""Analise essa notícia e seu contexto ampliado na internet, extraindo dados factuais, contexto editorial e informações complementares que ajudem a compor a narrativa jornalística. A partir dessa análise, gere exclusivamente um JSON estruturado com elementos pensados para inserção em uma linha do tempo de vídeo.
763
 
764
  {contexto_add}
765
 
766
+ Retorne apenas JSON válido, sem comentários, explicações ou formatação adicional.
767
+
768
+ O JSON deve ser uma lista contendo uma lista ordenada de elementos, respeitando rigorosamente a ordem de exibição no vídeo.
769
+
770
+ Cada elemento deve conter obrigatoriamente:
771
+ - type: tipo do elemento
772
+ - start: tempo de início no vídeo (MM:SS)
773
+ - end: tempo de término no vídeo (MM:SS)
774
+
775
+ Tipos de elementos permitidos:
776
+
777
+ 1) title
778
+ - type: "title"
779
+ - text: título contextualizado da notícia, traduzido para português do Brasil
780
+ - Duração máxima: 5 segundos
781
+
782
+ 2) name
783
+ - type: "name"
784
+ - name: nome da pessoa
785
+ - profession: profissão ou cargo, traduzido para português do Brasil
786
+ - Duração máxima: 5 segundos
787
+
788
+ 3) metadata
789
+ - type: "metadata"
790
+ - Pode conter um ou mais dos seguintes campos:
791
+ - date: data no formato ISO (YYYY-MM-DD)
792
+ - location: local traduzido para português do Brasil
793
+ - credits: créditos da imagem ou vídeo, se disponíveis
794
+ - Deve começar exatamente no mesmo start do elemento imediatamente abaixo
795
+ - Duração máxima: 5 segundos
796
+
797
+ 4) description
798
+ - type: "description"
799
+ - text: texto descritivo que explica fatos, contexto ou desdobramentos da notícia
800
+ - A duração deve ser calculada com base no tamanho do texto
801
+ - Ritmo recomendado de leitura: entre 12 e 15 caracteres por segundo
802
+ - Evitar tempos longos para textos curtos
803
+
804
+ Regras de tempo:
805
+ - Os tempos devem ser sequenciais e coerentes
806
+ - title, name e metadata nunca devem ultrapassar 5 segundos
807
+ - description deve ter duração proporcional ao tamanho do texto
808
+ - Metadata sempre deve começar exatamente junto com o elemento logo abaixo
809
+
810
+ Contexto editorial:
811
+ - Considere informações relevantes disponíveis em fontes confiáveis
812
+ - Inclua contexto quando isso enriquecer a compreensão da notícia
813
+ - Priorize clareza, concisão e linguagem jornalística, no estilo The New York Times.
814
+ - Todo o conteúdo textual deve estar em português do Brasil
815
+
816
+ # EXEMPLO ESPERADO 1:
817
 
818
  [
819
+ {{
820
+ "type": "title",
821
+ "start": "00:00",
822
+ "end": "00:05",
823
+ "text": "A mãe de Savannah Guthrie, apresentadora do programa \"Today\", foi levada \"contra a própria vontade\", segundo as autoridades."
824
+ }},
825
+ {{
826
+ "type": "name",
827
+ "start": "00:05",
828
+ "end": "00:10",
829
+ "name": "Chris Nanos",
830
+ "profession": "Xerife do Condado de Pima"
831
+ }},
832
+ {{
833
+ "type": "metadata",
834
+ "start": "00:10",
835
+ "end": "00:15",
836
+ "date": "2023-03-15",
837
+ "credits": "Nathan Congleton/NBC, via Getty Images"
838
+ }},
839
+ {{
840
+ "type": "description",
841
+ "start": "00:10",
842
+ "end": "00:22",
843
+ "text": "As autoridades informaram que o desaparecimento de Nancy Guthrie, de 84 anos, estava sendo tratado como um sequestro."
844
+ }},
845
+ {{
846
+ "type": "description",
847
+ "start": "00:22",
848
+ "end": "00:28",
849
+ "text": "Segundo o xerife, Guthrie foi vista pela última vez em sua casa, em Tucson, no sábado."
850
+ }},
851
+ {{
852
+ "type": "metadata",
853
+ "start": "00:28",
854
+ "end": "00:33",
855
+ "location": "Sydney, Austrália",
856
+ "date": "2015-05-04"
857
+ }},
858
+ {{
859
+ "type": "description",
860
+ "start": "00:28",
861
+ "end": "00:40",
862
+ "text": "O xerife afirmou que ela tinha limitações físicas, mas que o caso não estava relacionado à demência."
863
+ }},
864
+ {{
865
+ "type": "metadata",
866
+ "start": "00:40",
867
+ "end": "00:45",
868
+ "location": "Tucson, Arizona",
869
+ "date": "2026-02-02"
870
+ }}
871
+ ]
872
+
873
+ # EXEMPLO ESPERADO 2
874
 
875
+ [
876
+ {{
877
+ "type": "metadata",
878
+ "start": "00:00",
879
+ "end": "00:05",
880
+ "location": "Paramount, Califórnia",
881
+ "date": "2025-07-05"
882
+ }},
883
+ {{
884
+ "type": "title",
885
+ "start": "00:00",
886
+ "end": "00:05",
887
+ "text": "Este vídeo mostra o agente da Patrulha de Fronteira Gregory Bovino dando instruções a agentes federais."
888
+ }},
889
+ {{
890
+ "type": "description",
891
+ "start": "00:05",
892
+ "end": "00:20",
893
+ "text": "O momento foi registrado no verão passado, em Los Angeles, quando a repressão à imigração começou a se intensificar."
894
+ }},
895
+ {{
896
+ "type": "description",
897
+ "start": "00:20",
898
+ "end": "00:30",
899
+ "text": "O vídeo voltou a circular nesta semana após Bovino ter sido chamado de volta de Minnesota."
900
+ }},
901
+ {{
902
+ "type": "description",
903
+ "start": "00:30",
904
+ "end": "00:48",
905
+ "text": "As imagens foram divulgadas no ano passado como parte de uma ação judicial federal sobre a aplicação das leis de imigração na região de Chicago."
906
+ }},
907
+ {{
908
+ "type": "description",
909
+ "start": "00:48",
910
+ "end": "01:08",
911
+ "text": "Operações de imigração provocaram protestos na região das Cidades Gêmeas depois que dois cidadãos americanos foram mortos a tiros por agentes."
912
+ }},
913
+ {{
914
+ "type": "description",
915
+ "start": "01:08",
916
+ "end": "01:18",
917
+ "text": "O Departamento de Segurança Interna não respondeu imediatamente a um pedido de comentário."
918
+ }}
919
+ ]
920
+
921
+ Considere que o jornal é imparcial na apresentação dos fatos, mas possui uma inclinação editorial claramente mais conservadora, republicana e de direita na entonação. Adapte os títulos e descrições de acordo com esse posicionamento, mantendo rigor factual e linguagem jornalística.
922
+ """
923
 
924
  # 4. Enviar para o Gemini
925
  model_name = request.model or "flash"