Quantcast
Channel: macOS/OS X (Mac) — Plex Forums
Viewing all articles
Browse latest Browse all 6828

Fully automated download and conversion - need help with last step

$
0
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


Viewing all articles
Browse latest Browse all 6828

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>