Translauto
Translauto é um tradutor de arquivos de legenda .srt que usa a API gratuita do Google Translate (via deep-translator), com saída em terminal via rich.
apt update && apt install git python python-pip -y
git clone https://github.com/Olliv3r/Translauto
cd Translauto && pip install -r requirements.txt
./translauto.py -s auto -t pt -f subtitle/subtitle.srt
-s auto detecta automaticamente o idioma de origem.
-t pt especifica o idioma de destino (Português).
-f subtitle/subtitle.srt é o caminho para o arquivo de legenda a ser traduzido.
./translauto.py -s en -t pt -a
Traduz todos os .srt do diretório padrão subtitle (ou de outro diretório definido via T_AUTO_DIR). Ao final é exibida uma tabela de resumo com status por arquivo — se um arquivo falhar, os demais continuam sendo processados normalmente.
./translauto.py -s auto -t pt -a -r
Faça backup antes de usar -r — o original é sobrescrito.
./translauto.py -s auto -t pt -f arquivo.srt -d 0.5
-d/--delay define a espera (segundos) entre lotes de tradução. Padrão: 0.3. Aumente se estiver tomando rate limit com frequência.
export T_AUTO_DIR=/sdcard/subtitles
./translauto.py --languages
- O arquivo é lido linha a linha. Um detector de timestamp reconhece linhas de timecode em qualquer formato onde o timecode ocupa a própria linha (SRT, WebVTT, SBV — inclusive variações com
->em vez de-->, ou./,como separador decimal). Linhas de timestamp, índice/cue-id e cabeçalho (WEBVTT,NOTE,STYLE) são preservadas literalmente. Apenas o texto entre elas vai para o tradutor. - Trechos traduzíveis são agrupados em lotes até ~4200 caracteres (limite real da API é 5000). Um arquivo pequeno cai naturalmente em um único request; um arquivo grande é dividido em N lotes, reduzindo o número total de requests.
- Se um lote traduzido não puder ser separado de volta com segurança (contagem de partes não bate), o programa automaticamente cai para tradução item a item nesse lote — mais lento, porém correto.
- Erros de rate limit (
TooManyRequests) e falhas transitórias de rede acionam retry com backoff exponencial (até 4 tentativas). - Se nenhum timestamp for detectado no arquivo, o programa avisa e cai para um modo de tradução de texto puro, dividido por parágrafo.
- Em modo
-a, uma falha em um arquivo não interrompe os demais; o resumo final lista o que passou, o que foi ignorado e o que falhou. - Arquivos binários (byte nulo nos primeiros KB) são identificados e ignorados antes de qualquer tentativa de tradução.
-f arquivoaceita qualquer arquivo apontado explicitamente — não há mais trava por.srt. A extensão só é usada para decidir se um aviso é exibido.-a(varredura de diretório) usa uma whitelist por padrão:.srt, .vtt, .sub, .sbv, .txt. Isso é proposital — varrer um diretório sem filtro pegariaREADME.md, arquivos de configuração, etc. Ajuste com-e/--ext, ex.:-e .srt,.vtt,.md.- ASS/SSA não é suportado. Nesses formatos o timecode fica embutido numa linha CSV (
Dialogue: 0,0:00:01.00,...,texto), não numa linha própria. O detector genérico exige timecode isolado; aplicá-lo a uma linhaDialogue:mandaria a linha inteira (incluindo campos de estilo/CSV) para o tradutor, corrompendo a estrutura. O programa detecta a assinatura ([Script Info]/Dialogue:) e recusa o arquivo em vez de arriscar isso — tanto por extensão quanto pelo conteúdo, mesmo que o arquivo esteja com outra extensão.
- Tradução de arquivos de legenda sem corromper timecodes
- Detector de timestamp agnóstico de formato (SRT, WebVTT, SBV)
- Tradução em lotes com fallback automático para arquivos grandes
- Retry com backoff em rate limit
- Saída em terminal via
rich(progresso, tabelas de resumo) - Suporte a ASS/SSA (precisa de parser dedicado, ver seção acima)
- Preservação de tags inline (
<i>,{\i1}) durante a tradução
© Copyright Olliv3r