instalar o "yt-dlp" e rodar o comando:
yt-dlp <url do video do youtube>
o video pode não vir em form ato MP4, então usar o programa "ffmpeg" para converte-lo.
ffmpeg -i <video baixado do youtube> <nome do novo video colocando a extenção .mp4>
Rodar com python 3.11.0 Criar diretório result/ na raiz e temp/ dentro de result
Basta ir para a raiz do projeto pelo terminal e rodar:
python main.py result/<nome do arquivo .mp4 que você quer traduzir.>
Precerará ter o Redis instalado na maquina, ele serve para receber informações do gerenciamento de tarefas em background. Após o redis estar rodando rode seguinte comando para iniciar o Celer que é o worker que gerencia o processamento em Background:
Rodar o Redis:
redis-server
Rodar o Celery:
celery -A app.celery worker --loglevel=info
Agora rode a API:
flask run
Caso queira acompanhar os processamentos por uma painel web, rode em outro terminal: (Precisará ter o flower instalado)
celery -A app.celery flower
Para fazer o upload do aquivo você pode usar o seguinte comando:
curl -X POST -F "file=@/path/to/your/video.mp4" http://127.0.0.1:5000/upload
mantenha o "@", somente após ele você informa o path do arquivo.
Para fazer o download do arquivo:
curl -X GET "http://localhost:5000/download?file_path=path/para/seu/arquivo.txt" -O
Faz o upload do arquivo:
const uploadFile = async () => {
// Seleciona o arquivo do input (suponha que tenha um input file no HTML)
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0];
// Dados do formulário que o endpoint requer
const sourceLanguage = 'en'; // Exemplo de língua fonte
const destLanguage = 'es'; // Exemplo de língua de destino
const user = 'user123'; // Exemplo de nome de usuário
// Cria um FormData para enviar o arquivo e os dados do formulário
const formData = new FormData();
formData.append('file', file); // Adiciona o arquivo
formData.append('source_language', sourceLanguage);
formData.append('dest_language', destLanguage);
formData.append('user', user);
// Faz a requisição `POST` para o endpoint
try {
const response = await fetch('http://127.0.0.1:5000/upload', {
method: 'POST',
body: formData, // Envia o FormData com o arquivo e os dados do formulário
});
if (!response.ok) {
throw new Error('Erro ao enviar o arquivo');
}
const result = await response.json(); // Obtem a resposta como JSON
console.log('Sucesso:', result); // Exibe a resposta da API
} catch (error) {
console.error('Erro:', error); // Lida com erros
}
};
Faz o download do arquivo
fetch('http://127.0.0.1:5000/download?file_path=result/result.mp4')
.then(response => {
if (!response.ok) {
throw new Error('Erro ao baixar o arquivo');
}
return response.blob(); // Obtém o arquivo como um blob
})
.then(blob => {
// Cria um link temporário para download
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = 'result.mp4'; // Nome do arquivo baixado
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url); // Libera o objeto URL
})
.catch(error => {
console.error('Erro ao baixar o arquivo:', error);
});
Você também pode enviar arquivos chamando a API de outra forma ou via Swagger pela URL: http://127.0.0.1:5000/apidocs/#/default
Criar a imagem:
docker-compose build
Subir o container:
docker-compose up
confira qual porta está em uso com o seguinte comando:
sudo lsof -i :6379
Para desligar o serviço basta usar o seguinte comando:
sudo kill -9 <PID>
Para acessar o container você pode usar o seguinte comando:
docker exec -it dubbing-web-1 /bin/bash
Se precisar fazer alguma alteração, vai precisar deletar os containers e criar novamente:
docker-compose down
recriar:
docker-compose up --build