quinta-feira, 13 de dezembro de 2007

Novidades do Jubler 3.4.1

Acabei de instalar uma nova versão do Jubler, a 3.4.1, e uma das coisas que gostei nela tem haver com o script do meu último post.
O Panayotis acrescentou nas informações sobre a legenda (CTRL+I), estatísticas do arquivo, quantidade de linhas, maior linha e a opção de visualizar a linhas maiores que um valor indicado (40 caracteres, por exemplo) em destaque com outra cor.
Ponto positivo para um aplicativo que já era bom, e agora ficou melhor ainda.

Script para retirar caracteres desnecessários em legendas

No ano passado fiz um trabalho criar legendas para umas entrevistas em espanhol.
Os vídeos somavam mais de 7 horas, e para enfrentar esta tarefa usei o Jubler.
Como ele tem a capacidade de mostrar o áudio do filme de forma gráfica, fica bem fácil de criar e editar as legendas de forma confortável.
Antes de fazer as legendas, foi necessário traduzir as entrevistas. Depois, no momento da edição das legendas, o trabalho maior foi o copiar e colar.
O problema é que comecei a perceber que perdia muito tempo limpando espaços duplos ou triplos, resultantes do "colar" e espaços em branco no início e no final das linhas.
Para resolver isto, criei um script que retirava estes espaços desnecessários automaticamente. Foi bom, porque assim treinei tive a oportunidade de treinar um pouco de shell script (link com um ótimo curso de shell script para iniciantes).
Depois de algum tempo fiz umas melhoras no script. Agora ele mostra algumas informações sobre o arquivo, quantidade de linhas e as 10 maiores linhas do arquivo (informação esta muito útil quando se quer controlar a quantidade de caracteres máxima de cada linha).
O interessante é que alguns trechos dele podem ser usados para outras finalidades.

O código está abaixo:
#!/bin/bash
#Script limpalegenda. Retira caracteres desnecessários de legendas srt e mostra informações sobre o arquivo
#escrito por FranciscoLima - faclsp@gmail.com - linuxnomicro.blogspot.com

clear

#verifica se foi passado um arquivo
if [ "$#" -ne 1 ]
then
echo
echo "Atenção: Você tem que indicar um arquivo!
DIGITE: limpalegenda nomedoarquivo"
echo
exit 1
fi

#faz cópia de segurança do arquivo e retira os espaços duplicados;
#triplicados; em branco no final ou no início do arquivo
hora=`date +%H%M%S`
cp -f $1 $1_$hora.bak
sed -e 's/ / /g; s/ / /g; s/^ //g; s/^ //g; s/ \r/\r/g; s/ $//g' $1 >/tmp/$$ 2>/dev/null
mv -f /tmp/$$ $1
echo "Ok: Caracteres desnecessários foram retirados"

#lista informações sobre o arquivo

#quantidade de linhas
quant_linh=`wc -l $1 | cut -d " " -f1 `
echo
echo "Este arquivo tem $quant_linh linhas"

#calcula o tamanho das linhas do arquivo e mostra as 10 maiores
echo "As 10 maiores linhas são:"
echo tam - linha -- texto
#troca as linhas vazias por linhas escrito "bco",
#no redirecionamento do cat são perdidas as linhas vazias, o que atrapalha a contagem das linhas
sed -e 's/^$/bco/g' $1 > /tmp/1$$
n=1
IFS="
"
for i in `cat < /tmp/1$$`
do
quant=${#i}
echo $quant -- $n -- $i >> /tmp/$$
let n++
done
sort -nr /tmp/$$ | head -10
rm -f /tmp/$$
rm -f /tmp/1$$

#ver codificacao do sistema
echo "codificação"> /tmp/cod$$
cod_sis=`file -ib /tmp/cod$$ | cut -d " " -f2 | cut -d "=" -f2`
rm -f /tmp/cod$$

#ver codificacao do arquivo
cod_arq=`file -ib $1 | cut -d " " -f2 | cut -d "=" -f2`
if [ $cod_sis != $cod_arq ]
then
echo
echo "ATENÇÂO:"
echo "Seu sistema está codificado em $cod_sis"
echo "O arquivo $1 em $cod_arq"
echo "Por isso os caracteres estranhos"
fi



Para usá-lo, copie o código num arquivo com o nome de limpalegenda, dê permissões de execução para ele e o mova para o diretório /usr/local/bin.
Depois é só abrir um terminal no diretório onde está a legenda que você quer limpar e usar o comando $ limpalegenda nomedoarquivo
Se preferir baixar o arquivo, ele está aqui.
Bom, espero que este script seja útil.