|
import pandas as pd |
|
from src.utils.markdown_processing.md_preprocessing import convert_html_to_md |
|
from src.persistence.db import * |
|
import streamlit_nested_layout |
|
|
|
|
|
@st.cache_resource |
|
def init_connection(): |
|
return init_db() |
|
|
|
def render_url_content(element): |
|
with st.container(border=True, height=400): |
|
md = convert_html_to_md(element["cleaned_html"]) |
|
st.markdown(md, unsafe_allow_html=True) |
|
|
|
db = init_connection() |
|
|
|
|
|
st.title("Übersicht über die Datenbank-Inhalte") |
|
st.subheader("Aktuelle Einträge in der DB") |
|
st.write(""" |
|
- **unsorted_urls**: Enthält Daten-Objekte bestehend aus Start-Urls, Url-Typ (z.b. "city", "theater") sowie vom Crawler gefundene Sub-Urls. |
|
- **event_urls**: Enthält Daten-Objekte bestehend aus Url, Referenz zur Basis-Url (Start-Url), Klasse (EventDetail / EventOverview) sowie HTML der Seite""") |
|
df = pd.DataFrame({ |
|
"DB-Collection":[ |
|
CollectionNames.UNSORTED_URLS, |
|
CollectionNames.EVENT_URLS], |
|
"Anzahl an Einträgen":[ |
|
db.unsorted_urls.count_documents({}), |
|
db.event_urls.count_documents({})], |
|
"Bereits verarbeitet":[ |
|
db.unsorted_urls.count_documents({"crawled": True}), |
|
db.event_urls.count_documents({"final":True}) |
|
]}) |
|
st.table(df) |
|
|
|
overview_pages = list(db.event_urls.find(filter={"class":"EventOverview", "final":True}, projection={"url":1,"base_url_id":1,"cleaned_html":1})) |
|
detail_pages = list(db.event_urls.find(filter={"class":"EventDetail", "final":True}, projection={"url":1,"base_url_id":1,"cleaned_html":1, "data":1}) ) |
|
|
|
st.subheader("Fertige Einträge in Event Urls:") |
|
st.write("Die fertigen Daten sind mithilfe der gpt-api in markdown übersetzt und nur der Veranstaltungsbereich heraus geschnitten.") |
|
data = [el for el in detail_pages if "data" in el] |
|
st.write(f"Fertig verarbeitete Urls: {len(data)} von {len(detail_pages)}") |
|
|
|
st.subheader("Einträge in Event Urls") |
|
st.write(""" |
|
Die Übersicht zeigt die finalen Daten aus **event_urls**, sortiert nach ihrer Klasse.""") |
|
with st.expander(f"Event-Übersichtsseiten ({len(overview_pages)})"): |
|
for el in overview_pages: |
|
try: |
|
with st.expander(f"{el['url']} - ({db.unsorted_urls.find_one(filter={'_id':el['base_url_id']}, projection={'url_type':1})['url_type']})"): |
|
render_url_content(el) |
|
except Exception as e: |
|
st.write(f"Fehler: {e}") |
|
|
|
|
|
with st.expander(f"Event-Detailseiten ({len(detail_pages)})"): |
|
for el in detail_pages: |
|
try: |
|
with st.expander(f"{el['url']}"): |
|
render_url_content(el) |
|
except Exception as e: |
|
st.write(f"Fehler bei {el['url']}: {e} ") |
|
|
|
|
|
|
|
|
|
|