google_search / app.py
mgokg's picture
Update app.py
c91ef36 verified
raw
history blame
15.7 kB
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()