File size: 2,726 Bytes
da88570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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()

# Titel der App
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} ")