Das gesamte shiaiVerzeichnis war nicht getrackt
This commit is contained in:
163
shiai/wkOrg/ausschreibungen/checkDownloads.sh
Executable file
163
shiai/wkOrg/ausschreibungen/checkDownloads.sh
Executable file
@@ -0,0 +1,163 @@
|
||||
# Script zu checken, ob Ausschreibungen neu dazugekommen sind oder sich geändert haben
|
||||
|
||||
# Aufbau der Wettkampfdatenbank:
|
||||
# Tabellen
|
||||
# - downloads -> Verwalten der heruntergeladenen Ausschreibungen
|
||||
# - adressen -> Verwalten von Adressen der Wettkampforte
|
||||
# - wk -> Verwalten der Wettkämpfe
|
||||
# Aufbau der einzelnen Tabellen:
|
||||
# - downloads
|
||||
# - id PRIMARY KEY INT -> Die interne ID der Ausschreibung
|
||||
# - dateiname TEXT -> der Dateiname der Auschreibung
|
||||
# - sha512 TEXT -> Hash der Datei
|
||||
# - wkID TEXT -> IDs der zugehörigen Wettkämpfe (kommasepariert, leer soll heißen uninteresannte Ausschreibung)
|
||||
# - wk
|
||||
# - id PRIMARY KEY INT -> Die interne ID des Wettkampfes
|
||||
# - datum TEXT -> Datum des Wettkampfes
|
||||
# - name TEXT -> Name des Wettkampfes
|
||||
# - adrID -> ID des Wettkampfortes in der Adressdatenbank
|
||||
|
||||
|
||||
|
||||
# Über Dateinamenliste iterieren
|
||||
filelist=`ls -1A download/`
|
||||
for file in $filelist
|
||||
do
|
||||
# Hash der Datei merken
|
||||
hash=`rhash --printf=%{sha512} download/"$file"`
|
||||
# sqlQuery zusammenstellen: Alle AusschreibungsIDs suchen, die diese Ausschreibung haben
|
||||
query="SELECT id FROM downloads WHERE dateiName='$file';"
|
||||
ids=`echo $query | sqlite wk.db`
|
||||
echo "Gefundene wkIDs: $ids"
|
||||
if
|
||||
[[ $ids = "" ]]
|
||||
then
|
||||
# Wenn dateiname noch nicht in der Datenbank gefunden wurde, Eintrag neu anlegen
|
||||
# echo "$file noch nicht zugeordnet!"
|
||||
# Wettkampfdaten abfragen
|
||||
# echo `evince download/$file &`
|
||||
mupdf download/$file &
|
||||
echo "Ausschreibung: $file"
|
||||
echo "Datum (bei mehreren Daten per Leertaste getrennt, zum Ignorieren nichts):"
|
||||
read daten
|
||||
# Werden keine Daten eingegeben, dann soll die Ausschreibung ignoriert werden
|
||||
if test -z $daten
|
||||
then
|
||||
query="INSERT INTO downloads(dateiname, sha512, wkID) VALUES('$file', '$hash', -1);"
|
||||
echo $query | sqlite wk.db
|
||||
continue
|
||||
else
|
||||
# Ansonsten wird für jedes Datum ein Wettkampf angelegt
|
||||
wkName = ""
|
||||
plz = ""
|
||||
ak = ""
|
||||
for datum in $daten
|
||||
do
|
||||
echo "$datum:"
|
||||
# Ausgabe anderer WK an diesem Datum
|
||||
query="SELECT id,name FROM wk WHERE datum='$datum';"
|
||||
wks=`echo $query | sqlite wk.db`
|
||||
echo $wks
|
||||
# Eingabe des Wettkampfnamens (bei mehreren Daten kann mit leerem Namen einfach der zuletzt eingegebene Name verwendet werden)
|
||||
echo "Wettkampfname: ($wkName)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "Wettkampfname übernommen: $wkName"
|
||||
else
|
||||
wkName = temp
|
||||
fi
|
||||
# Eingabe der Postleitzahl des Wettkampfortes
|
||||
echo "PLZ: ($plz)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "PLZ übernommen: $plz"
|
||||
else
|
||||
plz = temp
|
||||
fi
|
||||
# Zur Postleitzahl gehörige Adresse finden
|
||||
query="SELECT id FROM adressen WHERE plz='$plz';"
|
||||
adrIDs=`echo $query | sqlite wk.db`
|
||||
if test -z $adrIDs
|
||||
then
|
||||
# @todo: Eingabe der Adresse
|
||||
echo "Keine zugehörige Adresse gefunden!"
|
||||
adrID = 0
|
||||
#else
|
||||
# @todo: Behandlung verschiedener Adressen mit gleicher PLZ ergänzen
|
||||
fi
|
||||
# Eingabe der Altersklassen
|
||||
echo "AK: ($ak)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "Übernommene AK: $ak"
|
||||
else
|
||||
ak = temp
|
||||
fi
|
||||
# Hinzufügen des Wettkampfes zur Datenbank
|
||||
query="INSERT INTO wk(datum, name, ak, adrID) VALUES('$datum','$wkName','$ak','adrID');"
|
||||
`echo $query | sqlite wk.db`
|
||||
# Eintrag in die Ausschreibungsdatenbank; Dazu brauchen wir die wkID
|
||||
query="SELECT id FROM wk WHERE datum='$datum' AND name='$wkName' AND ak='$ak';"
|
||||
wkID=`echo $query | sqlite wk.db`
|
||||
query="INSERT INTO downloads(dateiname, sha512, wk) VALUES('$file', '$hash', '$wkID');"
|
||||
echo $query | sqlite wk.db
|
||||
done # nächstes Datum
|
||||
fi # Ende Hinzufügen eines neuen Wettkampfes
|
||||
# Wenn wir wkIDs für diese Ausschreibung gefunden haben müssen wir testen, ob sich der Hash geändert hat
|
||||
else
|
||||
query="SELECT sha512 FROM downloads WHERE dateiName='$file';"
|
||||
dbhash=`echo $query | sqlite wk.db`
|
||||
if
|
||||
[[ $hash != $dbhash ]]
|
||||
then
|
||||
echo "$file hat sich geändert!"
|
||||
query="SELECT wkID FROM downloads WHERE dateiName='$file';"
|
||||
wkIDs=`echo $query | sqlite wk.db`
|
||||
echo "Betroffene Wettkämpfe: $wkIDs"
|
||||
# todo Bei einer geänderten Ausschreibung die daten des Wettkampfeintrages anpassen
|
||||
for wkID in $wkIDs
|
||||
do
|
||||
query="SELECT name FROM wk WHERE id='$wkID';"
|
||||
wkName=`echo $query | sqlite wk.db`
|
||||
echo "Wettkampfname: ($wkName)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "Wettkampfname übernommen: $wkName"
|
||||
else
|
||||
wkName = temp
|
||||
fi
|
||||
query="SELECT datum FROM wk WHERE id='$wkID';"
|
||||
wkDatum=`echo $query | sqlite wk.db`
|
||||
echo "Datum: ($wkDatum)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "Datum übernommen: $Datum"
|
||||
else
|
||||
wkDatum = temp
|
||||
fi
|
||||
query="SELECT ak FROM wk WHERE id='$wkID';"
|
||||
wkAk=`echo $query | sqlite wk.db`
|
||||
echo "Ak: ($wkAk)"
|
||||
read temp
|
||||
if test -z $temp
|
||||
then
|
||||
echo "Ak übernommen: $wkAk"
|
||||
else
|
||||
wkAk= temp
|
||||
fi
|
||||
query="UPDATE wk SET name='$wkName',datum='$wkDatum',ak='$wkAk' WHERE id=$id;"
|
||||
`echo $query | sqlite wk.db`
|
||||
done
|
||||
query="UPDATE downloads SET sha512='$hash' WHERE id=$id;"
|
||||
`echo $query | sqlite wk.db`
|
||||
# @todo: Update der Ausschreibung zum Upload auslösen
|
||||
else
|
||||
echo "$file unverändert!"
|
||||
fi # ende unveränderte ausschreibung
|
||||
fi # ende existenz ausschreibung
|
||||
done # ende dateilistenschleife
|
||||
Reference in New Issue
Block a user