#! /bin/sh
echo "Este scrip realiza una copia de seguridad de un DVD codificando el video"
echo "en h264 y el audio en ogg en un mkv que puede incluir subtitulos."
echo "Requiere tener instalados: mplayer, mencoder, normalize-audio, mkvmerge y"
echo "las librerias necesarias para codificar h264 (x264)"
echo
echo "Copyright (C) 2009  ERMes"
echo 
echo "Este programa es software libre: usted puede redistribuirlo y/o modificarlo"
echo "bajo los términos de la Licencia Pública General GNU publicada"
echo "por la Fundación para el Software Libre, ya sea la versión 3"
echo "de la Licencia, o (a su elección) cualquier versión posterior."
echo 
echo "Este programa se distribuye con la esperanza de que sea útil, pero"
echo "SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita"
echo "MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO."
echo "Consulte los detalles de la Licencia Pública General GNU para obtener"
echo "una información más detallada."
echo 
echo "Debería haber recibido una copia de la Licencia Pública General GNU"
echo "junto a este programa."
echo "En caso contrario, consulte <http://www.gnu.org/licenses/>."
echo

cd ~
echo "¿Cual es la ruta del DVD?"
read RUTA
echo "¿Como se llama la pelicula?"
read NOMBRE
mkdir $NOMBRE
echo "Espere miestras se vuelca la pelicula..."
mplayer dvd://1 -dvd-device $RUTA -v -dumpstream -dumpfile $NOMBRE/$NOMBRE.vob 2> /dev/null
echo "¡Hecho!"

echo "¿Desea recortar la pelicula? (s/n)"
read CROP
if [ "$CROP" = "s" ]; then
   mplayer $NOMBRE/$NOMBRE.vob -vf cropdetect > $NOMBRE/crop.txt
   CROP="-vf crop="$(cat $NOMBRE/crop.txt | grep -B3 Exiting... | grep crop | cut -d "=" -f2 | cut -d ")" -f1)
   echo $CROP
   rm $NOMBRE/crop.txt
else
   CROP=""
fi

echo "¿Que bitrate de video desea para el resultado? (Ejemplo: 1000)"
read BITRATE
echo "¿Cuantos hilos desea ejecutar para codificarlo? (Ejemplo: 2)"
read THREADS
echo "Codificando video en h264..."
mencoder -v $NOMBRE/$NOMBRE.vob -ovc x264 -x264encopts bitrate=$BITRATE:threads=$THREADS $CROP -nosound -o $NOMBRE/$NOMBRE.264

echo "Cuando empiece a escuchar el audio de la pelicula pulse ENTER"
AIDS=$(mplayer $NOMBRE/$NOMBRE.vob -v -vo null 2> /dev/null | grep "audio stream" | cut -d ":" -f2)
R=0
while [ "$R" != "n" ]; do
   echo "Estos son los IDs de audio encontrados: "$AIDS
   echo "¿Desea escuchar alguno? (s/n)"
   read R
   if [ "$R" = "s" ]; then
      echo "¿Cual?"
      read AID
      mplayer $NOMBRE/$NOMBRE.vob -v -aid $AID -vo null 2> /dev/null
      echo "¿Desea volcar este canal de audio? (s/n)"
      read R
      if [ "$R" = "s" ]; then
         mplayer $NOMBRE/$NOMBRE.vob -ao pcm:file=$NOMBRE/$AID.wav -vc dummy -aid $AID -vo null
         echo "¡Hecho!"
      fi
   fi
done
rm $NOMBRE/$NOMBRE.vob

echo "Normalizando audio..."
normalize-audio $NOMBRE/*.wav

echo "¿Que factor de calidad desea para el audio? (Ejemplo: 5)"
read Q
echo "Codificando el audio..."
oggenc -q$Q $NOMBRE/*.wav
rm $NOMBRE/*.wav

echo "Cuando vea la informacion de los subtitulos pulse ENTER"
mplayer dvd://1 -dvd-device $RUTA -v -vo null -ao null 2> /dev/null | grep "subtitle"
R=0
while [ "$R" != "n" ]; do
   echo "¿Desea copiar alguno de los subtitulos? (s/n)"
   read R
   if [ "$R" = "s" ]; then
      echo "¿Cual? (Ejemplo: es)"
      read R
      mencoder dvd://1 -dvd-device $RUTA -nosound -ovc frameno -o /dev/null -slang $R -vobsubout $NOMBRE/$R 2> /dev/null
   fi
done

echo "Empaquetando el video mkv..."
mkvmerge -o $NOMBRE/$NOMBRE.mkv $NOMBRE/$NOMBRE.264 $NOMBRE/*.ogg $NOMBRE/*.idx

echo "El proceso ha finalizado con exito."
echo "¿Desea eliminar los archivos temporales que quedan?"
read R
if [ "$R" = "s" ]; then
   rm *.264 *.ogg *.idx *.sub
fi
echo "¡Fin del script!"

