Zachary Kotlarek 13 лет назад
Родитель
Сommit
ebc2b8dc81
1 измененных файлов с 48 добавлено и 0 удалено
  1. 48 0
      discToMkv

+ 48 - 0
discToMkv

@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# Config
+DRIVE_NUM="1"
+OUT_DIR="${HOME}/Desktop/Docs/Downloads"
+APP_PATH="/Applications/Zach/Media/MakeMKV.app"
+
+# Globals
+BIN_PATH="${APP_PATH}/Contents/MacOS/makemkvcon"
+TMP="`mktemp -t discToMkv`"
+
+# Sanity check
+if [ ! -d "${OUT_DIR}" ]; then
+	echo "Invalid output directory: ${OUT_DIR}"
+	exit 1
+fi
+
+# Parse the disc
+"${BIN_PATH}" --noscan --robot "--messages=${TMP}" info "disc:${DRIVE_NUM}"
+
+# Find the disk title -- long if available, short if not
+CINFO="`grep '^CINFO\:' "${TMP}"`"
+LONG="`echo "${CINFO}" | awk -F ',' '$1 == "CINFO:2" && $2 == "0" {print $3}' | sed 's%^"\(.*\)"$%\1%'`"
+SHORT="`echo "${CINFO}" | awk -F ',' '$1 == "CINFO:32" && $2 == "0" {print $3}' | sed 's%^"\(.*\)"$%\1%'`"
+NAME="${LONG}"
+if [ -z "${NAME}" ]; then
+	NAME="${SHORT}"
+fi
+
+# Cleanup the parse data
+rm -f "${TMP}"
+
+# Sanity check
+if [ -z "${NAME}" ]; then
+	echo "Unable to determine disc name" 1>&2
+	exit 1
+fi
+
+# Create the output directory
+if [ ! -d "${OUT_DIR}/${NAME}" ]; then
+	mkdir "${OUT_DIR}/${NAME}"
+fi
+
+# Extract all tracks to MKVs
+# Tracks are selected with the default profile (as set in the GUI)
+# Recommended selection string: -sel:all,+sel:(favlang|nolang),-sel:(core),+sel:special,-sel:mvcvideo,=100:all,-10:favlang
+# This preserves all audio and subtitles in your prefered language, all audio and subtitles with no language, and all special tracks, but excludes the core audio from DTS-HD tracks
+exec "${BIN_PATH}" --noscan --robot mkv "disc:${DRIVE_NUM}" all "${OUT_DIR}/${NAME}"