Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Copyright (C) 2009 Luis Palacios
- #
- # dvd2mpeg4.sh
- # Extraer los capitulos de un DVD y crear ficheros Matroska con H264 y AAC
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
- Version=1.5
- INFOFILE="/tmp/dvd2mpeg4.nfo"
- INFOALL="/tmp/dvd2mpeg4.nfoall"
- OUTFILE="/tmp/dvd2mpeg4.out"
- ASFILE="/tmp/dvd2mpeg4.as" # Información --aiden --aides --siden --sides
- # ----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
- # No modificar a partir de este punto
- #
- # Usar las variables con "echo -e" para que interprete las secuencias \escaped...
- NORMAL="\033[0;39m"
- ROJO="\033[1;31m"
- VERDE="\033[1;32m"
- AMARILLO="\033[1;33m"
- # Columna donde se muestra el mensaje de resultado (linea 1000, asi siempre
- # es la ultima linea de la shell... y columna 80)
- DONE="\033[1000;80H[${VERDE}DONE${NORMAL}]"
- RESOK="\033[1000;80H[${VERDE}OK${NORMAL}]"
- RESDRYRUN="\033[1000;80H[${VERDE}No ejecutar${NORMAL}]"
- RESWARN="\033[1000;75H[${AMARILLO}warning${NORMAL}]"
- RESOMITIDO="\033[1000;75H[${AMARILLO}Omitido${NORMAL}]"
- RESERROR="\033[1000;77H[${ROJO}ERROR${NORMAL}]"
- # Funciones
- # ==========================================================================
- #
- # Mostrar como se usa este programa
- #
- uso() {
- mi_nombre=`basename $0`
- echo
- echo "${mi_nombre}, v${Version}. Copyright (c) 2009 Luis Palacios"
- echo "Extraer los capitulos de un DVD y crear ficheros Matroska con H264 y AAC"
- echo
- echo "OPCIONES COMUNES"
- echo "================"
- echo
- echo " -h Esta ventana de ayuda"
- echo " -n Mostrar lo que se haría pero sin hacerlo."
- echo " -v Mostrar mas información (ser más cotilla)."
- echo
- echo " -m|--media <NOMBRE>"
- echo " NOMBRE Nombre del directorio anterior a donde está VIDEO_TS"
- echo " por ejemplo: /home/luis/media/PELICULA/"
- echo
- echo " --iso <NOMBRE>"
- echo " NOMBRE Nombre del fichero NOMBRE.iso"
- echo
- echo " -d Activar deinterlace"
- echo
- echo
- echo "EXTRAER INFORMACIÓN DEL DVD"
- echo "==========================="
- echo
- echo "Uso: `basename $0` [--info|--infoall]"
- echo "Uso: `basename $0` [-hnv] -R -p <PISTA>"
- echo
- echo " --info Mostrar información del DVD"
- echo " --infoall Mostrar información completa del DVD"
- echo " -R -p <PISTA> Reproducir la pista PISTA desde el DVD"
- echo
- echo
- echo "EXTRAER y CODIFICAR UN TRACK ESPECÍFICO"
- echo "======================================="
- echo
- echo "Uso: `basename $0` -T -t \"<titulo\" -p <n> -E <n> --aiden <n> [--aides <n>] --siden <n> --sides <n> [--min] [--crop] [--noclean]"
- echo
- echo " -T Extraer y codifica un determinado \"Track\""
- echo " -t \"<titulo>\" Título de la película y temporada"
- echo " -p <n> Número de pista a extraer del DVD (usa --info para saber cual)"
- echo " --aiden <n> AID del Idioma Inglés"
- echo " --aides <n> AID del Idioma Español"
- echo " --siden <n> SID del Subtítulo Inglés"
- echo " --sides <n> SID del Subtítulo Español"
- echo ""
- echo " --noclean No limpiar los ficheros intermedios"
- echo " --crop Adivinar el área de crop y hacer el recorte"
- echo " --min <minutos> Número de minutos a procesar, util para hacer pruebas."
- echo
- echo
- echo "EXTRAER LOS FICHEROS .vob, .txt, .ifo"
- echo "====================================="
- echo
- echo "Uso: `basename $0` -X -p \"<n> [n] [n] ...\" -t \"<titulo>\" -E <n>"
- echo
- echo " -X Extraer ficheros .vob, .txt, .ifo"
- echo " -p \"<n> ...\" Números de pistas a extraer del DVD (usa --info para saber cuales debes extraer)"
- echo " -t \"<titulo>\" Prefijo del nombre del fichero de salida: \"<titulo>- Episodio <n>\""
- echo " -E <n> Número del primer Episodio a usar en el nombre del fichero de salida."
- echo " Es Obligatorio si hay más de una pista y se incrementa según el número de pistas que se extraigan"
- echo " No es necesario si sólo hay una única pista"
- echo
- echo
- echo "TRANSCODIFICAR FICHEROS .vob"
- echo "============================"
- echo
- echo "Uso: `basename $0` -V -t \"<titulo>\""
- echo
- echo " -V Buscar y transcodificar todos los ficheros .vob del directorio actual".
- echo " -t \"<titulo>\" Prefijo del nombre de los ficheros a buscar \"<titulo>*.vob|txt|ifo\""
- echo
- echo
- echo "METODO DE TRABAJO RECOMENDADO"
- echo "============================="
- echo
- echo "Primero recomiendo extraer todos los VOB's del DVD o DVDs usando la opción -X, de modo que se"
- echo "crearán tres archivos por cada pista. En el caso de series con múltiples DVDs lo "
- echo "más rápido es extraer todos los episodios de todos los DVDs al disco duro y luego transcodificarlos."
- echo
- echo "PELICULAS o DVDs hecho a mano, con sólo una Pista a procesar"
- echo " 1) Extraer pista 1"
- echo " `basename $0` -X -p 1 -t \"Mi_dvd\""
- echo
- echo " 2) Transcodificar el VOB"
- echo " `basename $0` -V -t \"Mi_dvd\""
- echo
- echo "O bien, hacerlo todo junto, extraer y luego transcodificar"
- echo " `basename $0` -X -p 1 -V -t \"Mi_dvd\""
- echo
- echo
- echo "SERIES: ---"
- echo "Extraer pistas 1,3,4,5, creando cuatro ficheros \"Mi_Serie - Episodio [5|6|7|8]\".<vob|txt|ifo>"
- echo " `basename $0` -X -p \"1 3 4 5\" -t \"Mi_Serie\" -E 5"
- echo
- echo "Transcodificar todos los VOBs y crear matroskas"
- echo " `basename $0` -V -t \"Mi_Serie\""
- echo
- echo
- echo "--"
- exit 1 # Salimos
- }
- #
- # verbose() Muestra mensaje si esta activo verbose
- #
- echo_verbose() {
- if [ "${verbose}" = "1" ]; then
- echo "${*}"
- fi
- }
- #
- # show_outfile() Muestra el fichero temporal OUTFILE
- #
- show_outfile() {
- echo "-------------------------------"
- echo
- echo
- echo
- if [ -f ${OUTFILE} ]; then
- cat ${OUTFILE}
- rm ${OUTFILE}
- fi
- }
- hms()
- {
- secs=${1}
- crono=`printf "%02d:%02d:%02d\n" $((secs/3600)) $((secs/60%60)) $((secs%60))`
- }
- cronoStart() {
- START=`date +%s`
- }
- cronoStop() {
- STOP=`date +%s`
- secs=$((${STOP}-${START}))
- hms ${secs}
- START=0
- }
- #
- # find_media(). Es lo primero que se hace, identificar el DVD
- #
- find_media() {
- echo "`basename $0`, v${Version}. Copyright (c) 2009 Luis Palacios"
- echo "----------------------------------------------------"
- echo
- if [ "${ISO}" = "" ]; then
- if [ "${MEDIA}" = "" ]; then
- echo buscando media
- media_name
- fi
- DVD="${MEDIA}VIDEO_TS"
- if [ ! -d "${DVD}" ]; then
- DVD="${MEDIA}"
- if [ ! -f "${DVD}" ]; then
- echo "No se encuentra el DVD en: '${DVD}'"
- exit
- fi
- fi
- #
- # Muestro información
- echo_verbose "Media: ${MEDIA}"
- echo_verbose "DVD: ${DVD}"
- echo_verbose "Comando: ${comando}"
- echo_verbose "Codec: ${codec}"
- echo_verbose "Titulo: ${TITULO}"
- if [ "${dryrun}" = "1" ] ; then echo_verbose "Ejecucion: No actuar"; else echo_verbose "Ejecucion: Actuar"; fi
- if [ "${verbose}" = "1" ] ; then echo_verbose "Verbose: Ser verbose"; fi
- else
- MEDIA="${HOME}/iso"
- if [ ! -d "${MEDIA}" ]; then
- mkdir "${MEDIA}"
- fi
- mount | grep "${MEDIA}" > /dev/null 2>&1
- if [ "$?" = "0" ]; then
- sudo umount "${MEDIA}"
- fi
- # Montaje de la imagen iso
- sudo mount -t iso9660 -o loop ${ISO} "${MEDIA}"
- if [ -d "${MEDIA}/video_ts" ]; then
- DVD="${MEDIA}/video_ts"
- fi
- if [ -d "${MEDIA}/VIDEO_TS" ]; then
- DVD="${MEDIA}/VIDEO_TS"
- fi
- fi
- }
- #
- # media_name() Devuelve el nombre del DVD montado
- #
- media_name() {
- echo -n "Obteniendo nombre de dispositivo montado en /media"
- if [ "${dryrun}" = "1" ] ; then
- echo -e "${RESDRYRUN}"
- echo_verbose "mount | grep -i sr0 | awk '{print $3}' | sed -e 's%.*/%%' -e 's%\.[^.]*$%%'"
- fi
- a=`mount | grep -i sr0 | awk '{print $3}' | sed -e 's%.*/%%' -e 's%\.[^.]*$%%'|head -1`
- cronoStart
- MEDIA="`ls -1d /media/${a}*/ 2>/dev/null | head -1`"
- if [ ${?} = 0 ] && [ ! -z "${MEDIA}" ] ; then
- echo -e "${RESOK} ($crono)"
- cronoStop
- else
- echo -e "${RESERROR}"
- echo "No hay ningún dispositivo montado en /media"
- exit
- fi
- }
- #
- # find_bigTracks()
- # Encuentra pistas de mas de 30 minutos con pistas de audio en ingles y/o español
- #
- find_bigTracks() {
- cIFS=${IFS}
- IFS=$'\t\n'
- for aline in `lsdvd "${MEDIA}" | grep Length | sed -e 's/Title: \([0-9]*\),/\1/'g -e 's/Length: //'g -e 's/Length: //'g -e 's/ Chap.*//' -e '/^$/d'`
- do
- IFS=${cIFS}
- trackNumber=`echo $aline | awk '{print $1}'`
- trackTime=`echo $aline | awk '{print $2}'`
- trackHours=`echo $trackTime | awk 'BEGIN { FS = ":" } ; {print $1}'`
- trackMins=`echo $trackTime | awk 'BEGIN { FS = ":" } ; {print $2}'`
- if [ ${trackHours} -gt 0 ] || [ ${trackMins} -gt 30 ]; then
- echo "Track $trackNumber, Time: $trackHours:$trackMins"
- lsdvd -a -t "${trackNumber}" "${MEDIA}"
- fi
- IFS=$'\t\n'
- done
- IFS=${cIFS}
- }
- #
- # extraeVOB()
- #
- # Extrae las películas en bruto desde el DVD y las salva como fichero .vob, de modo
- # que luego puedan ser transcodificadas desde disco duro, con el consiguiente ahorro de
- # tiempo que supone. Por un lado es más rápido trabajar desde disco y por otro se puede
- # independizar la copia de los datos de los DVDs del proceso en sí de transcodificación,
- # por ejemplo sería posible extraer todos los VOBs de 6 DVDs y procesarlos durante la noche.
- # La extracción de 6-8GB tarda aprox 6-8 minutos, por lo que merece la pena-
- #
- # No sólo se extrae el .vob con la película completa, tanto si es una sola pista (una
- # película) como si son varias (capítulos de una serie), para cada extracción se crean
- # tres ficheros:
- #
- # Pelicula_tal_y_tal.ifo Es una copia del VTS_01_0.IFO. Lo vamos a necesitar a la hora de
- # trabajar con los subtítulos, para asegurarnos que sus colores son
- # los adecuados (tipicamente blanco con borde negro), o podríamos
- # caer en el problema de tener subtítulos de colores. Se usará
- # con mencoder -ifo <fichero>.ifo durante estas 2 operaciones:
- # 1) extraer el segundo subtítulo
- # 2) primera pasada de la transcodificación.
- #
- # Pelicula_tal_y_tal.txt En este fichero voy a guardarme la salida de la información que se
- # obtiene con --info, es decir, la información de qué pistas de idiomas
- # y de subtítulos contiene la película. De esta forma guardo junto
- # al fichero .vob información sobre qué idioma corresponde a qué "aid",
- # y qué idioma de subtítulo corresponde a qué "sid".
- #
- # Pelicula_tal_y_tal.vob Copia en "bruto" del video de la pelicula, junto con todos los
- # idiomas y subtítulos.
- #
- #
- extraeVOB() {
- echo -n "Obteniendo información del DVD, idiomas y subtítulos."
- if [ ! -f "${TITULO}.txt" ]; then
- cronoStart
- getTheInfo
- cronoStop
- echo -e "${RESOK} ($crono)"
- cat "${ASFILE}" > "${TITULO}.txt"
- else
- # . "./${TITULO}.txt"
- echo -e "${RESOMITIDO}"
- fi
- if [ "${unaPista}" = "0" ]; then
- echo -n "Extrayendo la información de las pistas"
- if [ ! -f "${TITULO}-chapter.txt" ]; then
- cronoStart
- dvdxchap -t "${PISTA}" "${MEDIA}" > "${TITULO}-chapter.txt"
- if [ ${?} = 0 ]; then
- cronoStop
- echo -e "${RESOK} ($crono)"
- else
- echo -e "${RESERROR}"
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- echo -n "Copiando el fichero IFO"
- if [ ! -f "${TITULO}.ifo" ]; then
- if [ -f "${DVD}/VTS_01_0.IFO" ]; then
- cp "${DVD}/VTS_01_0.IFO" "${TITULO}.ifo" > ${OUTFILE} 2>&1
- ret=$?
- fi
- if [ -f "${DVD}/vts_01_0.ifo" ]; then
- cp "${DVD}/vts_01_0.ifo" "${TITULO}.ifo" > ${OUTFILE} 2>&1
- ret=$?
- fi
- if [ ${ret} = 0 ]; then
- echo -e "${RESOK}"
- else
- echo -e "${RESERROR}"
- show_outfile
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- fi
- echo -n "Extrayendo el VOB del Episodio ${episodio}"
- if [ ! -f "${TITULO}.vob" ]; then
- cronoStart
- mplayer dvd://${PISTA} -dvd-device "${MEDIA}" -dumpstream -dumpfile "${TITULO}.vob" > ${OUTFILE} 2>&1
- if [ ${?} = 0 ]; then
- cronoStop
- echo -e "${RESOK} ($crono)"
- else
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- }
- #
- # getTheInfo()
- #
- # Obtener Informacion del DVD. Se analiza la salida del comando "mplayer -v" para averiguar la información
- # más importante del DVD en mi caso, es decir, cuales son las pistas de audio y los subtítulos en Inglés y
- # en Español.
- #
- # Se analizan los datos de una salida del tipo:
- #
- # :
- # Hay 21 títulos en este DVD.
- # stream de audio: 0 formato: ac3 (5.1) idioma: en aid: 128.
- # stream de audio: 2 formato: ac3 (5.1) idioma: es aid: 130.
- # stream de audio: 3 formato: ac3 (mono) idioma: en aid: 131.
- # subtítulo ( sid ): 0 idioma: en
- # subtítulo ( sid ): 1 idioma: en
- # subtítulo ( sid ): 3 idioma: es
- # subtítulo ( sid ): 6 idioma: es
- # Número de subtítulos en el disco: 7
- # :
- getTheInfo() {
- #set -x
- ## Checkout the DVD information.
- mplayer -v "dvd://${PISTA}" -dvd-device "${DVD}" -ss 10:00:00 2>/dev/null > "${INFOALL}"
- cat "${INFOALL}" |grep "títulos\|idioma" | grep "en\|es\|unknown" > "${INFOFILE}"
- ## Audio en inglés
- aiden=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep 5.1 | grep -i en | sed -e 's/.*aid: //' -e 's/\.//'`
- if [ "${aiden}" = "" ]; then
- aiden=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep stereo | grep -i en | sed -e 's/.*aid: //' -e 's/\.//'`
- if [ "${aiden}" = "" ]; then
- aiden=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep mono | grep -i en | sed -e 's/.*aid: //' -e 's/\.//'`
- fi
- fi
- aides=""
- ## Audio en Español
- aides=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep 5.1 | grep -i es | sed -e 's/.*aid: //' -e 's/\.//'`
- if [ "${aides}" = "" ]; then
- aides=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep stereo | grep -i es | sed -e 's/.*aid: //' -e 's/\.//'`
- if [ "${aides}" = "" ]; then
- aides=`cat ${INFOFILE} | grep "en\|es" | grep audio | grep mono | grep -i es | sed -e 's/.*aid: //' -e 's/\.//'`
- fi
- fi
- ## Audio marcado como Unknown
- # if [ "${aides}" = "" ]; then
- # aides=`cat ${INFOFILE} | grep "en\|es\|unknown" | grep audio | grep 5.1 | grep -i unknown | sed -e 's/.*aid: //' -e 's/\.//' | head -1`
- # if [ "${aides}" = "" ]; then
- # aides=`cat ${INFOFILE} | grep "en\|es\|unknown" | grep audio | grep stereo | grep -i unknown | sed -e 's/.*aid: //' -e 's/\.//' | head -1`
- # if [ "${aides}" = "" ]; then
- # aides=`cat ${INFOFILE} | grep "en\|es\|unknown" | grep audio | grep mono | grep -i unknown | sed -e 's/.*aid: //' -e 's/\.//' | head -1`
- # fi
- # fi
- # fi
- # Subtítulos en Inglés
- siden=`cat ${INFOFILE} | grep "sid" | grep en | head -1 | sed -e 's/.*( sid ): //' -e 's/ idi.*//'`
- # Subtítulos en Español
- sides=`cat ${INFOFILE} | grep "sid" | grep es | head -1 | sed -e 's/.*( sid ): //' -e 's/ idi.*//'`
- > ${ASFILE}
- if [ ! "${aiden}" = "" ]; then
- echo "AIDEN=${aiden} " >> ${ASFILE}
- fi
- if [ ! "${aides}" = "" ]; then
- echo "AIDES=${aides} " >> ${ASFILE}
- fi
- if [ ! "${siden}" = "" ]; then
- echo "SIDEN=${siden} " >> ${ASFILE}
- if [ "${sides}" = "" ]; then
- echo "SIDES=${siden}" >> ${ASFILE}
- fi
- fi
- if [ ! "${sides}" = "" ]; then
- echo "SIDES=${sides}" >> ${ASFILE}
- if [ "${siden}" = "" ]; then
- echo "SIDEN=${sides}" >> ${ASFILE}
- fi
- fi
- # Analizamos el caso de DVDs hechos en casa, con una única pista de video y de audio
- # o DVD's que "NO" tienes pista de Inglés, donde no me interesan los subtítulos.
- if [ -z "${aiden}" ] && [ -z "${aides}" ] ; then
- unaPista=1
- unaPistaAudio=`cat ${INFOALL} | grep "stream de audio" | grep "aid" | sed -e 's/.*aid: //' -e 's/\.//' | head -1`
- echo "unaPista=1" >> ${ASFILE}
- echo "unaPistaAudio=${unaPistaAudio}" >> ${ASFILE}
- fi
- # exit
- }
- #
- # info()
- #
- # Obtener Informacion del DVD usando getTheInfo()
- #
- info() {
- rm -f ${OUTFILE}
- echo -n "Obteniendo información del DVD"
- if [ "${dryrun}" = "1" ] ; then
- echo -e "${RESDRYRUN}"
- echo_verbose "mplayer -v dvd:// -dvd-device ${DVD} -ss 10:00:00 2>/dev/null |grep -i idioma > ${OUTFILE}"
- else
- echo "" > ${OUTFILE}
- cronoStart
- getTheInfo
- cronoStop
- echo -e "${RESOK} ($crono)"
- cat ${INFOFILE} >> ${OUTFILE}
- echo "-------------------------------------------------------------------------" >> ${OUTFILE}
- echo "" >> ${OUTFILE}
- if [ "${unaPista}" = "1" ]; then
- echo "## De este DVD sólo usaré una única pista de Video y de Audio." >> ${OUTFILE}
- echo "#" >> ${OUTFILE}
- echo -n "Video=" >> ${OUTFILE}
- find_bigTracks >> ${OUTFILE} 2>/dev/null
- echo "Audio=${unaPistaAudio}" >> ${OUTFILE}
- echo "" >> ${OUTFILE}
- else
- echo "## Pistas susceptibles de contener episodios y/o películas:" >> ${OUTFILE}
- echo "#" >> ${OUTFILE}
- find_bigTracks >> ${OUTFILE} 2>/dev/null
- echo "## Valores recomendados para extraer audio y subítulos en Inglés y Español" >> ${OUTFILE}
- echo "#" >> ${OUTFILE}
- cat ${ASFILE} >> ${OUTFILE}
- echo "" >> ${OUTFILE}
- fi
- fi
- if [ -f ${OUTFILE} ]; then
- cat ${OUTFILE}
- rm -f ${OUTFILE} ${INFOFILE} ${OUTFILE}
- fi
- }
- # Obtener Informacion completa del DVD
- # infoall()
- infoall() {
- rm -f ${OUTFILE}
- echo -n "Obteniendo información completa del DVD"
- if [ "${dryrun}" = "1" ] ; then
- echo -e "${RESDRYRUN}"
- echo_verbose "mplayer -v dvd:// -dvd-device ${DVD} -ss 10:00:00 2>/dev/null > ${OUTFILE}"
- else
- cronoStart
- mplayer -v dvd:// -dvd-device ${DVD} -ss 10:00:00 2>/dev/null > ${OUTFILE}
- cronoStop
- echo -e "${RESOK} ($crono)"
- fi
- if [ -f ${OUTFILE} ]; then
- cat ${OUTFILE}
- rm ${OUTFILE}
- fi
- }
- #
- # extrae() Extracción de los VOB's
- # ================================
- #
- extrae() {
- PREFIJO_TITULO=${TITULO}
- P=${PISTA}
- for i in $P; do
- if [ -z "${E}" ] ; then
- TITULO="${PREFIJO_TITULO}"
- else
- episodio=`printf "%02i" ${E}`
- TITULO="${PREFIJO_TITULO} - Episodio ${episodio}"
- fi
- PISTA="${i}"
- echo
- echo
- echo "--"
- extraeVOB
- if [ ! -z "${E}" ]; then
- E=$((E+1))
- fi
- done
- }
- #
- # Limpieza final
- # =================================
- limpiezaFinal() {
- # Limpieza final
- if [ -f "${TITULO}.mkv" ]; then
- rm -f "${TITULO}-chapter.txt"
- rm -f "${TITULO}.txt"
- rm -f "${TITULO}.ifo"
- rm -f "${TITULO}.vob"
- rm -f "${TITULO}-es.aac"
- rm -f "${TITULO}-subs-en.idx"
- rm -f "${TITULO}-subs-en.sub"
- rm -f "${TITULO}-subs-es.idx"
- rm -f "${TITULO}-subs-es.sub"
- rm -f "${TITULO}.avi"
- rm -f "${TITULO}.crop"
- rm -f "${TITULO}.pass1"
- fi
- }
- # Ripea el DVD
- # =================================
- ripea() {
- if [ -f "${TITULO}.mkv" ]; then
- echo "${TITULO}.mkv ya existe"
- return
- fi
- ##
- ##
- # Extraer info del DVD y VOB
- #
- if [ "${argMedia}" = 0 ]; then
- if [ ! -f "${TITULO}.vob" ]; then
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Extracción del .VOB"
- echo -e "${RESDRYRUN}"
- echo_verbose "dvdxchap -t ${PISTA} /dev/dvd > ${TITULO}-chapter.txt"
- echo_verbose "cp ${DVD}/*.IFO ."
- echo_verbose "mplayer dvd://${PISTA} -dumpstream -dumpfile ${TITULO}.vob"
- else
- if [ ! -z "${E}" ] ; then
- PREFIJO_TITULO=${TITULO}
- episodio=`printf "%02i" ${E}`
- TITULO="${PREFIJO_TITULO} - Episodio ${episodio}"
- fi
- echo
- echo
- echo "--"
- extraeVOB
- IMAGEN="${TITULO}.vob"
- fi
- else
- IMAGEN="${TITULO}.vob"
- fi
- fi
- ##
- ##
- # Video - cropping
- CROP=""
- if [ "${useCrop}" = "1" ]; then
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Averiguando el Cropping"
- echo -e "${RESDRYRUN}"
- else
- echo -n "Detectando el CROP"
- if [ ! -f "${TITULO}.crop" ]; then
- cronoStart
- if [ "${argMedia}" = 0 ]; then
- mplayer ${IMAGEN} -vf cropdetect -sb 50000000 -frames 100 -vo null -ao null > ${OUTFILE} 2>/dev/null
- else
- mplayer dvd://${PISTA} -dvd-device "${MEDIA}" -vf cropdetect -sb 50000000 -frames 100 -vo null -ao null > ${OUTFILE} 2>/dev/null
- fi
- if [ ${?} = 0 ]; then
- cronoStop
- echo -e "${RESOK} ($crono)"
- else
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- # Extraigo el valor de cropt detectado que más se repite
- echo -n "Extrayendo el valor de cropt más repetido"
- cronoStart
- CROP="`grep CROP ${OUTFILE} | sed -e 's/^[^(]*(//; s/).*$//' -e 's/.*\(crop=.*\).*/\1/' | sort | uniq -c | sort | tail -1 | sed -e 's/.*\(crop=.*\).*/\1/'`,"
- if [ ${?} = 0 ]; then
- cronoStop
- echo -e "${RESOK} ($crono)"
- echo "${CROP}" > "${TITULO}.crop"
- else
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- else
- CROP=`cat "${TITULO}.crop"`
- echo -e "${RESOMITIDO}"
- fi
- fi
- fi
- ##
- ##
- # He probado con 1800 inicialmente.
- # Ahora lo voy a dejar a 2000 una temporada a ver si se nota
- BITRATE=2000
- ##
- ##
- # Activado deinterlace¿?
- DEINTERLACE=""
- if [ "${deinterlace}" = "1" ]; then
- #DEINTERLACE="pp=ci,"
- #DEINTERLACE="yadif=3,mcdeint,"
- DEINTERLACE="yadif,"
- fi
- ###
- ###
- # Creación del AVI, con subtítulos en inglés y español, audio AAC en inglés y video H.264
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Transcodificando video"
- echo -e "${RESDRYRUN}"
- else
- echo -n "Trascodificando a H.264, pasada 1:"
- if [ ! -f "${TITULO}.pass1" ]; then
- echo
- cronoStart
- # Identifico la fuente
- if [ "${argMedia}" = 0 ]; then
- FUENTE="${IMAGEN}"
- else
- FUENTE="dvd://${PISTA} -dvd-device ${MEDIA}"
- fi
- # Averiguo si tengo una única pista de audio (típicamene sólo en Español)
- if [ "${unaPista}" = "1" ]; then
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -o /dev/null -vc mpeg12 ${FRAMES} \
- -vf ${DEINTERLACE}${CROP}softskip,harddup \
- -aid ${unaPistaAudio} -af volume=7:0 -oac faac -faacopts mpeg=4:br=110:object=2 \
- -ovc x264 -x264encopts bitrate=${BITRATE}:subq=5:bframes=3:b_pyramid:weight_b:turbo=1:threads=auto:pass=1 \
- -passlogfile "${TITULO}.pass1" 2>${OUTFILE}
- else
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -o /dev/null -vc mpeg12 ${FRAMES} \
- -ifo "${TITULO}.ifo" -sid ${SIDEN} -vobsubout "${TITULO}-subs-en" -vobsuboutindex 0 \
- -vf ${DEINTERLACE}${CROP}softskip,harddup \
- -aid ${AIDEN} -af volume=7:0 -oac faac -faacopts mpeg=4:br=110:object=2 \
- -ovc x264 -x264encopts bitrate=${BITRATE}:subq=5:bframes=3:b_pyramid:weight_b:turbo=1:threads=auto:pass=1 \
- -passlogfile "${TITULO}.pass1" 2>${OUTFILE}
- fi
- if [ ${?} = 0 ]; then
- cronoStop
- echo
- echo -n "Trascodificando a H.264, pasada 1:"
- echo -e "${RESOK} ($crono)"
- else
- echo
- echo -n "Trascodificando a H.264, pasada 1:"
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- echo -n "Trascodificando a H.264, pasada 2:"
- if [ ! -f "${TITULO}.avi" ]; then
- echo
- cronoStart
- #
- if [ "${argMedia}" = 0 ]; then
- FUENTE="${IMAGEN}"
- else
- FUENTE="dvd://${PISTA} -dvd-device ${MEDIA}"
- fi
- # Averiguo si tengo una única pista de audio (típicamene sólo en Español)
- if [ "${unaPista}" = "1" ]; then
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -o "${TITULO}.avi" -vc mpeg12 ${FRAMES} \
- -vf ${DEINTERLACE}${CROP}softskip,harddup \
- -aid ${unaPistaAudio} -af volume=7:0 -oac faac -faacopts mpeg=4:br=110:object=2 \
- -ovc x264 -x264encopts bitrate=${BITRATE}:subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b:threads=auto:pass=2 \
- -passlogfile "${TITULO}.pass1" 2>${OUTFILE}
- else
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -o "${TITULO}.avi" -vc mpeg12 ${FRAMES} \
- -vf ${DEINTERLACE}${CROP}softskip,harddup \
- -aid ${AIDEN} -af volume=7:0 -oac faac -faacopts mpeg=4:br=110:object=2 \
- -ovc x264 -x264encopts bitrate=${BITRATE}:subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b:threads=auto:pass=2 \
- -passlogfile "${TITULO}.pass1" 2>${OUTFILE}
- fi
- if [ ${?} = 0 ]; then
- cronoStop
- echo
- echo -n "Trascodificando a H.264, pasada 2:"
- echo -e "${RESOK} ($crono)"
- else
- echo
- echo -n "Trascodificando a H.264, pasada 2:"
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- fi
- ###
- ###
- # Extraigo el segundo subtitulo
- if [ ! "${unaPista}" = "1" ]; then
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Extracción del segundo subtítulo"
- echo -e "${RESDRYRUN}"
- else
- echo -n "Extrayendo subtítulos en Español ${TITULO}-subs-es"
- if [ ! -f "${TITULO}-subs-es.idx" ]; then
- echo
- cronoStart
- #OK
- if [ "${argMedia}" = 0 ]; then
- FUENTE="${IMAGEN}"
- else
- FUENTE="dvd://${PISTA} -dvd-device ${MEDIA}"
- fi
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -vc mpeg12 ${FRAMES} \
- -ifo "${TITULO}.ifo" -sid ${SIDES} -vobsubout "${TITULO}-subs-es" -vobsuboutindex 0 \
- -aid ${AIDEN} -oac pcm -ovc copy -o /dev/null 2>/dev/null
- if [ ${?} = 0 ]; then
- cronoStop
- echo
- echo -n "Extrayendo subtítulos en Español ${TITULO}-subs-es"
- echo -e "${RESOK} ($crono)"
- else
- echo
- echo -n "Extrayendo subtítulos en Español ${TITULO}-subs-es"
- echo -e "${RESERROR}"
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- fi
- fi
- ###
- ###
- # Extracción de la [segunda] pista de audio en Español
- if [ ! -z "${AIDES}" ]; then
- echo aqui
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Extracción de la segunda pista de audio (español)"
- echo -e "${RESDRYRUN}"
- else
- echo -n "Extracción del audio Español: ${TITULO}-es.aac:"
- if [ ! -f "${TITULO}-es.aac" ]; then
- echo
- cronoStart
- # Mantener al máximo la sincronía A/V, aunque cueste un poco más sacar el audio.
- #OK
- if [ "${argMedia}" = 0 ]; then
- FUENTE="${IMAGEN}"
- else
- FUENTE="dvd://${PISTA} -dvd-device ${MEDIA}"
- fi
- mencoder -msglevel all=-1:statusline=5 "${FUENTE}" -vc mpeg12 ${FRAMES} -aid ${AIDES} -oac faac -faacopts mpeg=4:br=110:object=2 -af volume=7:0 -sws 0 -vf ${CROP}scale=16:16,softskip,harddup -ovc lavc -lavcopts vcodec=mpeg2video -of rawaudio -o "${TITULO}-es.aac" 2>/dev/null
- if [ ${?} = 0 ]; then
- cronoStop
- echo
- echo -n "Extracción del audio Español: ${TITULO}-es.aac:"
- echo -e "${RESOK} ($crono)"
- else
- echo
- echo -n "Extracción del audio Español: ${TITULO}-es.aac:"
- echo -e "${RESERROR}"
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- fi
- fi
- # Creando Matroska
- rm -f ${OUTFILE}
- if [ "${dryrun}" = "1" ] ; then
- echo -n "Creando Matroska"
- echo -e "${RESDRYRUN}"
- else
- if [ ! -f "${TITULO}.mkv" ]; then
- echo -n "Creando Matroska"
- cronoStart
- # mkvmerge -o ${TIULO}.mkv \ # Fichero de salida
- # --title "${TITULO}" \ # Titulo
- # --chapter-charset "UTF8" --chapters ${TITULO}-chapter.txt \ # Capítulos
- # --track-name "0:Pelicula" -d 0 -A -S ${TITULO}.264 \ # Track 0
- # --language "1:eng" --track-name "1:Inglés" -a 1 -D -S ${TITULO}-en.mp3 \ # Track 1
- # --language "1:spa" --track-name "2:Español" -a 1 -D -S ${TITULO}-es.mp3 \ # Track 2
- # --language "0:eng" --track-name "0:Subtítulos Inglés" \ # Track 3
- # --language "1:spa" --track-name "1:Subtítulos Español" -s "0,1" \ # Track 3
- # -D -A ${TITULO}-vobsubs.idx \ # Track 3
- # --track-order "0:0,1:1,2:1,3:0,3:1" > ${OUTFILE} 2>&1
- #
- # New: "lost_chapter7.idx" "lost_chapter7_sub2.idx" -o "lost_chapter7.mkv"
- #
- #
- if [ "${unaPista}" = "1" ]; then
- mkvmerge -o "${TITULO}.mkv" --aac-is-sbr 0 "--forced-track" "0:no" "--language" "1:spa" "--default-track" "1:yes" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "${TITULO}.avi" "--title" "${TITULO}" # > ${OUTFILE} 2>&1
- else
- if [ -z "${AIDES}" ]; then
- #OK
- mkvmerge -o "${TITULO}.mkv" --aac-is-sbr 0 "--forced-track" "0:no" "--language" "1:eng" "--default-track" "1:yes" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "${TITULO}.avi" "--language" "0:eng" "--default-track" "0:yes" "--forced-track" "0:no" "-s" "0" "-D" "-A" "${TITULO}-subs-en.idx" "--language" "0:spa" "--forced-track" "0:no" "-s" "0" "-D" "-A" "${TITULO}-subs-es.idx" "--track-order" "0:0,0:1,1:0,2:0,3:0" "--title" "${TITULO}" "--chapter-charset" "UTF8" "--chapters" "${TITULO}-chapter.txt" # > ${OUTFILE} 2>&1
- else
- #OK
- mkvmerge -o "${TITULO}.mkv" --aac-is-sbr 0 "--forced-track" "0:no" "--language" "1:eng" "--default-track" "1:yes" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "${TITULO}.avi" --aac-is-sbr 0 "--language" "0:spa" "--forced-track" "0:no" "-a" "0" "-D" "-S" "${TITULO}-es.aac" "--language" "0:eng" "--default-track" "0:yes" "--forced-track" "0:no" "-s" "0" "-D" "-A" "${TITULO}-subs-en.idx" "--language" "0:spa" "--forced-track" "0:no" "-s" "0" "-D" "-A" "${TITULO}-subs-es.idx" "--track-order" "0:0,0:1,1:0,2:0,3:0" "--title" "${TITULO}" "--chapter-charset" "UTF8" "--chapters" "${TITULO}-chapter.txt" # > ${OUTFILE} 2>&1
- fi
- fi
- if [ ${?} = 0 ] || [ ${?} = 1 ]; then
- cronoStop
- echo -e "${RESOK} ($crono)"
- else
- echo -e "${RESERROR}"
- show_outfile
- exit
- fi
- else
- echo -e "${RESOMITIDO}"
- fi
- fi
- if [ "$noClean" = "1" ]; then
- return
- fi
- # Limpieza final
- limpiezaFinal
- }
- #
- # COMANDO: reproducir
- # ===================
- #
- # reproducir() Reproduce una pista concreta del DVD
- #
- reproducir() {
- mplayer -msglevel all=-1:statusline=5 dvd://${PISTA} 2>/dev/null
- }
- #
- # vobs() procesa todos los vobs del directorio actual que empiezan por TITULO*
- # ============================================================================
- #
- vobs() {
- cIFS=${IFS}
- IFS=$'\t\n'
- for i in `ls ${TITULO}*.vob`; do
- IFS=${cIFS}
- _nam=`echo "${i}" | sed -e 's%.*/%%' -e 's%\.[^.]*$%%'` # Nombre del fichero
- _ext=`echo "${i}" | sed -n 's%.*\.\([^/]*\)$%\1%p'` # Extensión
- if [ -f "${_nam}.vob" ] && [ -f "${_nam}.txt" ]; then
- . "./${_nam}.txt"
- TITULO="${_nam}"
- if [ "${unaPista}" = "1" ]; then
- echo "Transcodificar: ${TITULO} (una única pista de audio y video)"
- ripea
- else
- echo "Transcodificar: ${TITULO} --aiden ${AIDEN} --aides ${AIDES} --siden ${SIDEN} --sides ${SIDES}"
- ripea
- fi
- else
- echo -n "Falta el archivo .txt o .ifo"
- echo -e "${RESERROR}"
- fi
- IFS=$'\t\n'
- done
- IFS=${cIFS}
- }
- # -----------------------------------------------------------------------------------------------
- # Cuerpo principal
- #
- # Variables globales
- esPelicula=0
- comando="" # Posibles comandos: info, infoall, reproducir, ripea
- dryrun=0 # =1: no actuar, sólo mostrar lo que se haría
- verbose=0 # Mostrar más info de la normal.
- arg_media=0 # Indica si nos pasan el argumento --media
- codec="x264" # Codec por defecto.
- ISO="" # Nombre del DVD
- MEDIA="" # Nombre del DVD
- DVD="" # Directorio de datos del DVD (típicamente /media/${MEDIA}/VIDEO_TS
- FRAMES=""
- # -t \"<titulo\" -p <n> --aiden <n> --aides <n> --siden <n> --sides <n> [--min] [--crop] [--noclean]"
- # Analisis
- #
- TEMP=`getopt -o hnvm:p:t:c:p:t:RTXE:Vd \
- --long help,no-actuar,verbose,media:,iso:,info,infoall,pista:,titulo:,aiden:,aides:,siden:,sides:,dvd,vob,min:,crop,noclean \
- -n 'dvd2mpeg4.sh' -- "$@"`
- X=0
- useCrop=0
- noClean=0
- argMedia=0
- AIDES=""
- AIDEN=""
- SIDEN=""
- SIDES=""
- unaPista=0
- if [ $? != 0 ] ; then uso ; fi
- eval set -- "$TEMP"
- while true; do
- case "$1" in
- #
- # OPCIONES COMUNES
- # ================
- -h|--help) # Mostrar ayuda y salir
- uso
- shift ;;
- -n|--no-actuar) # Mostrar lo que se haraa sin hacerlo
- dryrun=1
- shift ;;
- -v|--verbose) # Mostrar más información, ser cotilla.
- verbose=1
- shift ;;
- -m|--media)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- argMedia=1
- MEDIA="${2}"
- shift 2 ;;
- esac;;
- --iso)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- ISO="${2}"
- shift 2 ;;
- esac;;
- --noclean)
- noClean=1
- shift ;;
- #
- # EXTRAE LA UNICA PISTA DE VIDEO Y AUDIO EXISTENTE
- # ================================================
- #
- # Uso: dvd2mpeg4.sh -1
- #
- -d) # Extrae una pista
- deinterlace=1
- shift ;;
- #
- # EXTRAER INFORMACIÓN DEL DVD
- # ===========================
- #
- # Uso: dvd2mpeg4.sh [--info|--infoall]
- # Uso: dvd2mpeg4.sh [-hnv] -R -p <PISTA>
- #
- --info) # Obtener información del DVD
- comando="info"
- shift ;;
- --infoall) # INfo completa del DVD
- comando="infoall"
- shift ;;
- -R) # Reproducir el DVD
- comando="reproducir"
- shift ;;
- -p|--pista) # número de track (pista) a extraer
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- PISTA="${2}"
- shift 2 ;;
- esac;;
- # EXTRAER y CODIFICAR UN TRACK ESPECÍFICO
- # =======================================
- #
- # Uso: dvd2mpeg4.sh -T -t "<titulo" -p <n> --aiden <n> --aides <n> --siden <n> --sides <n> \
- # <--dvd|--vob> [--min] [--crop] [--noclean]
- #
- -T) # Extraer un track especifico
- comando="ripea"
- shift ;;
- -t|--titulo) #
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- TITULO="${2}"
- shift 2 ;;
- esac;;
- --aiden)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- AIDEN="${2}"
- shift 2 ;;
- esac;;
- --aides)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- AIDES="${2}"
- shift 2 ;;
- esac;;
- --siden)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- SIDEN="${2}"
- shift 2 ;;
- esac;;
- --sides)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- SIDES="${2}"
- shift 2 ;;
- esac;;
- --crop)
- useCrop=1
- shift ;;
- --min)
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- FRAMES="-frames $((25*60*${2}))"
- shift 2 ;;
- esac;;
- # EXTRAER LOS FICHEROS .vob, .txt, .ifo
- # =====================================
- #
- # Uso: dvd2mpeg4.sh -X -p "<n> [n] [n] ..." -t "<titulo>" -E <n>
- #
- -X) # Extraer .vob, .ifo, .txt
- comando="extrae"
- multiExtrae=1
- shift ;;
- -E) # Número de episodio
- case "$2" in
- "")
- uso
- shift 2 ;;
- *)
- E="${2}"
- shift 2 ;;
- esac;;
- # TRANSCODIFICAR FICHEROS .vob
- # ============================
- #
- # Uso: dvd2mpeg4.sh -V -t "<titulo>"
- #
- -V) # Buscar y transcodificar todos los vobs
- comando="vobs"
- multiVobs=1
- shift ;;
- --)
- shift
- break ;;
- *)
- echo "Error interno"
- uso ;;
- esac
- done
- #echo "Resto de argumentos:"
- #for arg do echo '--> '"\`$arg'" ; done
- for arg do arg_dir=1; done
- # Si tenemos argumentos adicionales se consideraran como el directorio de trabajo
- if [ ! -z "${arg}" ] ; then
- arg_dir=1
- DIR_TRABAJO="${arg}"
- fi
- ## En el caso de pedir una extracción y transcodificación posterior...
- #
- if [ "${multiExtrae}" = "1" ] && [ "${multiVobs}" = "1" ]; then
- comando="allInOne"
- fi
- #
- # Ejecución normal
- #
- # Mensaje de inicio
- if [ ! "${TITULO}" = "" ]; then
- if [ -z "${comando}" ]; then
- comando="ripea" # Por defecto se ripea
- fi
- fi
- #
- # Comandos
- #
- case ${comando} in
- # Extrae el título a un fichero .VOB
- "extrae" | \
- "allInOne" )
- if [ "${comando}" = "allInOne" ]; then
- echo "2en1..."
- fi
- # Busco el dispositivo DVD
- find_media
- # Si nos han llamado con argumentos incorrectos, nos salimos
- if [ "${DVD}" = "" ]; then
- echo -n "Error Argumentos: Falta información del DVD"
- echo -e "${RESERROR}"
- uso
- fi
- if [ "${TITULO}" = "" ]; then
- echo -n "Error Argumentos: Falta el nombre del titulo final"
- echo -e "${RESERROR}"
- uso
- fi
- # if [ "${E}" = "" ]; then
- # echo -n "Error Argumentos: Falta el número de Episodio"
- # echo -e "${RESERROR}"
- # uso
- # fi
- if [ "${PISTA}" = "" ]; then
- echo -n "Error Argumentos: Falta la lista de pistas a extraer"
- echo -e "${RESERROR}"
- uso
- fi
- extrae
- if [ "${comando}" = "allInOne" ]; then
- vobs
- fi
- ;;
- "info" ) # Muestro información de idiomas
- find_media
- if [ "${MEDIA}" = "" ]; then
- uso
- fi
- info
- ;;
- "infoall" ) # Muestro información completa
- find_media
- if [ "${MEDIA}" = "" ]; then
- uso
- fi
- infoall
- ;;
- "reproducir" ) # Reproducir una pista concreta del DVD
- # Busco el dispositivo DVD
- find_media
- # Si nos han llamado con argumentos incorrectos, nos salimos
- if [ "${DVD}" = "" ]; then
- echo -n "Error Argumentos: Falta información del DVD"
- echo -e "${RESERROR}"
- uso
- fi
- if [ "${PISTA}" = "" ]; then
- echo -n "Error Argumentos: Falta el número de pista"
- echo -e "${RESERROR}"
- uso
- fi
- # Si todo está bien, pues a reproducir...
- reproducir
- ;;
- "ripea" ) # RIP
- # Busco el dispositivo DVD
- find_media
- # Si nos han llamado con argumentos incorrectos, nos salimos
- if [ "${DVD}" = "" ]; then
- echo -n "Error Argumentos: Falta información del DVD"
- echo -e "${RESERROR}"
- uso
- fi
- if [ "${PISTA}" = "" ]; then
- echo -n "Error Argumentos: Falta el número de pista"
- echo -e "${RESERROR}"
- uso
- fi
- if [ "${TITULO}" = "" ]; then
- echo -n "Error Argumentos: Falta el nombre del titulo final"
- echo -e "${RESERROR}"
- uso
- fi
- if [ "${AIDEN}" = "" ] || [ "${SIDEN}" = "" ] || [ "${SIDES}" = "" ] ; then
- echo -n "Error Argumentos: Faltan argumentos de idioma y/o subtítulo"
- echo -e "${RESERROR}"
- uso
- fi
- # if [ "${E}" = "" ] ; then
- # echo -n "Error Argumentos: Faltan el número del episodio"
- # echo -e "${RESERROR}"
- # uso
- # fi
- ripea
- ;;
- "vobs" ) # Extrae todos los vobs
- if [ "${TITULO}" = "" ]; then
- echo -n "Error Argumentos: Falta el nombre del titulo final"
- echo -e "${RESERROR}"
- uso
- fi
- vobs
- ;;
- *)
- uso
- ;;
- esac
- #
- # Limpieza
- #
- if [ ! "${ISO}" = "" ]; then
- MEDIA="${HOME}/iso"
- mount | grep "${MEDIA}" > /dev/null 2>&1
- if [ "$?" = "0" ]; then
- sudo umount "${MEDIA}"
- fi
- fi
- #
- # Salimos
- #
- exit
- # Aquí nunca llega :-)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement