Script Para Ajustar o Intevalo de Legendas 2

Publicado por Carlos 28/03/2005

[ Hits: 3.505 ]

Homepage: http://nullterminated.livejournal.com/

Download dectimest0.2.sh




Pessoal,
Recentemente postei um Script (http://www.vivaolinux.com.br/scripts/verScript.php?codigo=974) que segundo eu, serviria para diminuir o intervalo entre as legendas de um filme, bem, eu errei! :-)
O Referido Script na verdade aumenta o Intervalo, esta versão faz o que o outro prometia, mas ambos são úteis... um serve para aumentar e um para diminuir os intervalos...

[]'s a todos, e mil desculpas!!

  



Esconder código-fonte

#!/bin/sh
############################################################################
# Time Decrement SubTitles 
# Ver 0.0.2
# (C) Copyleft 2005 Carlos "Null_Terminated" Andre
# Usage: ./inctimest.sh <time[h m s]> <subtitlefile>
############################################################################

############################################################################
# Know Bugs
# - Se uma legenda possuir mais de uma linha, a sequencia de tempos sera
#   perdida. Para resolver o problema, junte as duas ou mais linhas, pro
#   cesse o arquivo e depois separe-as... :)
############################################################################
TMP=${TMP:-/tmp}
INTERVALSU=$TMP/int.unprocess$$
INTERVALSP=$TMP/int.process$$
SUBTIT=$TMP/subtit$$
SCRAWK=$TMP/scrawk$$
CONT=1

# Verifica o numero de parametros passados ao programa
if [ $# -lt 2 ]; then
   echo "Usage: $0 time[h m s] subtitlefile"
   echo "Example: $0 10s subtitle.txt"
   exit 1
fi

# Nome do arquivo base sem extencao
BASE=$(echo $2 | sed -e "s/\....$//")
# Arquivo processado, resultado
RESULT=$BASE.processed

# Gera Script AWK que formatara os intervalos apropriadamente.
# Certamente seria mais "elegante" usar um arquivo em separado
# ao invez de gera-lo dinamicamente, mas seria menos prático.
cat << _FIM_ > $SCRAWK
{
   OFS=""
   inc=substr(param,1,length(param)-1)
   frt=substr(param,length(param),1)

   if (frt == "h")
   {
      if (\$1 >= inc)
      {
         val1=(\$1-inc)+100
      }
      else
      {
         val1=\$1+100
      }
      val1=substr(val1,2,2)

      if (\$5 >= inc)
      {
         val2=(\$5-inc)+100
      }
      else
      {
         val2=\$5+100
      }   
      val2=substr(val2,2,2)

      print val1,":",\$2,":",\$3,",",\$4,"-->",val2,":",\$6,":",\$7,",",\$8
   }
   
   if (frt == "m")
   {
      if (\$2 >= inc)
      {
         val1=(\$2-inc)+100
      }
      else
      {
         val1=\$2+100
      }   
      val1=substr(val1,2,2)
      
      if (\$6 >= inc)
      {
         val2=(\$6-inc)+100
      }
      else
      {
         val2=\$6+100
      }   
      val2=substr(val2,2,2)

      print \$1,":",val1,":",\$3,",",\$4,"-->",\$5,":",val2,":",\$7,",",\$8
   }

   if (frt == "s")
   {
      if (\$3 >= inc)
      {
         val1=(\$3-inc)+100
      }
      else
      {
         val1=\$3+100
      }   
      val1=substr(val1,2,2)

      if (\$7 >= inc)
      {
         val2=(\$7-inc)+100
      }
      else
      {
         val2=\$7+100
      }   
      val2=substr(val2,2,2)

      print \$1,":",\$2,":",val1,",",\$4,"-->",\$5,":",\$6,":",val2,",",\$8
   }
   
}
_FIM_

# Gera um arquivo com os intervalos das legendas
cat $2 | sed -n -e 's/ --> /:/;s/,/:/g;/^0[01].*$/p' >> $INTERVALSU
# Processa o arquivo de intervalos decrementando os tempos necessários
awk -F ":" -v param=$1 -f $SCRAWK $INTERVALSU >> $INTERVALSP
# Gera um arquivo somente com as "legendas" em si
cat $2 | sed -n -e '/^0[01].*$/d;/^$/d;/[^1-9][^0-9][^0-9][^0-9]$/p' >> $SUBTIT

# Gera o seultado em si.
# $COUNT   = Indice
# $y      = Intervalos
# $SUBTIT   = Legendas em si
for y in `cat $INTERVALSP`; do
   echo $CONT >> $RESULT
   echo $y >> $RESULT
   cat $SUBTIT | sed -n -e ${CONT}'p' >> $RESULT
   echo -e "\n\c" >> $RESULT
   CONT=$((CONT+1))
done

# Limpa a casa
rm -f $INTERVALSU
rm -f $INTERVALSP
rm -f $SUBTIT
rm -f $SCRAWK

Scripts recomendados

Administração do Samba + LDAP - ainda para terminar

slackpigs - veja os pacotes que mais ocupam espaço no Slackware

Rotação de Arquivos de Log

Script para iniciar programas instalados no wine

Envia e-mails periodicamente com back-up do servidor


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts