Update app.py
Browse files
app.py
CHANGED
|
@@ -759,164 +759,37 @@ 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"""
|
| 763 |
-
|
| 764 |
-
{contexto_add}
|
| 765 |
|
| 766 |
-
|
| 767 |
-
- type: tipo do elemento
|
| 768 |
-
- start: tempo de início no vídeo (MM:SS)
|
| 769 |
-
- end: tempo de término no vídeo (MM:SS)
|
| 770 |
-
|
| 771 |
-
Tipos de elementos permitidos:
|
| 772 |
-
|
| 773 |
-
1) title
|
| 774 |
-
- type: "title"
|
| 775 |
-
- text: título contextualizado da notícia, traduzido para português do Brasil
|
| 776 |
-
- Duração máxima: 5 segundos
|
| 777 |
-
|
| 778 |
-
2) name
|
| 779 |
-
- type: "name"
|
| 780 |
-
- name: nome da pessoa
|
| 781 |
-
- profession: profissão ou cargo, traduzido para português do Brasil
|
| 782 |
-
- Duração máxima: 5 segundos
|
| 783 |
-
|
| 784 |
-
3) metadata
|
| 785 |
-
- type: "metadata"
|
| 786 |
-
- Pode conter um ou mais dos seguintes campos:
|
| 787 |
-
- date: data no formato ISO (YYYY-MM-DD)
|
| 788 |
-
- location: local traduzido para português do Brasil
|
| 789 |
-
- credits: créditos da imagem ou vídeo, se disponíveis
|
| 790 |
-
- Deve começar exatamente no mesmo start do elemento imediatamente abaixo
|
| 791 |
-
- Duração máxima: 5 segundos
|
| 792 |
-
|
| 793 |
-
4) description
|
| 794 |
-
- type: "description"
|
| 795 |
-
- text: texto descritivo que explica fatos, contexto ou desdobramentos da notícia
|
| 796 |
-
- A duração deve ser calculada com base no tamanho do texto
|
| 797 |
-
- Ritmo recomendado de leitura: entre 12 e 15 caracteres por segundo
|
| 798 |
-
- Evitar tempos longos para textos curtos
|
| 799 |
-
|
| 800 |
-
Regras de tempo:
|
| 801 |
-
- Os tempos devem ser sequenciais e coerentes
|
| 802 |
-
- title, name e metadata nunca devem ultrapassar 5 segundos
|
| 803 |
-
- description deve ter duração proporcional ao tamanho do texto
|
| 804 |
-
- Metadata sempre deve começar exatamente junto com o elemento logo abaixo
|
| 805 |
-
|
| 806 |
-
Contexto editorial:
|
| 807 |
-
- Considere informações relevantes disponíveis em fontes confiáveis
|
| 808 |
-
- Inclua contexto quando isso enriquecer a compreensão da notícia
|
| 809 |
-
- Priorize clareza, concisão e linguagem jornalística, no estilo The New York Times.
|
| 810 |
-
- Todo o conteúdo textual deve estar em português do Brasil
|
| 811 |
|
| 812 |
-
|
| 813 |
|
| 814 |
[
|
| 815 |
-
|
| 816 |
-
|
| 817 |
-
|
| 818 |
-
|
| 819 |
-
|
| 820 |
-
|
| 821 |
-
|
| 822 |
-
|
| 823 |
-
|
| 824 |
-
|
| 825 |
-
|
| 826 |
-
|
| 827 |
-
|
| 828 |
-
|
| 829 |
-
|
| 830 |
-
|
| 831 |
-
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
|
| 836 |
-
"type": "description",
|
| 837 |
-
"start": "00:10",
|
| 838 |
-
"end": "00:22",
|
| 839 |
-
"text": "As autoridades informaram que o desaparecimento de Nancy Guthrie, de 84 anos, estava sendo tratado como um sequestro."
|
| 840 |
-
}},
|
| 841 |
-
{{
|
| 842 |
-
"type": "description",
|
| 843 |
-
"start": "00:22",
|
| 844 |
-
"end": "00:28",
|
| 845 |
-
"text": "Segundo o xerife, Guthrie foi vista pela última vez em sua casa, em Tucson, no sábado."
|
| 846 |
-
}},
|
| 847 |
-
{{
|
| 848 |
-
"type": "metadata",
|
| 849 |
-
"start": "00:28",
|
| 850 |
-
"end": "00:33",
|
| 851 |
-
"location": "Sydney, Austrália",
|
| 852 |
-
"date": "2015-05-04"
|
| 853 |
-
}},
|
| 854 |
-
{{
|
| 855 |
-
"type": "description",
|
| 856 |
-
"start": "00:28",
|
| 857 |
-
"end": "00:40",
|
| 858 |
-
"text": "O xerife afirmou que ela tinha limitações físicas, mas que o caso não estava relacionado à demência."
|
| 859 |
-
}},
|
| 860 |
-
{{
|
| 861 |
-
"type": "metadata",
|
| 862 |
-
"start": "00:40",
|
| 863 |
-
"end": "00:45",
|
| 864 |
-
"location": "Tucson, Arizona",
|
| 865 |
-
"date": "2026-02-02"
|
| 866 |
-
}}
|
| 867 |
-
]
|
| 868 |
-
|
| 869 |
-
Outro exemplo:
|
| 870 |
|
| 871 |
-
|
| 872 |
-
{{
|
| 873 |
-
"type": "metadata",
|
| 874 |
-
"start": "00:00",
|
| 875 |
-
"end": "00:05",
|
| 876 |
-
"location": "Paramount, Califórnia",
|
| 877 |
-
"date": "2025-07-05"
|
| 878 |
-
}},
|
| 879 |
-
{{
|
| 880 |
-
"type": "title",
|
| 881 |
-
"start": "00:00",
|
| 882 |
-
"end": "00:05",
|
| 883 |
-
"text": "Este vídeo mostra o agente da Patrulha de Fronteira Gregory Bovino dando instruções a agentes federais."
|
| 884 |
-
}},
|
| 885 |
-
{{
|
| 886 |
-
"type": "description",
|
| 887 |
-
"start": "00:05",
|
| 888 |
-
"end": "00:20",
|
| 889 |
-
"text": "O momento foi registrado no verão passado, em Los Angeles, quando a repressão à imigração começou a se intensificar."
|
| 890 |
-
}},
|
| 891 |
-
{{
|
| 892 |
-
"type": "description",
|
| 893 |
-
"start": "00:20",
|
| 894 |
-
"end": "00:30",
|
| 895 |
-
"text": "O vídeo voltou a circular nesta semana após Bovino ter sido chamado de volta de Minnesota."
|
| 896 |
-
}},
|
| 897 |
-
{{
|
| 898 |
-
"type": "description",
|
| 899 |
-
"start": "00:30",
|
| 900 |
-
"end": "00:48",
|
| 901 |
-
"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."
|
| 902 |
-
}},
|
| 903 |
-
{{
|
| 904 |
-
"type": "description",
|
| 905 |
-
"start": "00:48",
|
| 906 |
-
"end": "01:08",
|
| 907 |
-
"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."
|
| 908 |
-
}},
|
| 909 |
-
{{
|
| 910 |
-
"type": "description",
|
| 911 |
-
"start": "01:08",
|
| 912 |
-
"end": "01:18",
|
| 913 |
-
"text": "O Departamento de Segurança Interna não respondeu imediatamente a um pedido de comentário."
|
| 914 |
-
}}
|
| 915 |
-
]
|
| 916 |
-
|
| 917 |
-
Mande apenas o JSON. Sem texto adicional. Deve analisar todo o contexto do vídeo e verificar qual o melhor elemento a ser inserido. Os textos devem ser sólido, evitar emojis, dois pontos, etc. O estilo dos títulos devem ser parecidos com o JSON.
|
| 918 |
-
|
| 919 |
-
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.
|
| 920 |
"""
|
| 921 |
|
| 922 |
# 4. Enviar para o Gemini
|
|
|
|
| 759 |
# 3. Preparar Prompt
|
| 760 |
contexto_add = f"\n{request.context}" if request.context else ""
|
| 761 |
|
| 762 |
+
prompt = f"""
|
| 763 |
+
Crie um título e uma descrição analisando o vídeo e pesquisando pelo contexto geral e completo, em várias fontes e indo entender. Corrija qualquer informação imprecisa, utilize técnicas modernas que prendeu o leitor a ler até o final. A legenda deve ser compatível e do tamanho de uma legenda do Instagram. A descrição deve ser sem tópico, apenas descrição limpa e direta, sem conclusões parecendo IA e sem enrolação/redundâncias. Eu quero informações concretas, informações, não pensamentos, opiniões ou imaginações. Não deve ser muito redundante, deve ter informação, apenas. Se inspire no modo de escrita dos exemplos.
|
|
|
|
| 764 |
|
| 765 |
+
Contexto que pode ajudar (baseado na legenda do vídeo): {contexto_add}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 766 |
|
| 767 |
+
EXEMPLOS:
|
| 768 |
|
| 769 |
[
|
| 770 |
+
{{
|
| 771 |
+
"title": "O autor escreveu essa história como um pedido de desculpas à irmã porque, ao contrário do herói do filme, ele admite que não foi bondoso o suficiente para salvá-lá.",
|
| 772 |
+
"description": "🥲 O autor escreveu a obra como um pedido de desculpas à sua irmã, Keiko, que morreu de fome em 1945. Enquanto o protagonista do filme é o símbolo máximo do sacrifício e do cuidado, Nosaka admitiu em diversas entrevistas que a realidade foi muito mais cruel e humana.\n\nAos 14 anos, por exemplo, consumido pela fome e pelo desespero do pós-guerra em Kobe, Nosaka não dividia toda a comida. Muitas vezes, ele comia primeiro, deixando apenas as sobras para a irmã pequena. O peso de cuidar de um bebê no meio do caos o levava ao limite, chegando a admitir que batia na cabeça de Keiko para que ela parasse de chorar. O arrependimento de ter sobrevivido às custas da negligência com a irmã o assombrou por décadas. Criando Seita, Nosaka projetou o irmão idealizado que ele gostaria de ter sido, dando ao personagem a bondade e a paciência que ele, na vida real, não teve forças para manifestar."
|
| 773 |
+
}},
|
| 774 |
+
{{
|
| 775 |
+
"title": "É incrível como ele era vulnerável e emotivo antes de perder qualquer traço de humanidade",
|
| 776 |
+
"description": "No episódio 3 da 1ª temporada de Breaking Bad (...And the Bag's in the River), Walter White reconstrói um prato quebrado e descobre que falta um único estilhaço. Ele percebe que Krazy-8, o traficante mantido em seu porão, escondeu a peça pontiaguda para usá-la como arma. Walt estava decidido a libertar o prisioneiro, mas a prova física da traição o forçou a estrangular o traficante pra sobreviver.\n\nFoi nesse momento que o docente de química compreendeu que a empatia seria sua condenação. Morria, naquele instante, o mestre de escola, e surgia a lógica inflexível de Heisenberg 🔥"
|
| 777 |
+
}},
|
| 778 |
+
{{
|
| 779 |
+
"title": "Imagina escrever uma música do próprio livro e vê-la ganhar vida em live-action 😮💨",
|
| 780 |
+
"description": "Jogos Vorazes deu vida a “The Hanging Tree”, de Suzanne Collins, depois que a canção apareceu pela primeira vez em seu livro Mockingjay. Na Parte 1 de Mockingjay, no Distrito 12, o que começa como uma lembrança solene do pai de Katniss transforma-se em um grito de mobilização para que os distritos se oponham à Capital. Enquanto Snow manipula a mente de Peeta no silêncio do Distrito 13, a canção deixa muito claro que o poder de uma ideia é a única coisa que o medo não consegue deter. Até porque, nada representa uma ameaça maior para um tirano do que um povo que não tem mais nada a perder 🎯"
|
| 781 |
+
}},
|
| 782 |
+
{{
|
| 783 |
+
"title": "Normal People foi tão bom porque Paul Mescal não tava atuando 🥹",
|
| 784 |
+
"description": "🥹 Paul Mescal era um ator de teatro praticamente desconhecido até ser escalado como Connell Waldron em Normal People. A adaptação do best-seller de Sally Rooney rendeu a Mescal o BAFTA de Melhor Ator e uma indicação ao Emmy, que claramente consolidou sua química com Daisy Edgar-Jones como uma das mais realistas da televisão recente.\n\nA produção utilizou uma coordenadora de intimidade para garantir que as cenas de vulnerabilidade fossem autênticas, focando mais na linguagem corporal e no silêncio do que em diálogos expositivos. Filmada na Irlanda e na Itália, a série apresenta com precisão técnica a transição da vida escolar em Sligo para a universidade no Trinity College, evitando os clichês estéticos típicos de romances juvenis e concentrando-se no naturalismo das atuações."
|
| 785 |
+
}},
|
| 786 |
+
{{
|
| 787 |
+
"title": "O exato momento em que Carl supera seu luto de décadas 🥹",
|
| 788 |
+
"description": "🍇 O broche que Carl entrega a Russell é uma tampa de refrigerante de uva (Grape Soda) original dos anos 30, o mesmo objeto que Ellie deu a Carl quando eles se conheceram na infância.\n\nNo final de Up: Altas Aventuras (2009), Russell, com 8 anos, lida com a falta do pai durante a cerimônia de formatura dos Exploradores da Natureza. Carl Fredricksen sobe ao palco e entrega ao garoto a \"Insígnia Ellie\", a mais alta distinção que ele tem. Isso representa o momento preciso em que Carl supera seu luto de décadas, transferindo o legado de aventura para Russell e assumindo o papel de figura paterna para o garoto.\n\nDirigido por Pete Docter, o longa fez história ao ser a primeira animação a abrir o Festival de Cannes e venceu os Oscars de Melhor Filme de Animação e Melhor Trilha Sonora."
|
| 789 |
+
}}
|
| 790 |
+
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 791 |
|
| 792 |
+
Mande apenas o JSON na resposta. Sem texto adicional.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 793 |
"""
|
| 794 |
|
| 795 |
# 4. Enviar para o Gemini
|