Spaces:
Sleeping
Sleeping
import gradio as gr | |
import navigium as navigium | |
import os | |
import extract_from_word as ex | |
import time | |
def main(input, filename="Vokabelliste.xlsx", export2by=False, anzahl_threads=20, progress=gr.Progress()): | |
start_time = time.time() | |
progress(0, desc="Starting...") | |
if type(input) is str: | |
text = input | |
text = text.split("\n") | |
words = navigium.split_into_words(text) | |
elif type(input) is list: | |
words = [] | |
tmp_names = [] | |
for file in input: | |
if os.path.splitext(file)[1] == ".docx": | |
tmp_names.append(os.path.splitext(os.path.basename(file))[0]) | |
words.extend(ex.extract_highlighted_words(file)) | |
if filename == "": | |
filename = "_UND_".join(tmp_names) | |
else: | |
return | |
progress(0.05, desc="Prepared...") | |
progress(0.1, desc="Request to Navigium...") | |
output = navigium.threaded_function(words, anzahl_threads=anzahl_threads) | |
progress(0.61, desc="Sort and analyse...") | |
sorted = navigium.sort_by_wordtype(output) | |
vocabulary = navigium.advanced_formating(sorted) | |
progress(0.83, desc="Exporting...") | |
if filename == "": | |
filepath_excel = "Vokabelliste.xlsx" | |
filepath_by2 = "Vokabelliste.by2" | |
elif filename.endswith(".xlsx"): | |
filepath_by2 = f"{os.path.splitext(os.path.basename(filename))[0]}.by2" | |
elif not filename.endswith(".xlsx"): | |
filepath_excel = f"{filename}.xlsx" | |
filepath_by2 = f"{filename}.by2" | |
excel = navigium.save2excel(filepath_excel, vocabulary) | |
if export2by == True: | |
navigium.save2by2(excel, filepath_by2) | |
progress(1, desc="Finished...") | |
return [filepath_excel, filepath_by2] | |
progress(1, desc="Finished...") | |
end_time = time.time() | |
duration = end_time - start_time | |
print(f"Der Code hat {duration:.5f} Sekunden benötigt.") | |
return [filepath_excel] | |
# Erstelle das Gradio Blocks Interface | |
with gr.Blocks() as demo: | |
# Tabs für die Alternative zwischen Texteingabe und Datei-Upload | |
gr.Markdown("<h1 style='text-align: center;'>Vokabellisten Generator</h1>") | |
gr.Markdown("<p style='text-align: center;'>Einfach aus lateinischen Texten Vokabellisten generieren</p>") | |
gr.Markdown("<p style='text-align: center; color: red;'>!!!Achtung!!! Dies ist eine Beta-Version und unterstützt aktuell nur Nomen, Verben und Adjektive</p>") | |
with gr.Tabs(): | |
with gr.TabItem("Texteingabe"): | |
gr.Markdown("<p style='text-align: left;'>Gib deinen lateinischen Text ein und lade dir anschließend die generierte Excel-Datei und optional auch die Brainyoo-Datei herunter.</p>") | |
with gr.Row(): | |
with gr.Column(): | |
name = gr.Textbox(placeholder="Gib den gewünschten Dateiname hier ein (Default: \"Vokabelliste.xlsx\")...", label="Dateiname(optional):", lines=1, max_lines=1) | |
textbox = gr.Textbox(placeholder="Gib deinen lateinischen Text hier ein...", label="Lateinischer Text:", lines=10, max_lines=10) | |
#box = gr.Checkbox(label="Convert Excel to PDF (kann bis zu 5min länger dauern)", value=False) | |
export2by2 = gr.Checkbox(label="Export nach Brainyoo (als .by2 Datei)", value=False) | |
slider = gr.Slider(minimum=1, maximum=128, value=20, label="Verändere die Anzahl an Threads. (Beeinflusst direkt die Geschwindigkeit)") | |
submit_btn = gr.Button("Absenden") | |
with gr.Column(): | |
result_box = gr.Files(label="Download Excel-Datei und ggf. deine Brainyoo-Datei") | |
submit_btn.click(fn=main, inputs=[textbox, name, export2by2, slider], outputs=result_box) | |
with gr.TabItem("Datei-Upload (.docx)"): | |
gr.Markdown("<p style='text-align: left;'>Lade eine Word-Datei hoch und lade dir anschließend die generierte Excel-Datei und optional auch die Brainyoo-Datei herunter.</p>") | |
with gr.Row(): | |
with gr.Column(): | |
name = gr.Textbox(placeholder="Gib den gewünschten Dateiname hier ein (Default: Dateiname der Word-Datei)...", label="Dateiname(optional):", lines=1, max_lines=1) | |
docx_file = gr.File(file_count="multiple", label="Lade eine Word-Datei hoch, welche in roter Textfarbe oder mit einem beliebigen Textmarker markierte Wörter enthält") | |
#box = gr.Checkbox(label="Convert Excel to PDF (kann bis zu 5min länger dauern)", value=False) | |
export2by2 = gr.Checkbox(label="Export nach Brainyoo (als .by2 Datei)", value=False) | |
slider = gr.Slider(minimum=1, maximum=128, value=20, label="Verändere die Anzahl an Threads. (Beeinflusst direkt die Geschwindigkeit)") | |
submit_btn = gr.Button("Absenden") | |
with gr.Column(): | |
result_box = gr.Files(label="Download Excel-Datei und ggf. deine Brainyoo-Datei") | |
submit_btn.click(fn=main, inputs=[docx_file, name, export2by2, slider], outputs=result_box) | |
#gr.Markdown("<hr>") | |
gr.Markdown("<p style='text-align: center;'>Programmiert von: Rostbraten</p>") | |
link = "https://www.navigium.de/latein-woerterbuch/" | |
gr.Markdown(f"<p style='text-align: center;'>Nutzt \"{link}\" als Wörterbuch</p>") | |
# Starte die Gradio App | |
demo.launch() |