Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

frankeman90

macrumors newbie
Original poster
Oct 1, 2014
5
0
I have a fully automated download process and using hazel to move movies to Plex.

Having spent 20+ hours to try and find a solution to the last step I am almost giving up.

What I have is lots of IMG and ISO files that are unrared. Theese I unpack with TheUnarchiver to get VIDEO_TS folders.

BUT – how do I automate the process of making MKV:s of theese? I simply want a batch processor/script for MKV but cant find any that seems to work.

Found the script below, but cant understand how to use it with hazel – and cant find a way to install MKV to make it command-line available (the commands on the page result in an error).

https://github.com/hcr/convertingMkvScript

ANY help most appriciated.

(I want all subtitles, all languages etc and preserve filename from folder so that Plex can identify the movie)

!/bin/sh
INPUT_DIR="/Users/AF/Desktop/hotfolder_videodrive"
OUTPUT_DIR="/Users/AF/Desktop/videodrive_klara"
MIN_LENGTH_IN_SECONDS=120

TEMPORARY FOLDERS
TEMP_FOLDER_PATH=""
LOGS_FOLDER_PATH=""

RESULT FOLDERS
SUCCES_FOLDER_PATH=""
FAILED_FOLDER_PATH=""

SCRIPT VARIABLES
NEW_FILE_PATH_WITH_EXT=""

echoStars() {
echo "***********************************************************"
}

echoStripes() {
echo "-----------------------------------------------------------"
}

move() {
local destination=$(dirname "${2}")
mkdir -pv "${destination}"
mv -n$3 -- "${1}" "${2}"
}

createLoggingFolder() {
local name="logs"
local counter=1
local suffix=""
local keep_going=true
while $keep_going; do
if [ -e "${OUTPUT_DIR}/${name}${suffix}" ]; then
suffix="_${counter}"
counter=$((counter + 1))
else
keep_going=false
fi
done

LOGS_FOLDER_PATH="${OUTPUT_DIR}/${name}${suffix}"
mkdir "${LOGS_FOLDER_PATH}"
}

createSuccessFolder() {
SUCCES_FOLDER_PATH="${LOGS_FOLDER_PATH}/success"
mkdir "${SUCCES_FOLDER_PATH}"
}

createFailedFolder() {
FAILED_FOLDER_PATH="${LOGS_FOLDER_PATH}/failure"
mkdir "${FAILED_FOLDER_PATH}"
}

createTempFolder() {
local name="temp"
local counter=1
local keep_going=true
while $keep_going; do
if [ -e "${OUTPUT_DIR}/${name}${counter}" ]; then
counter=$((counter + 1))
else
keep_going=false
fi
done
TEMP_FOLDER_PATH="${OUTPUT_DIR}/${name}
${counter}/"

mkdir "${TEMP_FOLDER_PATH}"
}

deleteTempFolder() {
if [ "$(ls -A $TEMP_FOLDER_PATH)" ]; then
echo "Temporary folder ${TEMP_FOLDER_PATH} is not empty, so not removing it"
else
rmdir "${TEMP_FOLDER_PATH}"
fi
}

echoFoldersToProcess() {
echoStars
echo "Input directory : " $INPUT_DIR
echo "Output directory : " $OUTPUT_DIR
echo "Minimum length in seconds : " $MIN_LENGTH_IN_SECONDS

echo "Directories to be processed :"
find "${INPUT_DIR}"-type d -iname "VIDEO_TS"|while read path_to_be_processed;
do
echo " ${path_to_be_processed}"
done
echoStars
}

tryToMakeMkv() {
eval "makemkvcon -r --minlength=$MIN_LENGTH_IN_SECONDS mkv file:\"${1}\" all \"${TEMP_FOLDER_PATH}\" > \"${LOGS_FOLDER_PATH}/makeMkv.log\""
}

checkIfMkvWasCreated() {
if [ "$(ls -A $TEMP_FOLDER_PATH)" ]; then
echo "Success"
move "${LOGS_FOLDER_PATH}/makeMkv.log" "${SUCCES_FOLDER_PATH}${1}.log"
else
echo "Failure"
move "${LOGS_FOLDER_PATH}/makeMkv.log" "${FAILED_FOLDER_PATH}${1}.log"
fi
}

determineNewFileName() {
local new_file_path="${OUTPUT_DIR}${1}"

local counter=1
local suffix=""
local extension=".mkv"

local keep_going=true
while $keep_going;do
if[-e "${new_file_path}${suffix}${extension}"];then
suffix="_${counter}"
counter=$((counter +1))
else
keep_going=false
fi
done

NEW_FILE_PATH_WITH_EXT="${new_file_path}${suffix}${extension}"
}

renameMkvs() {
if [ "$(ls -A $TEMP_FOLDER_PATH)" ]; then
for file in "${TEMP_FOLDER_PATH}"*
do
determineNewFileName "${1}"
move "${file}" "${NEW_FILE_PATH_WITH_EXT}" v
done
fi
}

echoFinished() {
echoStars

local resultfile="${LOGS_FOLDER_PATH}/result.log"
echoStars >>"${resultfile}"

if["$(ls -A $SUCCES_FOLDER_PATH)"];then
echo "Successfully converted:">>"${resultfile}"
find "${SUCCES_FOLDER_PATH}"-type f -iname "*.log"|while read log;
do
local logfile="${log%.log}"
echo "${logfile#${SUCCES_FOLDER_PATH}/}">>"${resultfile}"
done
echoStars >>"${resultfile}"
fi

if["$(ls -A $FAILED_FOLDER_PATH)"];then
echo "Failure to convert:">>"${resultfile}"
find "${FAILED_FOLDER_PATH}"-type f -iname "*.log"|while read log;
do
local logfile="${log%.log}"
echo "${logfile#${FAILED_FOLDER_PATH}/}">>"${resultfile}"
done
echoStars >>"${resultfile}"
fi

echo "Finished script"
echo "Check ${LOGS_FOLDER_PATH}/result.log for the result"
}

process() {
echoFoldersToProcess

createLoggingFolder
createSuccessFolder
createFailedFolder

echoStars

find "${INPUT_DIR}"-type d -iname "VIDEO_TS"|while read path_to_be_processed;
do
echo "Processing directory: ${path_to_be_processed}"

local without_input_folder=${path_to_be_processed#${INPUT_DIR}}
local media_name=${without_input_folder%/[V,v][I,i][D,d][E,e][O,o]_[T,t][S,s]}

createTempFolder

tryToMakeMkv "${path_to_be_processed}"

checkIfMkvWasCreated "${media_name}"

renameMkvs "${media_name}"

deleteTempFolder

echoStripes
done

echoFinished
}

if [ $# -eq 0 ]; then
echo "Please supply on of these arguments: info, process"
elif [ "$1" = "info" ]; then
echoFoldersToProcess
elif [ "$1" = "process" ]; then
process
else
echo "Invalid argument [${1}]. Please supply on of these arguments: info, process"
fi
 
Highly doubt I will get to see response as this thread will most likely be deleted for piracy discussion but.. The commands on the page fail because you have not installed homebrew first step is to do that. For it you will have had to install Xcode or it will fail to install. Once you have installed the homebrew version of makemkv before commands on page are run then you have chance of the script doing what you want.
 
Highly doubt I will get to see response as this thread will most likely be deleted for piracy discussion but.. The commands on the page fail because you have not installed homebrew first step is to do that. For it you will have had to install Xcode or it will fail to install. Once you have installed the homebrew version of makemkv before commands on page are run then you have chance of the script doing what you want.
[doublepost=1452967423][/doublepost]This is - believe it or not - not for pirated media.

I have installed homebrew, and did an install of The app that way. Dont know about xcode though. Is that needed also and where do i get it?
 
App store but it had to be installed already or homebrew would have told you it is needed for its compiling of the packages it does when it installs them.
 
search iso to mkv in google or app store, or reviews article in google.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.