File size: 12,017 Bytes
d7a4e38
1328c27
 
 
 
 
 
 
999cad9
1328c27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1de7e12
d7a4e38
 
 
 
1328c27
d7a4e38
 
 
 
 
 
 
 
1de7e12
 
d7a4e38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1948d7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bdbcb36
5d098bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bdbcb36
5d54c7e
bdbcb36
f17eb40
bdbcb36
 
f17eb40
ce8c2d2
f17eb40
 
71a77a6
77e357b
28003f3
 
 
bdbcb36
acdbb29
 
8bc932f
bdbcb36
 
f251670
 
 
 
e664082
bc01de5
bdbcb36
d1293e3
 
 
 
 
acdbb29
f5b8aa7
 
ed0fd21
d1293e3
8a95c68
 
babb003
df37481
 
634fbf2
babb003
bdbcb36
 
 
bee6540
7f8c43d
 
bee6540
42d8c3c
 
7f8c43d
 
ed0fd21
42d8c3c
403c928
42d8c3c
8a95c68
976b202
403c928
d1293e3
42d8c3c
 
d1293e3
976b202
403c928
7f8c43d
403c928
3a2ad41
 
df37481
403c928
98eaec6
bee6540
6da491c
bdbcb36
 
 
 
df37481
634fbf2
df37481
01b139c
 
 
 
 
827278a
3c8df63
 
 
98eaec6
3c8df63
 
 
 
5d098bd
bdbcb36
 
 
 
 
 
 
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
import streamlit as st
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import json
import csv
import pandas as pd
import os
from gradio_client import Client

#api_key = os.getenv('groq')

def parse_links_and_content(ort):
    base_url = "https://vereine-in-deutschland.net"
    all_links = []   
    # Konstruiere die vollständige URL
    initial_url = f"{base_url}/vereine/Bayern/{ort}/"
    
    try:
        # Senden der Anfrage an die initiale URL
        response = requests.get(initial_url)
        response.raise_for_status()  # Überprüfen, ob die Anfrage erfolgreich war
        
        # Parse the HTML content using BeautifulSoup
        soup = BeautifulSoup(response.content, 'html.parser')
        
        # Ermittle die letzte Seite
        link_element = soup.select_one('li.page-item:nth-child(8) > a:nth-child(1)')
        
        if link_element and 'href' in link_element.attrs:
            href = link_element['href']
            # Extrahiere die letzten beiden Zeichen der URL
            last_two_chars = href[-2:]
            
            # Konvertiere die letzten beiden Zeichen in einen Integer
            last_two_chars_int = int(last_two_chars)
        else:
            last_two_chars_int = 1  # Falls die letzte Seite nicht gefunden wird, nimm an, dass es nur eine Seite gibt

        # Schleife durch alle Seiten und sammle Links
        for page_number in range(1, last_two_chars_int + 1):
            page_url = f"{base_url}/vereine/Bayern/{ort}/p/{page_number}"
            response = requests.get(page_url)
            response.raise_for_status()            
            soup = BeautifulSoup(response.content, 'html.parser')
            target_div = soup.select_one('div.row-cols-1:nth-child(4)')
            
            if target_div:
                texts = [a.text for a in target_div.find_all('a', href=True)] 
                all_links.extend(texts)
            else:
                st.write(f"Target div not found on page {page_number}")
        
    except Exception as e:
        return str(e), []
        
    all_links = all_links[0::2]
    return all_links

def scrape_links(links):
    contact_details = []
    client = Client("mgokg/PerplexicaApi")
    for verein in links:   
        result = client.predict(
            prompt=f"{verein}",
            api_name="/parse_links"
        )
        contact_details.append(result)
        
    return contact_details

# Speichere die JSON-Daten in eine CSV-Datei 
def save_to_csv(data, filename): 
    keys = data[0].keys() 
    with open(filename, 'w', newline='', encoding='utf-8') as output_file: 
        dict_writer = csv.DictWriter(output_file, fieldnames=keys) 
        dict_writer.writeheader() 
        dict_writer.writerows(data)

# Streamlit App
st.title("Vereinsinformationen abrufen")

ort_input = st.text_input("Ort", placeholder="Gib den Namen des Ortes ein")

if st.button("Senden"):
    links = parse_links_and_content(ort_input)
    contact_details = scrape_links(links)
    json_data = [json.loads(item) for item in contact_details]
    
    # Zeige die Ergebnisse an
    st.json(json_data)
    
    # Speichere die Daten in einer CSV-Datei
    save_to_csv(json_data, 'contact_details.csv')
    
    # Bereitstellung des Download-Links
    with open('contact_details.csv', 'rb') as file:
        st.download_button(
            label="CSV-Datei herunterladen",
            data=file,
            file_name='contact_details.csv',
            mime='text/csv'
        )












'''
import streamlit as st
#import sounddevice as sd
import numpy as np
import wavio
import speech_recognition as sr


st.title("Audio Recorder und Transkription")

# Aufnahmeparameter
duration = st.slider("Aufnahmedauer (Sekunden)", 1, 10, 5)
fs = 44100  # Abtastrate

if st.button("Aufnahme starten"):
    st.write("Aufnahme läuft...")
    #recording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
    #sd.wait()  # Aufnahme beenden

    # Speichern der Aufnahme
    wavio.write("aufnahme.wav", recording, fs, sampwidth=2)
    st.write("Aufnahme abgeschlossen!")

    # Transkription
    recognizer = sr.Recognizer()
    with sr.AudioFile("aufnahme.wav") as source:
        audio_data = recognizer.record(source)
        try:
            text = recognizer.recognize_google(audio_data, language="de-DE")
            st.write("Transkribierter Text:")
            st.write(text)
        except sr.UnknownValueError:
            st.write("Audio konnte nicht erkannt werden.")
        except sr.RequestError as e:
            st.write(f"Fehler bei der Anfrage an den Google Speech Recognition Service: {e}")

# Hinweis für Benutzer
st.write("Klicke auf 'Aufnahme starten', um die Aufnahme zu beginnen.")







import streamlit as st
import pydub
import speech_recognition as sr
from io import BytesIO

st.title("Audio Recorder und Transkription")

# Audioaufnahme
audio_file = st.file_uploader("Lade eine Audiodatei hoch", type=["wav", "mp3"])

if audio_file is not None:
    audio_bytes = audio_file.read()
    audio = pydub.AudioSegment.from_file(BytesIO(audio_bytes))

    # Audio in das richtige Format konvertieren
    audio = audio.set_frame_rate(16000).set_channels(1).set_sample_width(2)
    audio_bytes = audio.raw_data

    # Audio transkribieren
    recognizer = sr.Recognizer()
    audio_source = sr.AudioData(audio_bytes, frame_rate=16000, sample_width=2, channels=1)
    try:
        text = recognizer.recognize_google(audio_source)
        st.write("Transkribierter Text:")
        st.write(text)
    except sr.UnknownValueError:
        st.write("Audio konnte nicht erkannt werden.")
    except sr.RequestError as e:
        st.write(f"Fehler bei der Anfrage an den Google Speech Recognition Service: {e}")

# Hinweis für Benutzer
st.write("Lade eine Audiodatei hoch, um sie zu transkribieren.")






import streamlit as st
from streamlit_webrtc import webrtc_streamer, AudioProcessorBase, WebRtcMode

class AudioProcessor(AudioProcessorBase):
    def recv(self, frame):
        # Hier kannst du die Audioverarbeitung hinzufügen
        return frame

st.title("Audio Recorder")

webrtc_ctx = webrtc_streamer(
    key="audio",
    mode=WebRtcMode.SENDRECV,
    audio_processor_factory=AudioProcessor,
    media_stream_constraints={"audio": True},
    async_processing=True,
)

if webrtc_ctx.state.playing:
    st.write("Recording...")
else:
    st.write("Click on Start to record audio.")



import streamlit as st
import os
import time
import pandas as pd
from pandasai import SmartDatalake
from pandasai import SmartDataframe
from pandasai.responses.streamlit_response import StreamlitResponse
import numpy as np
#from pandasai import Agent
import json
import matplotlib.pyplot as plt



os.environ['PANDASAI_API_KEY'] = "$2a$10$2s0v3C29vItNS2CO4QX10OV51/OONFCUNa4e9EU90w2Gozw88f4vK"
st.set_page_config(page_title="SAP Data Analysis", layout="wide")
st.image('Pandas-AI-Logo.png', caption=None)
uploaded_file = st.file_uploader("Upload CSV data for analysis", type=['csv'])
#uploaded_file = st.file_uploader("Upload EXcel data for analysis", type=['xlsx'])

df1 = ""
sdf = ""
data = [{"Feb 24":"","1.":"Do","2.":"Fr","3.":"Sa","4.":"So","5.":"Mo","6.":"Di","7.":"Mi","8.":"Do","9.":"Fr","10.":"Sa","11.":"So","12.":"Mo","13.":"Di","14.":"Mi","15.":"Do","16.":"Fr","17.":"Sa","18.":"So","19.":"Mo","20.":"Di","21.":"Mi","22.":"Do","23.":"Fr","24.":"Sa","25.":"So","26.":"Mo","27.":"Di","28.":"Mi","29.":"Do"},{"Feb 24":"Standke Steffen","1.":"F","2.":"F","3.":"","4.":"","5.":"","6.":"","7.":"","8.":"","9.":"","10.":"","11.":"","12.":"","13.":"","14.":"UA","15.":"UA","16.":"","17.":"SD","18.":"SD","19.":"","20.":"","21.":"","22.":"","23.":"","24.":"","25.":"","26.":"","27.":"","28.":"","29.":""},{"Feb 24":"Will Susanne","1.":"","2.":"TZ","3.":"","4.":"","5.":"UA","6.":"","7.":"","8.":"","9.":"TZ","10.":"","11.":"","12.":"","13.":"","14.":"","15.":"","16.":"TZ","17.":"","18.":"","19.":"","20.":"","21.":"","22.":"","23.":"TZ","24.":"","25.":"","26.":"","27.":"","28.":"","29.":""},{"Feb 24":"Raab Julia","1.":"TZ","2.":"TZ","3.":"","4.":"","5.":"","6.":"","7.":"","8.":"TZ","9.":"TZ","10.":"BLOCKER","11.":"","12.":"Ü","13.":"Ü","14.":"Ü","15.":"TZ","16.":"TZ","17.":"BLOCKER","18.":"","19.":"","20.":"","21.":"","22.":"TZ","23.":"TZ","24.":"","25.":"SD","26.":"","27.":"","28.":"","29.":"TZ"},{"Feb 24":"Eckert Marion","1.":"","2.":"","3.":"","4.":"","5.":"","6.":"","7.":"","8.":"","9.":"Ü","10.":"","11.":"","12.":"S","13.":"S","14.":"S","15.":"S","16.":"S","17.":"","18.":"","19.":"","20.":"","21.":"","22.":"","23.":"","24.":"","25.":"","26.":"S","27.":"S","28.":"S","29.":"S"},{"Feb 24":"Meder, Milena","1.":"","2.":"","3.":"","4.":"","5.":"","6.":"","7.":"","8.":"","9.":"","10.":"","11.":"","12.":"F","13.":"F","14.":"","15.":"F","16.":"F","17.":"","18.":"","19.":"","20.":"","21.":"","22.":"","23.":"","24.":"","25.":"","26.":"Voloreise","27.":"","28.":"","29.":""},{"Feb 24":"Despang Angelika","1.":"","2.":"","3.":"SD","4.":"","5.":"","6.":"","7.":"","8.":"","9.":"","10.":"","11.":"","12.":"UA","13.":"UA","14.":"UA","15.":"","16.":"","17.":"","18.":"","19.":"F","20.":"F","21.":"F","22.":"F","23.":"F","24.":"","25.":"","26.":"","27.":"","28.":"","29.":""},{"Feb 24":"Heike Beudert","1.":"TZ","2.":"0,5 U","3.":"","4.":"","5.":"TZ","6.":"","7.":"","8.":"","9.":"","10.":"SD","11.":"SD","12.":"UA","13.":"UA","14.":"TZ","15.":"TZ","16.":"TZ","17.":"","18.":"","19.":"TZ","20.":"TZ","21.":"TZ","22.":"TZ","23.":"TZ","24.":"","25.":"","26.":"F","27.":"F","28.":"F","29.":"F"},{"Feb 24":"Borst Benedikt","1.":"","2.":"","3.":"","4.":"SD","5.":"F","6.":"F","7.":"F","8.":"F","9.":"F","10.":"BLOCKER","11.":"","12.":"UA","13.":"UA","14.":"F","15.":"","16.":"","17.":"","18.":"","19.":"","20.":"","21.":"","22.":"","23.":"","24.":"BLOCKER","25.":"","26.":"","27.":"","28.":"","29.":""}]

#df = pd.DataFrame(data)
#sdf = SmartDataframe(df)
#df1

if uploaded_file is not None:
    
    #Dateien im CSV Format
    df1 = pd.read_csv(uploaded_file)
 
    # Dateien im XLSX Format
    #df1 = pd.read_excel(uploaded_file, sheet_name=NONE)
    #st.table(df1)
    df1 = pd.DataFrame(df1)
    st.success("Daten erfolgreich geladen!")
    df1
    #sdf = SmartDataframe(df1)
    

bild = st.empty()     
bild.subheader("Datenanalyse & Datenvisualisierung")
c = st.container(border=True)
prompt = st.text_area("Enter your prompt:")
if st.button("Generate"):

        if prompt:
            #c.text("Generating response...") 
            if os.path.isfile('./exports/charts/temp_chart.png'):
                os.remove('./exports/charts/temp_chart.png')
            #spin = st.spinner
            with c:
                with st.spinner("Generating response..."):
                    
                    #bar = st.progress(20)
                    
                    #bar = st.progress(100)
              
                    with bild:
                        sdf = SmartDataframe(df1)
                        st.write(sdf.chat(prompt))
                    #with st.spinner("Generating response..."):
                       
                        if os.path.isfile('./exports/charts/temp_chart.png'):
                            st.image('./exports/charts/temp_chart.png')

                         
                    #st.success('Done!')
                    #bar.progress(100)
                    
                #c.write(bar)
                #c.write(st.spinner)
                #bild.empty()
            
                #st.write(sdf.chat(prompt))            
            #bar.progress(100)
            

        else:

            st.error("Please enter a prompt.")



#with placeholder.container():
    #st.write("This is one element")
    #st.write("This is another")



#agent = Agent(df)
#result = agent.chat("erstelle balkendiagramm")
#st.write(result)
#sdf = SmartDataframe(df)
#sdf.chat("draw chart")
#pandas_ai = PandasAI(llm, verbose=True, save_charts=True)
#st.write(sdf.chat("Plot a chart"))
#st.write(st.bar_chart(data))
'''