From 842e685c59d1395e462967fca4ae8dd2e0df2369 Mon Sep 17 00:00:00 2001 From: Alexander Polynomdivision Date: Mon, 22 Oct 2018 18:39:24 +0200 Subject: [PATCH] scripts: Add level descriptions and names --- .gitignore | 6 +++- data/levels.csv | 17 ++++++++++ data/levels.ods | Bin 0 -> 14957 bytes scripts/csv_level_to_db.py | 68 +++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 data/levels.csv create mode 100644 data/levels.ods create mode 100644 scripts/csv_level_to_db.py 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 0000000000000000000000000000000000000000..500c213c29946d940504ea77c5cbe8eebc91efbb GIT binary patch literal 14957 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 ZAN;hOBqY@D@1eZE4Bws3HQVpj{{d#?Pu&0j literal 0 HcmV?d00001 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])