schichtplan / app.py
mgokg's picture
Update app.py
999cad9 verified
raw
history blame
12 kB
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))
'''