ADD TOOL 'db/import-md5-list'
This commit is contained in:
commit
e282ebc0fc
173
tools/db/import-md5-list
Executable file
173
tools/db/import-md5-list
Executable file
@ -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: <paht of md5-file>
|
||||
# [$3]: <path to movie folder>
|
||||
|
||||
{ #set enviroemnt
|
||||
readonly TRUE=1 #like <stdbool.h>
|
||||
readonly FALSE=0 #like <stdbool.h>
|
||||
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 <mode> <md5-file> [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 <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 <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 <F-ID> -> <Path>
|
||||
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
|
Loading…
Reference in New Issue
Block a user