AutoHandBrakeCli

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.