diff --git a/check_framemd5.sh b/check_framemd5.sh new file mode 100644 index 0000000..06f4008 --- /dev/null +++ b/check_framemd5.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + SCRIPT=$(basename $0) + VERSION='2016-07-10' + AUTHOR='ffmprovisr' + RED='\033[1;31m' + BLUE='\033[1;34m' + NC='\033[0m' + +output_prompt() { + cat < ] +END_OF_MSG +} + +output_version() { + cat < + Pass to the script the audio-visual file and the corresponding MD5 + file to check. +Dependency: + ffmpeg +END_OF_MSG +} + +if [ ! $(which diff) ] ; then + echo -e "${RED}ERROR:${NC} diff is not installed by default. Please install diffutils from Cygwin." + exit 1 +fi + +if [ "$#" -eq 0 ]; then + output_prompt + exit 0 +elif [ "$#" -eq 1 ]; then + if [ "$1" == '-h' ]; then + output_help + exit 0 + elif [ "$1" == '-v' ]; then + output_version + exit 0 + else + echo -e "${RED}ERROR:${NC} '$1' is an invalid argument." + output_prompt + exit 1 + fi +elif [ "$#" -eq 2 ]; then + if ! [ -f "$1" ]; then + echo -e "${RED}ERROR:${NC} There is no file '$(basename $1)'." + output_prompt + exit 1 + elif ! [ -f "$2" ]; then + echo -e "${RED}ERROR:${NC} There is no file '$(basename $2)'." + output_prompt + exit 1 + else + if [[ $OSTYPE == "cygwin" ]]; then + md5_tmp=""$USERPROFILE/$(basename $2).tmp"" + else + md5_tmp="$HOME/$(basename $2).tmp" + fi + $(ffmpeg -y -i $1 -loglevel 0 -f framemd5 -an $md5_tmp) + old_file=$(grep -v '^#' $2) + tmp_file=$(grep -v '^#' $md5_tmp) + if [ "$old_file" = "$tmp_file" ]; then + echo -e "${BLUE}OK${NC} '$(basename $1)' matches '$(basename $2)'." + else + echo -e "${RED}ERROR:${NC} The following differences were detected between '$(basename $1)' and '$(basename $2)':" + diff "$2" "$md5_tmp" + fi + rm "$md5_tmp" + fi +else + echo -e "${RED}ERROR:${NC} Too many arguments." + output_prompt + exit 1 +fi