beautysh tools/db/update-file-state
This commit is contained in:
parent
a6abdc45ea
commit
eb0354cf87
@ -7,47 +7,47 @@
|
|||||||
# [$1]: <path to movie folder>
|
# [$1]: <path to movie folder>
|
||||||
|
|
||||||
{ #set enviroemnt
|
{ #set enviroemnt
|
||||||
readonly TRUE=1 #like <stdbool.h>
|
readonly TRUE=1 #like <stdbool.h>
|
||||||
readonly FALSE=0 #like <stdbool.h>
|
readonly FALSE=0 #like <stdbool.h>
|
||||||
readonly TTSYNC_EXIST=0 #file exist local
|
readonly TTSYNC_EXIST=0 #file exist local
|
||||||
readonly TTSYNC_BACKUP=1 #file exist local - backup exist
|
readonly TTSYNC_BACKUP=1 #file exist local - backup exist
|
||||||
readonly TTSYNC_REMOTE=2 #file exists remote - not used jet
|
readonly TTSYNC_REMOTE=2 #file exists remote - not used jet
|
||||||
readonly TTSYNC_DEL=3 #local file deleted
|
readonly TTSYNC_DEL=3 #local file deleted
|
||||||
readonly globalconf="/etc/tt/global"
|
readonly globalconf="/etc/tt/global"
|
||||||
}
|
}
|
||||||
|
|
||||||
{ #get options & args
|
{ #get options & args
|
||||||
readonly mode=$(echo $1 | tr -d '-')
|
readonly mode=$(echo $1 | tr -d '-')
|
||||||
moviedir="$1"
|
moviedir="$1"
|
||||||
[ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist)
|
[ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist)
|
||||||
if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf)
|
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'
|
echo 'neither "movie folder" is set in global config nor given as argument'
|
||||||
exit 2
|
exit 2
|
||||||
else # and (moviedir is in globalconf)
|
else # and (moviedir is in globalconf)
|
||||||
moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)"
|
moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
[ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir
|
[ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir
|
||||||
moviedir=""$(echo $moviedir | sed 's|/$||g')""
|
moviedir=""$(echo $moviedir | sed 's|/$||g')""
|
||||||
[ -z "$moviedir" ] && exit 255 #catch case moviedir="/"
|
[ -z "$moviedir" ] && exit 255 #catch case moviedir="/"
|
||||||
readonly DATE=$(date '+%Y-%m-%d')
|
readonly DATE=$(date '+%Y-%m-%d')
|
||||||
}
|
}
|
||||||
|
|
||||||
{ #db
|
{ #db
|
||||||
dbname="tt_test"
|
dbname="tt_test"
|
||||||
dbhost="localhost"
|
dbhost="localhost"
|
||||||
dbuser="root"
|
dbuser="root"
|
||||||
dbpwd=""
|
dbpwd=""
|
||||||
}
|
}
|
||||||
|
|
||||||
function help() {
|
function help() {
|
||||||
#help menue
|
#help menue
|
||||||
echo "$0 is part of the TerabyteTerminator Project"
|
echo "$0 is part of the TerabyteTerminator Project"
|
||||||
echo ""
|
echo ""
|
||||||
echo "update-file-state [moviedir]"
|
echo "update-file-state [moviedir]"
|
||||||
echo " moviedir: Is optional if it is already in the global config"
|
echo " moviedir: Is optional if it is already in the global config"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
[ "$mode" == "help" ] && help
|
[ "$mode" == "help" ] && help
|
||||||
|
|
||||||
@ -55,67 +55,67 @@ function help() {
|
|||||||
## Programm Haupt Ablauf ##
|
## Programm Haupt Ablauf ##
|
||||||
###########################
|
###########################
|
||||||
function main() {
|
function main() {
|
||||||
#cd to moviedir
|
#cd to moviedir
|
||||||
cd "$moviedir"
|
cd "$moviedir"
|
||||||
|
|
||||||
#clean DB from old stuff
|
#clean DB from old stuff
|
||||||
{
|
{
|
||||||
db_query "DELETE From File WHERE Size=0 OR MD5="" OR MD5 IS NULL;"
|
db_query "DELETE From File WHERE Size=0 OR MD5="" OR MD5 IS NULL;"
|
||||||
}
|
}
|
||||||
|
|
||||||
#erselle zwei dateilisten
|
#erselle zwei dateilisten
|
||||||
list_tmp=$(mktemp -d)
|
list_tmp=$(mktemp -d)
|
||||||
db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" > "$list_tmp/indb"
|
db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" > "$list_tmp/indb"
|
||||||
find "$moviedir" -type f > "$list_tmp/exist"
|
find "$moviedir" -type f > "$list_tmp/exist"
|
||||||
|
|
||||||
#find new files
|
#find new files
|
||||||
grep -vf "$list_tmp/indb" "$list_tmp/exist" > "$list_tmp/new"
|
grep -vf "$list_tmp/indb" "$list_tmp/exist" > "$list_tmp/new"
|
||||||
|
|
||||||
#all IDs wich an old check date:
|
#all IDs wich an old check date:
|
||||||
db_query "SELECT ID FROM File Where TTCheck < '$DATE' OR TTCheck IS NULL;" | while read line; do
|
db_query "SELECT ID FROM File Where TTCheck < '$DATE' OR TTCheck IS NULL;" | while read line; do
|
||||||
#for each ID with an old check date ...
|
#for each ID with an old check date ...
|
||||||
ID=$line
|
ID=$line
|
||||||
TTSync=$(db_query "SELECT TTSync FROM File WHERE ID=$ID;")
|
TTSync=$(db_query "SELECT TTSync FROM File WHERE ID=$ID;")
|
||||||
FILE=$(db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$ID;")
|
FILE=$(db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$ID;")
|
||||||
if [ -f "$FILE"]; then
|
if [ -f "$FILE"]; then
|
||||||
SIZE=$(db_query "SELECT Size FROM File WHERE ID=$ID;")
|
SIZE=$(db_query "SELECT Size FROM File WHERE ID=$ID;")
|
||||||
SIZE_new="$(file_size "$FILE")"
|
SIZE_new="$(file_size "$FILE")"
|
||||||
[ "$SIZE" != "$SIZE_new" ] && {
|
[ "$SIZE" != "$SIZE_new" ] && {
|
||||||
echo "FILE CHANGE: $FILE"
|
echo "FILE CHANGE: $FILE"
|
||||||
if [ "0" == "$SIZE_new" ]; then
|
if [ "0" == "$SIZE_new" ]; then
|
||||||
#file exist but empty
|
#file exist but empty
|
||||||
#rm "$FILE" <- secure? 2check
|
#rm "$FILE" <- secure? 2check
|
||||||
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
||||||
else
|
else
|
||||||
#recalc md5 ... + check
|
#recalc md5 ... + check
|
||||||
#update DB
|
#update DB
|
||||||
MD5_new=$(md5sum "$FILE" | cut -c -32)
|
MD5_new=$(md5sum "$FILE" | cut -c -32)
|
||||||
MD5=$(db_query "SELECT MD5 FROM File WHERE ID=$ID;")
|
MD5=$(db_query "SELECT MD5 FROM File WHERE ID=$ID;")
|
||||||
|
|
||||||
if [ "$MD5" == "$MD5_new" ]; then
|
if [ "$MD5" == "$MD5_new" ]; then
|
||||||
db_query "UPDATE File SET Size=$SIZE_new,TTCheck=$DATE WHERE ID=$ID;"
|
db_query "UPDATE File SET Size=$SIZE_new,TTCheck=$DATE WHERE ID=$ID;"
|
||||||
else
|
else
|
||||||
#new file/file changed!
|
#new file/file changed!
|
||||||
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
||||||
file_add "$(db_query "SELECT CONCAT(Folder, '/', Name) FROM File WHERE ID=$ID;")"
|
file_add "$(db_query "SELECT CONCAT(Folder, '/', Name) FROM File WHERE ID=$ID;")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
# file dont exist
|
# file dont exist
|
||||||
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
#add new files ....
|
#add new files ....
|
||||||
cat "$list_tmp/new" | while read line; do
|
cat "$list_tmp/new" | while read line; do
|
||||||
file_add "$line"
|
file_add "$line"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
rm -r "$list_tmp/"
|
rm -r "$list_tmp/"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,12 +125,12 @@ done
|
|||||||
|
|
||||||
##check & prepair args
|
##check & prepair args
|
||||||
[ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist)
|
[ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist)
|
||||||
if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf)
|
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'
|
echo 'neither "movie folder" is set in global config nor given as argument'
|
||||||
exit 2
|
exit 2
|
||||||
else # and (moviedir is in globalconf)
|
else # and (moviedir is in globalconf)
|
||||||
moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)"
|
moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
[ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir
|
[ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir
|
||||||
moviedir=""$(echo $moviedir | sed 's|/$||g')""
|
moviedir=""$(echo $moviedir | sed 's|/$||g')""
|
||||||
@ -139,47 +139,47 @@ moviedir=""$(echo $moviedir | sed 's|/$||g')""
|
|||||||
|
|
||||||
# file_size <path> -> (du -b)/1024 [Kb]
|
# file_size <path> -> (du -b)/1024 [Kb]
|
||||||
function file_size() {
|
function file_size() {
|
||||||
if [ -f "$1" ]; then
|
if [ -f "$1" ]; then
|
||||||
echo $(($(du -b "$1" | cut -f 1)/1024))
|
echo $(($(du -b "$1" | cut -f 1)/1024))
|
||||||
else
|
else
|
||||||
echo 0
|
echo 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function file_add() {
|
function file_add() {
|
||||||
echo 2DO
|
echo 2DO
|
||||||
local relrevpath="$(echo $1 | sed 's|^/||g' | sed 's|/$||g' | rev | sed "s/'/''/g")" #last statement set ' as '' so it wont have an evect in the sql statement
|
local relrevpath="$(echo $1 | sed 's|^/||g' | sed 's|/$||g' | rev | sed "s/'/''/g")" #last statement set ' as '' so it wont have an evect in the sql statement
|
||||||
local name="$(echo $relrevpath | cut -d '/' -f 1 | rev)"
|
local name="$(echo $relrevpath | cut -d '/' -f 1 | rev)"
|
||||||
local folder="$(echo $relrevpath | cut -d '/' -f 2- | rev)"
|
local folder="$(echo $relrevpath | cut -d '/' -f 2- | rev)"
|
||||||
local FILE="$moviedir/$(echo $relrevpath | rev)"
|
local FILE="$moviedir/$(echo $relrevpath | rev)"
|
||||||
[ -f "$FILE" ] || return 1 #errer file not exist
|
[ -f "$FILE" ] || return 1 #errer file not exist
|
||||||
local MD5_new=$(md5sum "$FILE" | cut -c -32)
|
local MD5_new=$(md5sum "$FILE" | cut -c -32)
|
||||||
local SIZE_new="$(file_size "$FILE")"
|
local SIZE_new="$(file_size "$FILE")"
|
||||||
|
|
||||||
#db path exist && md5 same -> update this entry
|
#db path exist && md5 same -> update this entry
|
||||||
#db path exist && ttsync=exist/backup && md5 !same -> ttsync=del + new db entry
|
#db path exist && ttsync=exist/backup && md5 !same -> ttsync=del + new db entry
|
||||||
#or new db entry
|
#or new db entry
|
||||||
|
|
||||||
#db entry is{
|
#db entry is{
|
||||||
# chek if size ->md5 exist -> update path&name (MV)
|
# chek if size ->md5 exist -> update path&name (MV)
|
||||||
# else complete new entry
|
# else complete new entry
|
||||||
#}
|
#}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# db_query <query> -> result
|
# db_query <query> -> result
|
||||||
function db_query() {
|
function db_query() {
|
||||||
local args="-sN" #no headers, no grid
|
local args="-sN" #no headers, no grid
|
||||||
args+=" -h$dbhost"
|
args+=" -h$dbhost"
|
||||||
args+=" -u$dbuser"
|
args+=" -u$dbuser"
|
||||||
[ -n "$dbpwd" ] && args+=" -p$dbpwd"
|
[ -n "$dbpwd" ] && args+=" -p$dbpwd"
|
||||||
args+=" $dbname"
|
args+=" $dbname"
|
||||||
echo $@ | mysql $args
|
echo $@ | mysql $args
|
||||||
}
|
}
|
||||||
|
|
||||||
# db_F-ID_getPath <F-ID> -> <Path>
|
# db_F-ID_getPath <F-ID> -> <Path>
|
||||||
function db_id_getPath() {
|
function db_id_getPath() {
|
||||||
db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;"
|
db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user