|
from src.utils.helpers import clean_html |
|
from src.utils.markdown_processing.md_preprocessing import convert_html_to_md |
|
from src.persistence.db import * |
|
from src.utils.apis.gpt_api import remove_boilerplate |
|
|
|
|
|
@st.cache_resource |
|
def init_connection(): |
|
return init_db() |
|
|
|
|
|
def render_url_content(element): |
|
cleaned_html = clean_html(element["html"]) |
|
md = convert_html_to_md(cleaned_html) |
|
with st.container(border=True, height=400): |
|
st.markdown(md) |
|
|
|
def save_event_url(): |
|
data = None |
|
if current_element["class"] == "EventDetail": |
|
md = convert_html_to_md(clean_html(current_element["html"])) |
|
data = remove_boilerplate(md) |
|
result = db.event_urls.update_one({"_id": current_element["_id"]}, { "$set": { "final": True, "data": data} }) |
|
|
|
def remove_url(): |
|
result = db.event_urls.delete_one({"_id": current_element["_id"]}), |
|
|
|
|
|
db = init_connection() |
|
current_element = db.event_urls.find_one(filter={"final": None}) |
|
|
|
if current_element: |
|
current_url = current_element['url'] |
|
|
|
|
|
st.header("Event Daten Sortieren") |
|
st.subheader(f"{db.event_urls.count_documents({'final':None})} URLs sind noch unsortiert") |
|
st.write(""" |
|
Hier wird das Datenset endgültig bereinigt. Wenn die von der GPT API zugeordnete Klasse (EventDetail / EventOverview) |
|
falsch ist, muss die URL gelöscht werden. Wenn es korrekt zugeordnet ist können die Daten gespeichert werden. \n |
|
**ACHTUNG** Teilweise sind die Daten unvollständig. Das liegt daran, dass das HTML gekürzt wurde, |
|
für die Sortierung ist das irrelvant, also auch abgeschnittene Events gehören in die Event-DB.\n |
|
**Übersichtsseiten müssen Listen von Events enthalten. Eine Seite mit Kategorien oder anderen Links ist keine Übersichtsseite.** |
|
""") |
|
st.info("Es sollen nur deutsche Texte verarbeitet werden. Alle anderen Texte müssen gelöscht werden. (Teilweise englisch ist okay)") |
|
st.write("") |
|
try: |
|
st.write(f"""### Aktuelle Seite: \n{current_url} ({db.unsorted_urls.find_one(filter={"_id": current_element["base_url_id"]}, projection={"url_type":1})["url_type"]})""") |
|
st.write(f"""#### Predicted Class: {current_element["class"]}""") |
|
render_url_content(current_element) |
|
except Exception as e: |
|
st.write(f"Fehler: {e}") |
|
st.write(current_url) |
|
|
|
col1, col2= st.columns([1, 1]) |
|
|
|
|
|
with col1: |
|
st.button("Als Event-URL speichern", on_click=save_event_url) |
|
with col2: |
|
st.button("URL löschen", on_click=remove_url) |
|
|
|
else: |
|
st.write("Es sind aktuell keine Daten in der DB zur Berarbeitung vorhanden.") |
|
|
|
|
|
|
|
|