diff --git a/tools/db/import-md5-list b/tools/db/import-md5-list new file mode 100755 index 0000000..0875792 --- /dev/null +++ b/tools/db/import-md5-list @@ -0,0 +1,173 @@ +#!/bin/bash +# @author 6543 +# @version 0.1 +# @date 2019-02-07 + +## Options/Parameter +# $1: +# -a | add files of md5-file to db +# -r | remove files of md5-file from db +# -d | mark files from md5-file ad deleted +# -ee | export md5 of existing files +# -ed | export md5 of deleted fiels +# +# $2: +# [$3]: + +{ #set enviroemnt + readonly TRUE=1 #like + readonly FALSE=0 #like + readonly TTSYNC_EXIST=0 + readonly TTSYNC_BACKUP=1 + readonly TTSYNC_REMOTE=2 + readonly TTSYNC_DEL=3 + readonly globalconf="/etc/tt/global" +} + +{ #get options & args + readonly mode=$(echo $1 | tr -d '-') + readonly md5="$2" + moviedir="$3" +} + +{ #db + dbname="tt_test" + dbhost="localhost" + dbuser="root" + dbpwd="" +} + +function help() { + #help menue + echo "$0 is part of the TerabyteTerminator Project" + echo "" + echo "import-md5-list [moviedir]" + echo " modes:" + echo " -a add files of md5-file to db" + echo " -r remove files of md5-file from db" + echo " -d mark files from md5-file ad deleted" + echo " -ee export md5 of existing files" + echo " -ed export md5 of deleted fiels" + echo "" + echo " moviedir: Is optional if it is already in the global config" + + exit 0 +} +if [ "$mode" == "help" ] && help + +##check & prepair args +[ ${mode:0:1} == "e" ] && touch "$md5" +[ -f "$md5" ] || { echo "md5 \"$md5\" do not exist"; exit 1; } # check md5 +[ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist) + if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf) + echo 'neither "movie folder" is set in global config nor given as argument' + exit 2 + else # and (moviedir is in globalconf) + moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)" + fi +} +[ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir +moviedir=""$(echo $moviedir | sed 's|/$||g')"" +[ -z "$moviedir" ] && exit 255 #catch case moviedir="/" + +## functions +function md5_in_add() { + cat $md5 | while read line; do #for each line in md5 + local md5=$(echo $line | cut -c -32) + local path=$(echo $line | cut -c 33- | sed 's/^\ //g') + local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev) + local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) + local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) + db_query "INSERT INTO File (MD5, Folder, Name, TTSync) VALUES ('$md5', '$folder', '$name', $TTSYNC_EXIST );" #-> handle in future: ";'()" + done + + exit 0 +} + +function md5_rm() { + cat $md5 | while read line; do #for each line in md5 + local md5=$(echo $line | cut -c -32) + local path=$(echo $line | cut -c 33- | sed 's/^\ //g') + local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev) + local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) + local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) + db_query "DELETE FROM File WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" #-> handle in future: ";'()" + done + + exit 0 +} + +function md5_in_del() { + cat $md5 | while read line; do #for each line in md5 + local md5=$(echo $line | cut -c -32) + local path=$(echo $line | cut -c 33- | sed 's/^\ //g') + local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev) + local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) + local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) + db_query "UPDATE File SET TTSync=$TTSYNC_DEL WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" #-> handle in future: ";'()" + done + + exit 0 +} + +function md5_out_exist() { + db_query "SELECT CONCAT(MD5, ' ', ' ' ,'$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" >> $md5 + exit 0 +} + +function md5_out_del() { + db_query "SELECT CONCAT(MD5, ' ', ' ' ,'$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_DEL;" >> $md5 + exit 0 +} + +# help functions + +# db_query -> result +function db_query() { + local args="-sN" #no headers, no grid + args+=" -h$dbhost" + args+=" -u$dbuser" + [ -n "$dbpwd" ] && args+=" -p$dbpwd" + args+=" $dbname" + echo $@ | mysql $args +} + +# db_exist_md5 -> true/false 0/1 +function db_exist_md5() { + result=($(db_query "SELECT COUNT(md5) FROM File WHERE File.MD5 LIKE '$1';")) + if [ "${result[2]}" -gt "0" ]; then + echo true + return $TRUE + else + echo false + return $FALSE + fi +} + +# db_F-ID_getPath -> +function db_id_getPath() { + db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;" +} + +case "$mode" in + "a") #in_add + md5_in_add + ;; + "r") #rm + md5_rm + ;; + "d") + md5_in_del + ;; + "ee" | "e" ) + md5_out_exist + ;; + "ed" ) + md5_out_exist + ;; + *) + echo "wrong arguments" + echo "" + help + ;; +esac