Publicado el script que uso para ripear DVDs en serie https://gitlab.com/xuacu/autohandbrakecli
#!/usr/bin/env bash
PRESET=DVD_a_H265_MKV_v4
read -p 'Input dir: ' "SOURCEDIR"
clean() {
trap 'rm "$NAME.$TMP" "$TMP"' EXIT;
}
export -f clean
find "${SOURCEDIR%/}" -iname VIDEO_TS -exec echo {} \;
find "${SOURCEDIR%/}" -iname VIDEO_TS | sort | while read item
do
declare -t NAME=$(echo "$item" | awk -F "/" '{print $(NF-1)}' | sed 's/^\.//g')
declare -t TMP=$(mktemp /tmp/.TMP.XXXXXXX);
figlet "$NAME"
clean
HandBrakeCLI -i "$(echo "$item")" -t 0 2> "$TMP" </dev/null
for title in $(grep "+ title" "$TMP" | awk '{ print $3 }' | grep -o '[0-9]\+')
do
HandBrakeCLI -i "$item" -o "${SOURCEDIR%/}/$NAME$title.mkv" -t $title --all-audio --subtitle "$(seq -s, 1 20)" --preset-import-file $PWD/*.json -Z "$PRESET" </dev/null 2> /dev/null
du -h "$(ls -htr ${SOURCEDIR%/}/$NAME*.mkv)"
done
done
Básicamente funciona ejecutándolo y dándole un directorio de entrada.
Me dio problemas al principio porque el HandBrakeCLI escapaba del bucle y no terminaba los demás DVDs hasta que descubrí esto: https://mywiki.wooledge.org/BashFAQ/089 y ya añadiendo “</dev/null” al final de la ejecución de HandBrakeCLI ya vuelve al bucle como debe.
Es mejorable. Se me hace un poco “sucio” usar archivos externos para almacenar temporales, pero de momento me funciona bien.