generate special wb at startup
This commit is contained in:
@@ -6,7 +6,7 @@ on:
|
||||
image_tag:
|
||||
description: '2. Tag für das Docker-Image (außer latest) (z.B. v1.0.0)'
|
||||
required: true
|
||||
default: '0.6.0'
|
||||
default: '0.7.0'
|
||||
|
||||
env:
|
||||
image_name: mysteryhelfer
|
||||
|
||||
@@ -4,7 +4,7 @@ import streamlit as st
|
||||
import base64
|
||||
import tools
|
||||
import matplotlib.pyplot as plt
|
||||
from helper import show_map_folium
|
||||
import helper
|
||||
|
||||
standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bitte die Funktion mit leerem'
|
||||
' Eingabefeld aufrufen.')
|
||||
@@ -224,6 +224,7 @@ if 'input_text' not in st.session_state:
|
||||
st.session_state.input_text = ""
|
||||
if 'output_text' not in st.session_state:
|
||||
st.session_state.output_text = standard_output
|
||||
st.session_state.output_text += helper.generate_special_files()
|
||||
if 'map_data' not in st.session_state:
|
||||
st.session_state.map_data = None
|
||||
if 'graph_data' not in st.session_state:
|
||||
@@ -361,7 +362,7 @@ st.markdown(st.session_state.output_text)
|
||||
# Karte anzeigen, falls aktiviert
|
||||
if st.session_state.map_data is not None:
|
||||
st.subheader("Kartenansicht")
|
||||
show_map_folium(st.session_state.map_data)
|
||||
helper.show_map_folium(st.session_state.map_data)
|
||||
|
||||
|
||||
if st.session_state.graph_data is not None:
|
||||
|
||||
@@ -5,6 +5,7 @@ from re import match # für unkennify
|
||||
import streamlit as st
|
||||
from streamlit_folium import st_folium
|
||||
import folium
|
||||
import os
|
||||
|
||||
|
||||
# ***recursive quersummenfunktion***
|
||||
@@ -175,6 +176,20 @@ def unkennify(text):
|
||||
decoded = decoded + text[i:]
|
||||
return decoded
|
||||
|
||||
def generate_special_files():
|
||||
out="\n\n\n"
|
||||
if os.path.exists("./data/morse-de.dic"):
|
||||
pass
|
||||
else:
|
||||
remorse_generate_morsede()
|
||||
out+=":blue[deutsches Re-Morse-Wörterbuch wurde generiert] \n"
|
||||
if os.path.exists("./data/t9-de.dic"):
|
||||
pass
|
||||
else:
|
||||
t9_generate_t9de()
|
||||
out+=":blue[deutsches T9-Wörterbuch wurde generiert] \n"
|
||||
return out
|
||||
|
||||
def remorse_generate_morsede():
|
||||
alphabet = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
|
||||
'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
|
||||
@@ -225,62 +240,6 @@ def t9_generate_t9de():
|
||||
file.close()
|
||||
ofile.close()
|
||||
|
||||
def remorse_germandic(eingabetext):
|
||||
alphabet = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
|
||||
'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
|
||||
'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-',
|
||||
'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----',
|
||||
'2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
|
||||
'8': '---..', '9': '----.', '0': '-----', 'Ñ': '--.--', 'É': '..-..', 'È': '.-..-',
|
||||
'À': '.--.-', 'Ü': '..--', 'Ö': '---.', 'Ä': '.-.-', '_': '..--.-', '@': '.--.-.',
|
||||
'?': '..--..', '=': '-...-', ';': '-.-.-.', ':': '---...', '/': '-..-.',
|
||||
'.': '.-.-.-', '-': '-....-', ',': '--..--', '+': '.-.-.', ')': '-.--.-',
|
||||
'(': '-.--.', "'": '.----.', 'SS': '...--..'}
|
||||
ualphabet = {v: k for k, v in alphabet.items()}
|
||||
ualphabet["...--.."] = "ß"
|
||||
eingabetext = eingabetext.rstrip()
|
||||
wbfile = open("./data/german.dic", "r", encoding="iso-8859-15")
|
||||
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
|
||||
if eingabetext in ualphabet:
|
||||
ausgabetext += ualphabet[eingabetext] + " \n"
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mzeile = ""
|
||||
try:
|
||||
for char in zeile:
|
||||
mzeile += alphabet[char.upper()]
|
||||
except KeyError:
|
||||
continue
|
||||
if eingabetext == mzeile:
|
||||
ausgabetext += zeile + " \n"
|
||||
wbfile.close()
|
||||
return ausgabetext
|
||||
|
||||
def t9_germandic(eingabetext):
|
||||
alphabet = {'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4',
|
||||
'H': '4', 'I': '4', 'J': '5', 'K': '5', 'L': '5', 'M': '6', 'N': '6',
|
||||
'O': '6', 'P': '7', 'Q': '7', 'R': '7', 'S': '7', 'T': '8', 'U': '8',
|
||||
'V': '8', 'W': '9', 'X': '9', 'Y': '9', 'Z': '9', '1': '1', '2': '2',
|
||||
'3': '3', '4': '4', '5': '5', '6': '6', '7': '7', '8': '8', '9': '9',
|
||||
'0': '0', 'Ñ': '6', 'É': '3', 'È': '3', 'À': '2', 'Ü': '8', 'Ö': '6',
|
||||
'Ä': '2', '@': '1', '?': '1', '=': '0', ':': '1', '/': '1', '.': '1',
|
||||
'-': '1', ',': '1', '+': '0', ')': '1', '(': '1', 'SS': '7'}
|
||||
eingabetext = eingabetext.rstrip()
|
||||
wbfile = open("./data/german.dic", "r", encoding="iso-8859-15")
|
||||
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mzeile = ""
|
||||
try:
|
||||
for char in zeile:
|
||||
mzeile += alphabet[char.upper()]
|
||||
except KeyError:
|
||||
continue
|
||||
if eingabetext == mzeile:
|
||||
ausgabetext += zeile + " \n"
|
||||
wbfile.close()
|
||||
return ausgabetext
|
||||
|
||||
def rail_encrypt(plain_text: str, rails: int):
|
||||
arr = [["" for _ in range(len(plain_text))] for _ in range(rails)]
|
||||
r = 0
|
||||
|
||||
@@ -299,13 +299,9 @@ wortsuche_en = ("### Wortsuche mit Wörterbuch EN\n"
|
||||
remorse_de = ("### RE-Morse DE\n"
|
||||
"Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort "
|
||||
"getrennt wird, aber ansonsten einfach mal die Leerzeichen weggelassen werden. Bei genau solchen "
|
||||
"fiesen Gemeinheiten hilft diese Funktion. Diese Funktion benutzt die deutsche Wörterbuchdatei vom "
|
||||
"Project https://sourceforge.net/projects/germandict \n"
|
||||
"Da eine Abfrage relativ lange dauert gibt es die Möglichkeit ein ca. 100 MB großes remorse-de.dic "
|
||||
"generieren zu lassen, welches ab der nächsten Abfrage dann genutzt wird und wodurch dann nur noch "
|
||||
"ca. 20% der Zeit pro Abfrage benötigt wird. Um die Erstellung zu starten muß das Wort GENERATE "
|
||||
"(Großschreibung beachten!) ins Eingabefeld eingetragen werden und der Funktionsknopf betätigt "
|
||||
"werden.")
|
||||
"fiesen Gemeinheiten hilft diese Funktion. Für diese Funktion wurde basierend auf der deutschen "
|
||||
"Wörterbuchdatei vom Project https://sourceforge.net/projects/germandict eine "
|
||||
"spezielle Wörterbuchdatei generiert, um eine beschleunigte Abfrage zu ermöglichen.")
|
||||
|
||||
remorse_en = ("### RE-Morse EN\n"
|
||||
"Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort "
|
||||
@@ -320,11 +316,9 @@ t9_de = ("### T9-DE\n"
|
||||
"enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt "
|
||||
"diese aus. \n"
|
||||
"Bsp. 56673462836 liefert das Wort Koordinaten \n"
|
||||
"Da eine Abfrage relativ lange dauert gibt es die Möglichkeit ein spezielles t9-Wörterbuch "
|
||||
"generieren zu lassen, welches ab der nächsten Abfrage dann genutzt wird und wodurch dann nur noch ca. "
|
||||
"15% der Zeit pro Abfrage benötigt wird. Um die Erstellung des t9-de.dic zu starten muß das Wort "
|
||||
"GENERATE (Großschreibung beachten!) ins Eingabefeld eingetragen werden und der Funktionsknopf "
|
||||
"betätigt werden.")
|
||||
"Für diese Funktion wurde basierend auf der deutschen Wörterbuchdatei vom Project "
|
||||
"https://sourceforge.net/projects/germandict eine spezielle Wörterbuchdatei generiert, um eine beschleunigte "
|
||||
"Abfrage zu ermöglichen.")
|
||||
|
||||
t9_en = ("### T9-EN\n"
|
||||
"Mit Hilfe der englischen Wörterliste en_US-large.txt vom Project "
|
||||
|
||||
74
app/tools.py
74
app/tools.py
@@ -1461,34 +1461,19 @@ def remorse_de(eingabetext):
|
||||
if eingabetext == "":
|
||||
return hilfetexte.remorse_de
|
||||
else:
|
||||
try:
|
||||
wbfile = open("./data/morse-de.dic", "r",
|
||||
encoding="iso-8859-15") # german.dic von https://sourceforge.net/projects/germandict/
|
||||
except FileNotFoundError:
|
||||
try:
|
||||
testfile = open("./data/german.dic", "r")
|
||||
testfile.close()
|
||||
if eingabetext == "GENERATE":
|
||||
helper.remorse_generate_morsede()
|
||||
return (":green[Remorse-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion "
|
||||
"benutzt.]")
|
||||
else:
|
||||
ausgabetext = (":green[Da das Remorse-Wörterbuch noch nicht generiert wurde, wurde das normale "
|
||||
"Wörterbuch für die Suche benutzt, das dauert zwar ca. 5x so lange, aber geht "
|
||||
"auch. \n"
|
||||
"Um das Remorse-Wörterbuch zu erzeugen bitte das Wort:] :orange[GENERATE] "
|
||||
":green[ins Eingabefeld eingeben und die Funktion starten.] \n \n")
|
||||
return ausgabetext + helper.remorse_germandic(eingabetext)
|
||||
except FileNotFoundError:
|
||||
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
|
||||
wbfile = open("./data/morse-de.dic", "r", encoding="iso-8859-15")
|
||||
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
|
||||
count = 0
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mline = zeile.split(",")
|
||||
if eingabetext == mline[0]:
|
||||
ausgabetext += mline[1] + " \n"
|
||||
count += 0
|
||||
wbfile.close()
|
||||
if count == 0:
|
||||
return ":red[leider nichts gefunden ]"
|
||||
else:
|
||||
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mline = zeile.split(",")
|
||||
if eingabetext == mline[0]:
|
||||
ausgabetext += mline[1] + " \n"
|
||||
wbfile.close()
|
||||
return ausgabetext
|
||||
|
||||
def remorse_en(eingabetext):
|
||||
@@ -1534,32 +1519,15 @@ def t9_de(eingabetext):
|
||||
if eingabetext == "":
|
||||
return hilfetexte.t9_de
|
||||
else:
|
||||
try:
|
||||
wbfile = open("./data/t9-de.dic", "r", encoding="iso-8859-15")
|
||||
except FileNotFoundError:
|
||||
try:
|
||||
testfile = open("./data/german.dic", "r")
|
||||
testfile.close()
|
||||
if eingabetext == "GENERATE":
|
||||
helper.t9_generate_t9de()
|
||||
return ":green[t9-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion benutzt.]"
|
||||
else:
|
||||
ausgabetext = (":green[Da das T9-Wörterbuch nicht vorhanden ist, wurde das normale Wörterbuch für "
|
||||
"die Suche benutzt. Das dauert zwar ca. 7x so lange, aber geht auch. \n"
|
||||
"Um das spezielle T9-Wörterbuch zu erzeugen bitte das Wort:] :orange[GENERATE] "
|
||||
":green[ins Eingabefeld eingeben und die Funktion starten.] \n \n")
|
||||
return ausgabetext + helper.t9_germandic(eingabetext)
|
||||
except FileNotFoundError:
|
||||
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
|
||||
else:
|
||||
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mline = zeile.split(",")
|
||||
if eingabetext == mline[0]:
|
||||
ausgabetext += mline[1] + " \n"
|
||||
wbfile.close()
|
||||
return ausgabetext
|
||||
wbfile = open("./data/t9-de.dic", "r", encoding="iso-8859-15")
|
||||
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
|
||||
for zeile in wbfile:
|
||||
zeile = zeile.strip(" \t\n\r")
|
||||
mline = zeile.split(",")
|
||||
if eingabetext == mline[0]:
|
||||
ausgabetext += mline[1] + " \n"
|
||||
wbfile.close()
|
||||
return ausgabetext
|
||||
|
||||
def t9_en(eingabetext):
|
||||
alphabet = {'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4',
|
||||
|
||||
@@ -25,4 +25,7 @@ Der einfachst Weg, um die App lokal laufen zu lassen, ist mit Docker, wobei ich
|
||||
- `cd Mysteryhelfer-web`
|
||||
- `docker compose up`
|
||||
|
||||
bei allen 3 Varianten ist die App anschließend im Browser unter http://127.0.0.1:8501/ aufrufbar
|
||||
bei allen 3 Varianten ist die App anschließend im Browser unter http://127.0.0.1:8501/ aufrufbar
|
||||
|
||||
__HINWEIS: Beim ersten Aufruf der Adresse werden Special-Wörterbücher für RE-Morse und T9 generiert,
|
||||
was ca. 15-30s in Anspruch nimmt und dadurch das Laden der Seite einmalig verzögert.__
|
||||
Reference in New Issue
Block a user