#!/usr/bin/env bash echo "#########################" echo "## Jack the DVD Ripper ##" echo "#########################" # requires mkvtoolnix, libdvdcss, makemkvcon if (( EUID != 0 )); then echo "Error: This script must be run by ROOT" exit fi ROOT="/home/philip" TMPF="riptmp" DEVICE="/dev/$(grep "drive name:" < /proc/sys/dev/cdrom/info | awk '{print $3}')" REMOTEDIR="/mnt/dsm_video" LANGUAGE="fr" blkid "$DEVICE" if (( "$?" == 2 )); then echo "Error: DVD not found in $DEVICE" exit 1 fi if [[ -z "$(ldconfig -p | grep libdvdcss)" ]]; then echo "Error: libdvdcss not installed" exit 1 fi if [[ ! -x "$(command -v makemkvcon)" ]]; then echo "Error: makemkvcon is not installed." >&2 exit 1 fi if [[ ! -x "$(command -v mkvpropedit)" ]]; then echo "Error: mkvtoolnix is not installed." >&2 exit 1 fi if [[ ! -x "$(command -v HandBrakeCLI)" ]]; then echo "Error: HandBrakeCLI is not installed." >&2 exit 1 fi read -pr "Enter the final file name with extension: " name if [[ -z "$name" ]]; then echo "A filename must be given, ex. myvid.mp4" exit fi cd "$ROOT" || exit rm -rf "$TMPF" mkdir "$TMPF" echo "Making MKV in $ROOT/$TMPF" makemkvcon mkv disc:0 all "$TMPF" || echo "Make mkv failed." eject "$DEVICE" && echo "DVD ejected" # get the largest file cd "$TMPF" || exit list="$(find . -type f -exec du -Sh {} + | sort -rh | head -n 1)" file="$(echo "$list" | cut -d "/" -f2)" if [[ ! -e "$file" ]]; then echo "Error: Couldn't find largest mkv file, exiting." exit fi # set default language mkvpropedit "$file" --edit track:a1 --set language="$LANGUAGE" || echo "Could not set default language" echo "Converting $file to $name with Handbrake..." HandBrakeCLI --input "$file" --output "$name" --encoder x264 --quality 20 --ab 160 echo "Copying $name to $REMOTEDIR" if [[ -e "$name" ]]; then mount | grep -qs "$REMOTEDIR" if mount | grep -qs "$REMOTEDIR"; then cp "$name" "$REMOTEDIR" fi else echo "$name not found, copy failed." fi echo "Script terminated."