diff --git a/.gitignore b/.gitignore index be38e93..7dbda25 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,8 @@ server/*.pem server/db/ # Script ignores -scripts/bee-movie.txt \ No newline at end of file +scripts/bee-movie.txt + +# Data ignores +# This is important! +data/tests/ \ No newline at end of file diff --git a/data/levels.csv b/data/levels.csv new file mode 100644 index 0000000..0cc634d --- /dev/null +++ b/data/levels.csv @@ -0,0 +1,17 @@ +,,,, +Level,Beschreibung,,, +1,Carpe diem!,,,Dieses Zitat von Horaz heißt "Nutze den Tag!". +2,Alea iacta est.,,,|Caesar sagte dieses berühmte Zitat, nachdem er den Rubikon übertreten hatte und mit seinen Truppen ins römische Kernland einmarschierte (diese durften das nicht betreten). Auf Deutsch heißt es " Die Würfel sind gefallen."| +3,Homo homini Lupus est.,,,|Mit dem Zitat " Der Mensch ist dem Menschen ein Wolf" deutet der Verfasser Titus an, dass Menschen sich besonders auch vor anderen Menschen in Acht nehmen sollten, da diese so grausam wie Wölfe sein können.| +4,In vino veritas.,,,|"Im Wein liegt die Wahrheit." Dieses ins Lateinische übersetzte Sprichwort drückt aus, dass man bei höherem Alkoholkonsum ehrlicher wird.| +5,Pecunia non olet.,,,|"Geld stinkt nicht." Dieses Zitat ist von Kaiser Vespasian. Nachdem dieser auf die öffentlichen Toiletten Steuern erhoben hatte, fragte ihn sein Sohn wie er dies rechtfertigen würde. Daraufhin hielt er ihm einen Geldbeutel unter die Nase und sprach das bekannte Zitat.| +6,|Veni, vidi, vici.|,,,|"Ich kam, sah und siegte." Nachdem Caesar ein gegnerisches Heer in kürzester Zeit besiegt hatte, soll er sogar ein Schild mit diesen drei Wortem bei seinem Siegeszug mi sich geführt haben.| +7,Exspecto patronum!,,,"Ich erwarte den Schutzgeist!" Dies ist ein Zauber aus der Welt von Harry Potter. Mit ihm kann man seinen Schutzgeist (Patronus) beschwören. +8,Draco dormiens nunquam titillandus!,,,"Kitzle niemals einen schlafenden Drachen!" Dies ist das pragmatische Motto von der Hogwarts-Schule für Zauberei und Hexerei. +9,Cogito ergo sum.,,,|"Ich denke, also bin ich."Entgegen des allgemeinen Glaubens stammt dieses Zitat aus dem 17. Jahrhundert und von dem Philosophen Descartes.| +10,Errare humanum est.,,,"Irren ist menschlich." Dieses Zitat stammt von Hieronymus und zeigt eines der menschlichsten Dinge auf. +11,In dubio pro reo,,,|"Im Zweifel für den Angeklagten." Dieses Zitat findet auch in der heutigen Juristik Anklang. Reichen die Beweise nicht zu einer Verurteilung aus, wird meist für den Angeklagten entschieden.| +12,Quod erat demonstrandum,,,|"Was zu beweisen war ." Dies wird unter viele Herleitungen geschrieben, sobald man sie beendet hat.| +13,Duobus certantibus tertius gaudet.,,,|"Wenn zwei sich streiten, freut sich der Dritte." Dies ist das lateinische Äquivalent zu dem deutschen Sprichwort.| +14,Romani ite domum!,,,|"Römer, geht nach Hause!" Dies ist ein bekanntes Zitat aus dem Film "Das Leben des Brian".| +15,Manus manum lavat.,,,|"Eine Hand wäscht die andere." Mit diesem Zitat drückt Seneca aus, dass man für eine Leistung immer auch eine Gegenleistung erbringen muss.| diff --git a/data/levels.ods b/data/levels.ods new file mode 100644 index 0000000..500c213 Binary files /dev/null and b/data/levels.ods differ diff --git a/scripts/csv_level_to_db.py b/scripts/csv_level_to_db.py new file mode 100644 index 0000000..965959a --- /dev/null +++ b/scripts/csv_level_to_db.py @@ -0,0 +1,68 @@ +import csv +import sys +import os +import pymongo + +def log(msg, err=False, tabs=0): + if (not err): + print("[*] " + "\t" * tabs + msg) + else: + print("[X] " + "\t" * tabs + msg) + +def dbg(msg, tabs=0): + print("[D] " + "\t" * tabs + msg) + +def csv_to_level(filename): + skip = 0 + path = os.path.join("../data/", filename) + dbg("Reading from {0} ({1})".format(filename, path), tabs=2) + queries = [] + with open(path, newline="") as csvfile: + reader = csv.reader(csvfile, delimiter=",", quotechar="|") + for raw in reader: + skip += 1 + # Skip the header lines + # if (skip < num_lines_to_skip + 1): + if (skip < 3): + continue + + # Remove any whitespaces in front of or after the string + row = [col.strip() for col in raw] + + queries += (({ + "level": int(row[0]) + }, { + "$set": { + "name": row[1], + "description": row[4] + } + }),) + + return queries + +log("Lateinicus CSV to level DB Model") +if len(sys.argv) < 3 and os.getenv("DEBUG") == None: + log("Not enough arguments!", err=True) + log("Usage: csv_vocab_to_mongo.py ", err=True) + sys.exit(1) + +log("Creating queries") +queries = csv_to_level("levels.csv") +if os.getenv("DEBUG") != None: + log("{} entries generated".format(len(queries))) + log("Query: {}".format(queries[0][0])) + log("Update: {}".format(queries[0][1])) + sys.exit() + +# Connect to the database +log("Updating levels") +log("Connecting...", tabs=1) +client = pymongo.MongoClient(sys.argv[1]) +log("Getting DB...", tabs=1) +db = client[sys.argv[2]] + +index = 1 +for query in queries: + log("Updating [{0}/{1}]...".format(index, len(queries)), tabs=1) + index += 1 + res = db["levels"].update_one(query[0], query[1])