Spaces:
Running
Running
import gradio as gr | |
import requests | |
from bs4 import BeautifulSoup | |
from gradio_client import Client | |
from urllib.parse import urljoin | |
import pandas as pd | |
from io import StringIO | |
import json | |
import groq | |
import os | |
google_api_key = os.getenv('google_search') | |
API_URL = "https://blavken-flowiseblav.hf.space/api/v1/prediction/fbc118dc-ec00-4b59-acff-600648958be3" | |
api_key = os.getenv('groq') | |
client = groq.Client(api_key=api_key) | |
custom_css = """ | |
#md { | |
height: 200px; | |
font-size: 30px; | |
background: #121212; | |
padding: 20px; | |
color: white; | |
border: 1 px solid white; | |
font-size:10px; | |
} | |
""" | |
def perplexica_search(payloads): | |
client = Client("mgokg/PerplexicaApi") | |
result = client.predict( | |
prompt=f"{payloads}", | |
optimization_mode="balanced", | |
api_name="/question" | |
) | |
return result | |
def query(payload): | |
response = requests.post(API_URL, json=payload) | |
return response.json() | |
def google_search(payloads): | |
output = query({ | |
"question": f"{payloads}", | |
}) | |
#search_query = f"{payloads} antworte kurz und knapp. antworte auf deutsch. du findest die antwort hier:\n {output}" | |
texte="" | |
for o in output: | |
texte +=o | |
return output | |
scheme = """ | |
{"name":"","email":"","website":""} | |
""" | |
def llama(messages): | |
client = Client("mgokg/selenium-screenshot-gradio") | |
result = client.predict( | |
message=f"{messages}", | |
api_name="/predict" | |
) | |
return result | |
client = Client("AiActivity/AI-Assistant") | |
result = client.predict( | |
message={"text":f"instruction: return a valid json object only, no comments or explanaition, fill in the missing information. use this json scheme.\n {scheme}\n leave blank if information is not verfügbar. here is the information for the values:\n{message}","files":[]}, | |
api_name="/chat" | |
) | |
print(result) | |
def llm(message): | |
message = f'return a json object with the keys: name,email,phone,website \n the values can be found here, leave blank if value is not available:\n {message} \n return a json object only. no text, no explanaition' | |
try: | |
completion = client.chat.completions.create( | |
model="llama3-70b-8192", | |
messages=[ | |
{"role": "system", "content": "You are a helpful assistant."}, | |
{"role": "user", "content": f"{message}"} | |
], | |
) | |
return completion.choices[0].message.content | |
except Exception as e: | |
return f"Error in response generation: {str(e)}" | |
def qwen(jsondata): | |
client = Client("Qwen/Qwen2.5-72B-Instruct") | |
result = client.predict( | |
query= f'return a json object with the keys: name,email,phone,website for each verein \n the values can be found here, leave blank if value is not available:\n {jsondata} \n return a json object only. no text, no explanaition', | |
history=[], | |
system="You are Qwen, created by Alibaba Cloud. You are a helpful assistant.", | |
api_name="/model_chat" | |
) | |
return result | |
def list_of_clubs(ort): | |
base_url = "https://vereine-in-deutschland.net" | |
all_links_text = [] | |
initial_url = f"{base_url}/vereine/Bayern/{ort}" | |
try: | |
response = requests.get(initial_url) | |
response.raise_for_status() | |
soup = BeautifulSoup(response.content, 'html.parser') | |
# Determine the last page | |
link_element = soup.select_one('li.page-item:nth-child(8) > a:nth-child(1)') | |
last_page = 10 | |
if link_element and 'href' in link_element.attrs: | |
href = link_element['href'] | |
last_page = int(href.split('/')[-1]) | |
# Loop through all pages and collect links | |
for page_number in range(1, last_page + 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_text.extend(texts) | |
else: | |
print(f"Target div not found on page {page_number}") | |
except Exception as e: | |
return str(e), [] | |
all_links_text = all_links_text[0::2] | |
return all_links_text | |
def process_ort(ort): | |
#links_text = list_of_clubs(ort) | |
#return links_text | |
linkstext = [ | |
"1. FCN Fanclub \"Heiliges Land\" Lettenreuth 1", | |
"Angelfreunde Michelau und Umgebung e.V.", | |
"AWS Aniridie-Wagr e.V.", | |
"Bayerisches Rotes Kreuz (BRK) - Bereitschaft 1", | |
"Bayerisches Rotes Kreuz (BRK) - Bereitschaft 2", | |
"Bayerisches Rotes Kreuz (BRK) - Wasserwacht", | |
"Bayern-Fan-Club Dorfbrunnen", | |
"Bayern-Fan-Club Neuensee ér Bayernfreunde", | |
"Blaskapelle Schwürbitz", | |
"Briefmarken-Sammlerverein Michelau", | |
"Country- und Westernfreunde Michelau", | |
"Dartclub Flying Devils", | |
"Deutscher Amateur-Radio Club e.V.", | |
"Deutscher Gewerkschaftsbund (DGB) - Ortskartell Michelau", | |
"Die Flößer Schwürbitz", | |
"Divers Club Dirty Water", | |
"Dorfgemeinschaft Neuensee e.V.", | |
"Evangelische Gemeindejugend Michelau", | |
"FC Michelau 09", | |
"FC Schwürbitz 09", | |
"Förderung Kulturgut Schwürbitz am Main", | |
"Förderverein Wasserwacht Michelau e.V.", | |
"Fotoclub Michelau", | |
"Frauenkreis Lettenreuth", | |
"Freiwillige Feuerwehr Lettenreuth", | |
"Freiwillige Feuerwehr Michelau", | |
"Freiwillige Feuerwehr Neuensee", | |
"Freiwillige Feuerwehr Schwürbitz", | |
"Gaaßnclub Schwürbitz", | |
"Geflügelzuchtverein 1877 e. V.", | |
"Geflügelzuchtverein Neuensee", | |
"Geflügelzuchtverein Schwürbitz", | |
"Hundesportverein Treffpunkt Hund e.V. Michelau", | |
"Jagdgenossenschaft Lettenreuth", | |
"Jagdgenossenschaft Michelau", | |
"Jagdgenossenschaft Neuensee", | |
"Jagdgenossenschaft Schwürbitz", | |
"Kaninchenzuchtverein Michelau", | |
"Katholische Arbeitnehmerbewegung (KAB)", | |
"Katholischer Kapellenverein Oberreuth", | |
"Kegelclub Eintracht Oberreuth", | |
"Kegelfreunde Michelau", | |
"Kleintierzuchtverein Lettenreuth", | |
"Korbmacher-Mönche Michelau", | |
"Lesezirkel Michelau", | |
"Liederkranz Neuensee", | |
"Männergesangverein Cäcilia Schwürbitz", | |
"Michelauer Einkaufskorb", | |
"Modellfluggruppe Michelau", | |
"Neuen-See-Löwen 1860-Fan-Club", | |
"Obst- und Gartenbauverein Schwürbitz", | |
"Oldtimerfreunde Michelau i. OFr.", | |
"Pfeifenclub Michelau", | |
"Posaunenchor Michelau", | |
"Radfahrverein Concordia Schwürbitz", | |
"Schachclub Michelau", | |
"Schützengesellschaft Michelau", | |
"Soldaten- und Reservistenkameradschaft Neuensee", | |
"Soldaten- und Traditionskameradschaft Lettenreuth", | |
"Soldatenkameradschaft Michelau", | |
"Soldatenkameradschaft Schwürbitz", | |
"Souffleur-Club Michelau", | |
"SoVD Sozialverband Deutschland Ortsverband Michelau", | |
"Spielvereinigung Lettenreuth", | |
"Sportkegelclub Gut Holz Michelau", | |
"TC Michelau 1979 e.V.", | |
"Theatergruppe Schwürbitz", | |
"Tischtennisclub Lettenreuth", | |
"Tischtennisclub (TTC) Michelau e.V.", | |
"Turnverein Michelau", | |
"Turnverein Schwürbitz", | |
"VdK-Ortsverband Lettenreuth", | |
"VdK-Ortsverband Michelau", | |
"VdK-Ortsverband Neuensee", | |
"VdK-Ortsverband Schwürbitz", | |
"Verein Deutsches Korbmuseum", | |
"Verein für Gartenbau und Landespflege", | |
"Verein für Gemeindediakonie Michelau e.V.", | |
"VfB Neuensee", | |
"Vogelzuchtverein Michelau i.OFr.", | |
"Wood-Crew", | |
"Zimmerstutzen Schützengesellschaft 1874 e.V. Schwürbitz", | |
"Angelsportverein Unterlangenstadt e.V.", | |
"Arbeiterwohlfahrt – Ortsgruppe Mannsgereuth", | |
"Arbeiterwohlfahrt Ortsverein Redwitz", | |
"Bayern-Fan-Club Rodachgrund e.V.", | |
"Blumen- u. Gartenfreunde Trainau", | |
"Bürgerverein „Lebendiges Redwitz” e.V.", | |
"Chor Route 16-60", | |
"CHW (Colloquium Historicum Wirsbergense)", | |
"CSU Ortsverband Redwitz-Unterlangenstadt", | |
"DITIB – Türkisch-Islamische Gemeinde zu Redwitz e. V.", | |
"Evangeliums-Christen-Baptisten e.V.", | |
"Frankenstolz 07 Redwitz", | |
"Freiwillige Feuerwehr Mannsgereuth", | |
"Freiwillige Feuerwehr Obristfeld", | |
"Freiwillige Feuerwehr Redwitz a.d.Rodach", | |
"Freiwillige Feuerwehr Trainau", | |
"Freiwillige Feuerwehr Unterlangenstadt", | |
"Fußballclub e. V. 1916", | |
"Gässla Elf", | |
"Gartenfreunde Obristfeld", | |
"Imkerverein Redwitz a.d. Rodach", | |
"Kapellenbauverein Unterlangenstadt", | |
"Kleintierzuchtverein Redwitz", | |
"Liederkranz 1847 Redwitz", | |
"Männergesangverein „Zum Lindenbaum”", | |
"Obst- u. Gartenbauverein Redwitz", | |
"Obst- und Gartenbauverein Unterlangenstadt", | |
"Ortsverband f. Gartenbau und Landespflege Mannsgereuth", | |
"Redwitzer Ohrwürmer", | |
"Schützengesellschaft Redwitz", | |
"Siedlergemeinschaft Redwitz a.d.Rodach", | |
"Soldaten- und Kriegerkameradschaft", | |
"Soldatenkameradschaft Mannsgereuth", | |
"Soldatenkameradschaft Trainau", | |
"SPD Ortsverein Redwitz a.d. Rodach", | |
"SPD Ortsverein Unterlangenstadt", | |
"STC Siemens-Tennisclub Redwitz a.d.Rodach", | |
"TTC Mannsgereuth 1974 e. V.", | |
"Turnverein Redwitz 1891 e.V.", | |
"UBR - Unabhängige Bürger Redwitz", | |
"VdK Ortsverband Redwitz", | |
"VdK Ortsverband Unterlangenstadt", | |
"Wanderclub Redwitz e.V.", | |
"Wasserwacht Redwitz", | |
"Werbegemeinschaft „Ihr Ziel – Redwitz”", | |
"Arnsteiner Gartenfreunde", | |
"Blasmusik Modschiedel", | |
"BRK Bereitschaft Obermain", | |
"Colloquium Historicum Wirsbergense e. V. (CHW), Bezirksgruppe Weismain", | |
"Deutsch-Französische Gesellschaft Obermain e. V.", | |
"Dorfgemeinschaft Seubersdorf e. V.", | |
"Fanclub 1860 München „Obermain-Löwen“", | |
"Frauenkolping Weismain", | |
"Garten- und Blumenfreunde Weismain", | |
"Gartenbauverein Fesselsdorf", | |
"Gartenfreunde Seubersdorf e.V.", | |
"Geflügelzuchtverein Weismain und Umgebung e. V.", | |
"Kapellenbauverein Görau", | |
"Kapellenbauverein Wunkendorf e. V.", | |
"Kapellenerhaltungsverein „Sankt Katharina“ Wallersberg e. V.", | |
"Kapellenerhaltungsverein Krassach", | |
"Kapellenpflegeverein Siedamsdorf", | |
"Museums- und Kulturverein Weismain und Umgebung e. V.", | |
"Obst- und Gartenbauverein Schöpfleinsgrund", | |
"Schützengesellschaft Weismain 1910 e. V.", | |
"SCW Obermain 04 e.V.", | |
"Seniorenkreis Weismain und Jura", | |
"Stammtisch „Die alten Deutschen“ Kleinziegenfeld", | |
"Stammtisch „Haabücha“", | |
"Stammtisch „Monstaane Raubritter“", | |
"Stammtisch Treff Halba-Höih", | |
"Tennis-Club Weismain e. V.", | |
"Turnverein Weismain 1904 e. V., Abteilung Tischtennis", | |
"Turnverein Weismain 1904 e. V.", | |
"VdK-Ortsverband Weismain & Jura", | |
"Verein zur Förderung der Kommunalen Zusammenarbeit am Obermain e. V.", | |
"Wasch- und Tankgemeinschaft Weiden, Modschiedel und Umgebung e. V.", | |
"Weismainer Blasmusik e. V.", | |
"Wohnsiger Blumenfreunde", | |
"1. FC Altenkunstadt", | |
"1. FC Altenkunstadt - Altliga", | |
"1. FC Altenkunstadt/1. FC Woffendorf", | |
"1. FC Baiersdorf", | |
"1. FC Woffendorf", | |
"1. FC Woffendorf - Altliga", | |
"Bayern-Fan-Club Burkheim", | |
"Bayern Fanclub Nepomuk", | |
"BMW-Club-Obermain", | |
"Bonsai Freunde Altenkunstadt und Umgebung eV", | |
"Bürgerverein Spiesberg", | |
"Colloquium Historicum Wirsbergense", | |
"CSU-Ortsverband Altenkunstadt", | |
"Deutsch-Französische Gesellschaft Obermain", | |
"Dorfgemeinschaftsverein Zeublitz", | |
"DPSG Stamm St. Kilian", | |
"Evang. Frauenhilfe Altenkunstadt", | |
"Evang. Kirchenchor Altenkunstadt", | |
"FC Bayern Fanclub \"Baiersdorf/Ofr.\"", | |
"FCN-Fanclub Altenkunstadt", | |
"FCN-Fanclub \"Kunstadt\"", | |
"FFW Altenkunstadt e. V.", | |
"FFW Baiersdorf", | |
"FFW Burkheim", | |
"FFW Maineck", | |
"FFW Pfaffendorf", | |
"FFW Prügel", | |
"FFW Spiesberg", | |
"FFW Strössendorf e. V.", | |
"FFW Woffendorf", | |
"FFW Zeublitz", | |
"Filialkirchenstiftung Pfaffendorf", | |
"Frauenunion Ortsverband Altenkunstadt", | |
"Freie Bürger der Ortsteile", | |
"Freie Wählergemeinschaft", | |
"Garten- und Naturfreunde Prügel", | |
"Gartenbauverein Burkheim", | |
"Gartenbauverein Zeublitz", | |
"Gartenhobbyverein Altenkunstadt", | |
"Geflügelzuchtverein Altenkunstadt", | |
"Gesangverein Lyra Altenkunstadt", | |
"Gesangverein Maineck", | |
"HG Kunstadt", | |
"Haus- und Grundbesitzerverein Altenkunstadt", | |
"IG Ortskapelle Woffendorf", | |
"Jacky Jones Whiskey Bomber", | |
"JU Altenkunstadt", | |
"Junge Bürger e.V.", | |
"Junge Wähler Union", | |
"Kapellenbauverein Baiersdorf", | |
"Kapellenbauverein Burkheim", | |
"Kapellenbauverein Zeublitz", | |
"Kath. Casino Altenkunstadt", | |
"Kath. Frauenkreis Altenkunstadt", | |
"Kath. Kirchenchor Altenkunstadt", | |
"Kulturverein Altenkunstadt e. V.", | |
"Lucky Darts e.V.", | |
"Malteser Hilfsdienst", | |
"Markgrafenclub Strössendorf", | |
"Modellfluggruppe PHOENIX e. V.", | |
"Musikverein Altenkunstadt", | |
"Obst- und Gartenbauverein Baiersdorf", | |
"Obst- und Gartenbauverein Pfaffendorf", | |
"Obst- und Gartenbauverein Spiesberg", | |
"Obst- und Gartenbauverein Strössendorf", | |
"Obst- und Gartenbauverein Woffendorf", | |
"Pfadfinderfreunde St. Kilian", | |
"Posaunenchor Strössendorf", | |
"RV Concordia Altenkunstadt", | |
"RV Viktoria Maineck", | |
"Seniorenclub 72 Altenkunstadt", | |
"Singgemeinschaft Altenkunstadt", | |
"Ski- und Wanderfreunde Kordigast", | |
"SPD-Frauengruppe", | |
"SPD-Ortsverein", | |
"Sportfischer Wilde Knaben Strössendorf", | |
"Tribblmörsi Strössendorf", | |
"Trimm-Dich-Club Woffendorf", | |
"TTC Strö-Main e. V.", | |
"TTV 45 Altenkunstadt 1997", | |
"TV Altenkunstadt", | |
"TV Strössendorf", | |
"VdK Ortsverband Altenkunstadt", | |
"VdK Ortsverband Burkheim", | |
"Verein Kommunale Zusammenarbeit am Obermain e.V.", | |
"Wasserwacht Altenkunstadt", | |
"Zimmerstutzen-Schützengesellschaft" | |
] | |
vereine = [] | |
for verein in linkstext: | |
prompt=f"{verein}", | |
result = llama(prompt) | |
vereine.append(result) | |
print(result) | |
#data = json.loads(vereine) | |
#df = pd.DataFrame(vereine) | |
return vereine | |
for verein in links_text: | |
client = Client("mgokg/gemini-2.0-flash-exp") | |
result = client.predict( | |
prompt=f"impressum {verein}", | |
api_name="/perform_search" | |
) | |
#json_object = llm(result) | |
""" | |
headers = { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" | |
} | |
url = f"https://www.google.com/search?q=impressum {verein}" | |
response = requests.get(url, headers=headers) | |
soup = BeautifulSoup(response.content, 'html.parser') | |
impressum_div = soup.find('body') | |
contact_detailes = impressum_div.text | |
json_object = llm(contact_detailes) | |
""" | |
vereine.append(result) | |
#dicts = [json.loads(item) for item in vereine] | |
#df = pd.DataFrame(dicts) | |
#return df | |
return vereine | |
# Create the Gradio interface | |
with gr.Blocks(css=custom_css) as demo: | |
with gr.Row(): | |
#details_output = gr.DataFrame(label="Ausgabe", elem_id="md") | |
details_output = gr.Textbox(label="Ausgabe") | |
with gr.Row(): | |
ort_input = gr.Textbox(label="Ort eingeben", placeholder="ask anything...") | |
with gr.Row(): | |
button = gr.Button("Senden") | |
# Connect the button to the function | |
button.click(fn=process_ort, inputs=ort_input, outputs=details_output) | |
# Launch the Gradio application | |
demo.launch() | |