add googleMaps scraping and openAI playground project

This commit is contained in:
Daniel Abbassi
2025-07-15 16:50:37 +02:00
parent c3adc8d4a7
commit 92c27a39cb
7 changed files with 160 additions and 1 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
angebote_traegerMail_iteration/dict_*.json
openAI_validate_data/2024-12 gpt-4o-mini/*.csv

View File

@@ -7,4 +7,12 @@ This script is related to FileMaker script "OptOut: Mailadressen sammeln - simpl
The Python3 script generates two JSON files from that. One holds the relation `{ trägermail1@test.de : [ "Angebot A", "Angebot B" ] }` and the other `{ angebotsmail@test.de : [ "Angebot A", "Angebot C" ] }`.
This input can be used to generate mails for the "opt-out method" (people can delete their offer from the MUT-ATLAS).
### Output
tbd
tbd
## openAI_validate_data
### Processing
These scripts aim to see what ChatGPT can do to validate your offers (Angebote).
## scrape_GoogleMaps
### Processing
Scenario: 'find offers (Angebote) with "Psychotherpeut" in a radius of 1000m around these coordinates..'

View File

@@ -0,0 +1,28 @@
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": """Ich hab hier 5 unvalidierte Daten zu psychologischen Einrichtungen oder Angeboten, die ich gerne validiert und ggf. korrigiert hätte. Folgende Probleme hab ich mit den Daten:
Einige "Angebote" sind eher Träger und kein Angebot. Bitte recherchiere das eigentliche Angebot, die korrekten Adresse zu ebenselbigem und gib eine spezifische URL zum Angebot mit, gerne im Feld "Homepage".
Das Ergebnis kannst du gerne als CSV (wie den Input) zurückgeben. Hier die Daten:
Name,Firma,Straße,StraßeNrEingabe,StraßeEingabe,PLZ,Ort,Bundesland,DRV Gebiet,Landkreis,Telefon,Themen,Telefon mobil,Email,HomePage,URL_AngebotKurz,Themen
Regionaldienste des Jugendamtes Lichtenberg,Bezirksamt Lichtenberg,Große Leege-Straße 103,103,Große Leege-Straße,13055,Berlin,Berlin,Berlin-Brandenburg,,030 90296-7031,,030 90296-7031,juginfo@lichtenberg.berlin.de,,http://www.berlin.de,
Allgemeiner Sozialer Dienst (ASD) Jugendamt Rhein-Pfalz-Kreis Lageplan,Rhein-Pfalz-Kreis,Europaplatz 5,5,Europaplatz,67063,Ludwigshafen,Rheinland-Pfalz,Rheinland-Pfalz,,0621 5909-1400,,0621 5909-1400,silvia.burre@rheinpfalzkreis.de,,http://www.rhein-pfalz-kreis.de,
Drogenhilfe Stadt Ludwigshafen Lageplan,Stadt Ludwigshafen am Rhein,Goethestraße 12,12,Goethestraße,67063,Ludwigshafen,Rheinland-Pfalz,Rheinland-Pfalz,,0621 504-2870,,0621 504-2870,drogenhilfe@ludwigshafen.de,,http://www.ludwigshafen.de,
Plan B gGmbH Jugend-und Drogenberatungsstelle,Plan B gGmbH,Schießhausstraße 6,6,Schießhausstraße,75173,Pforzheim,Baden-Württemberg,Baden-Württemberg,,07231 92277-0,,07231 92277-0,beratung@planb-pf.de,,http://www.planb-pf.de,
Queer Space Pforzheim Beratung von LSBTTIQA-Menschen,AIDS-Hilfe Pforzheim e.V.,Goldschmiedeschulstraße 6,6,Goldschmiedeschulstraße,75173,Pforzheim,Baden-Württemberg,Baden-Württemberg,,07231 44 1110,,07231 44 1110,queerspace@ah-pforzheim.de,,http://www.ah-pforzheim.de/queer-space/,
"""
}
]
)
response = completion.choices[0].message
print("Response: \n'"+ response.content + "'")
print("\n\nFull response: ", response)

View File

@@ -0,0 +1,35 @@
from openai import OpenAI
from copy import deepcopy
client = OpenAI()
startQuestion = """Ich hab hier unvalidierte Daten zu psychologischen Einrichtungen oder Angeboten, die ich gerne validiert und ggf. korrigiert hätte.
Checke bitte, ob die Angebote die korrekte Adresse und Webseite haben. Ggf kannst du ja noch passende Themen in Kürze auflisten.
Sag mir, was du an den Daten ändern würdest. Halte dich kurz.
Name,Firma,Straße,StraßeNrEingabe,StraßeEingabe,PLZ,Ort,Bundesland,DRV Gebiet,Landkreis,Telefon,Themen,Telefon mobil,Email,HomePage,Themen
Regionaldienste des Jugendamtes Lichtenberg,Bezirksamt Lichtenberg,Große Leege-Straße 103,103,Große Leege-Straße,13055,Berlin,Berlin,Berlin-Brandenburg,,030 90296-7031,,030 90296-7031,juginfo@lichtenberg.berlin.de,,http://www.berlin.de,
"""
choice = "start"
while (choice != ""):
choice2 = input("Press 'Enter' to call ChatGPT now.. ")
if (choice2 == ""):
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": startQuestion if choice == "start" else choice
}
]
)
response = completion.choices[0].message
print("Response: \n'"+ response.content + "'")
del response.content
print("\nEnveloped response content: ", response)
choice = input("Ask something or leave blank to exit.. ").strip()
print("Ok ciao")

View File

@@ -0,0 +1,21 @@
Name,Adresse,Bewertung,Anzahl Bewertungen,Typ
Frau Dr. med. Susanne Schmitz,"Kölner Str. 79, Leverkusen",4.6,10,"doctor, health, point_of_interest, establishment"
Dipl. Psych. Erika Toussaint (geb. Benz),"Uhlandstraße 1, Leverkusen",5.0,1,"health, point_of_interest, establishment"
marianna ozerova,"Bonner Str. 4, Leverkusen",3.9,11,"health, point_of_interest, establishment"
Invictus Physiotherapie Leverkusen,"An d. Fuchskuhl 9b, Leverkusen",4.8,221,"physiotherapist, health, point_of_interest, establishment"
Dr. med. Werner Ott Facharzt für Psychosomat. Med. und Psychotherapie,"Kölner Str. 79, Leverkusen",4.3,14,"doctor, health, point_of_interest, establishment"
Physiotherapie am Fürstenbergplatz,"Fürstenbergpl. 4, Leverkusen",5.0,82,"health, point_of_interest, establishment"
Physiotherapie Leverkusen-Quettingen - PhysioSport 360°,"Quettinger Str. 220, Leverkusen",4.9,111,"physiotherapist, health, point_of_interest, establishment"
Dipl. Psych. Marlet Sina Klingauf,"Kölner Str. 79, Leverkusen",3.0,4,"health, point_of_interest, establishment"
FZKL - Fortbildungszentrum Köln Leverkusen,"Entenpfuhl 25, Leverkusen",4.8,13,"physiotherapist, health, point_of_interest, establishment"
Dr. Diana Enke Psychotherapeutische Praxis,"Kölner Str. 20A, Leverkusen",0.0,0,"health, point_of_interest, establishment"
Psychotherapeutische Praxis für Kinder und Jugendliche | Svenja Lessing | Leverkusen,"Kölner Str. 20A, Leverkusen",0.0,0,"health, point_of_interest, establishment"
Psychotherapie Valerie Stein,"Gisbert-Cremer-Straße 69, Leverkusen",0.0,0,"health, point_of_interest, establishment"
Herr Dr. Khalil Al-Jaar,"Kölner Str. 36, Leverkusen",4.4,25,"health, point_of_interest, establishment"
Praxis für Psychologische Psychotherapie,"Wilhelmstraße 12, Leverkusen",5.0,1,"health, point_of_interest, establishment"
Privatpraxis Psychotherapie,"Talstraße 49, Leverkusen",0.0,0,"health, point_of_interest, establishment"
Dipl.-Psych. Claudia Droste-Schmeißer,"Birkenbergstraße 14, Leverkusen",5.0,1,"health, point_of_interest, establishment"
Praxis Stock Ergotherapie | Physiotherapie | Logopädie,"Kölner Str. 60, Leverkusen",4.2,17,"health, point_of_interest, establishment"
Frau Dipl.-Psych. Monika Gfrörer,"Birkenbergstraße 14, Leverkusen",5.0,1,"health, point_of_interest, establishment"
"Dr. Dipl.-Psych. Trientje Helbing, Praxis für Verhaltenstherapie","Kölner Str. 126, Leverkusen",5.0,5,"health, point_of_interest, establishment"
Praxisgemeinschaft Ingrid Broch & Gisela Jachertz,"Düsseldorfer Str. 14, Leverkusen",5.0,2,"health, point_of_interest, establishment"
1 Name Adresse Bewertung Anzahl Bewertungen Typ
2 Frau Dr. med. Susanne Schmitz Kölner Str. 79, Leverkusen 4.6 10 doctor, health, point_of_interest, establishment
3 Dipl. Psych. Erika Toussaint (geb. Benz) Uhlandstraße 1, Leverkusen 5.0 1 health, point_of_interest, establishment
4 marianna ozerova Bonner Str. 4, Leverkusen 3.9 11 health, point_of_interest, establishment
5 Invictus Physiotherapie Leverkusen An d. Fuchskuhl 9b, Leverkusen 4.8 221 physiotherapist, health, point_of_interest, establishment
6 Dr. med. Werner Ott Facharzt für Psychosomat. Med. und Psychotherapie Kölner Str. 79, Leverkusen 4.3 14 doctor, health, point_of_interest, establishment
7 Physiotherapie am Fürstenbergplatz Fürstenbergpl. 4, Leverkusen 5.0 82 health, point_of_interest, establishment
8 Physiotherapie Leverkusen-Quettingen - PhysioSport 360° Quettinger Str. 220, Leverkusen 4.9 111 physiotherapist, health, point_of_interest, establishment
9 Dipl. Psych. Marlet Sina Klingauf Kölner Str. 79, Leverkusen 3.0 4 health, point_of_interest, establishment
10 FZKL - Fortbildungszentrum Köln Leverkusen Entenpfuhl 25, Leverkusen 4.8 13 physiotherapist, health, point_of_interest, establishment
11 Dr. Diana Enke Psychotherapeutische Praxis Kölner Str. 20A, Leverkusen 0.0 0 health, point_of_interest, establishment
12 Psychotherapeutische Praxis für Kinder und Jugendliche | Svenja Lessing | Leverkusen Kölner Str. 20A, Leverkusen 0.0 0 health, point_of_interest, establishment
13 Psychotherapie Valerie Stein Gisbert-Cremer-Straße 69, Leverkusen 0.0 0 health, point_of_interest, establishment
14 Herr Dr. Khalil Al-Jaar Kölner Str. 36, Leverkusen 4.4 25 health, point_of_interest, establishment
15 Praxis für Psychologische Psychotherapie Wilhelmstraße 12, Leverkusen 5.0 1 health, point_of_interest, establishment
16 Privatpraxis Psychotherapie Talstraße 49, Leverkusen 0.0 0 health, point_of_interest, establishment
17 Dipl.-Psych. Claudia Droste-Schmeißer Birkenbergstraße 14, Leverkusen 5.0 1 health, point_of_interest, establishment
18 Praxis Stock Ergotherapie | Physiotherapie | Logopädie Kölner Str. 60, Leverkusen 4.2 17 health, point_of_interest, establishment
19 Frau Dipl.-Psych. Monika Gfrörer Birkenbergstraße 14, Leverkusen 5.0 1 health, point_of_interest, establishment
20 Dr. Dipl.-Psych. Trientje Helbing, Praxis für Verhaltenstherapie Kölner Str. 126, Leverkusen 5.0 5 health, point_of_interest, establishment
21 Praxisgemeinschaft Ingrid Broch & Gisela Jachertz Düsseldorfer Str. 14, Leverkusen 5.0 2 health, point_of_interest, establishment

View File

@@ -0,0 +1,66 @@
import requests
import pandas as pd
# Google API Key (ersetzen durch deinen Schlüssel)
API_KEY = 'ENTER HERE'
# Base URL für die Google Places API
BASE_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json"
def search_places(query, location, radius=5000):
"""
Sucht Orte basierend auf Query und Standort.
:param query: Suchbegriff (z. B. 'Therapeuten')
:param location: Standort als 'latitude,longitude'
:param radius: Suchradius in Metern (Standard: 5000)
:return: Liste von Orten
"""
params = {
'key': API_KEY,
'keyword': query,
'location': location,
'radius': radius
}
response = requests.get(BASE_URL, params=params, verify=False)
if response.status_code == 200:
return response.json().get('results', [])
else:
print(f"Error: {response.status_code}, {response.text}")
return []
def save_to_csv(data, filename):
"""
Speichert die Daten in einer CSV-Datei.
:param data: Liste von Orten
:param filename: Name der CSV-Datei
"""
df = pd.DataFrame(data)
df.to_csv(filename, index=False)
print(f"Datei gespeichert: {filename}")
def main():
query = input("Gib den Suchbegriff ein (z. B. 'Therapeuten'): ")
location = input("Gib den Standort ein (z. B. '52.5200,13.4050' für Berlin): ")
radius = int(input("Gib den Suchradius in Metern ein (z. B. 5000): "))
places = search_places(query, location, radius)
if places:
formatted_data = [
{
'Name': place.get('name'),
'Adresse': place.get('vicinity'),
'Bewertung': place.get('rating', 'N/A'),
'Anzahl Bewertungen': place.get('user_ratings_total', 'N/A'),
'Typ': ', '.join(place.get('types', []))
}
for place in places
]
save_to_csv(formatted_data, 'places.csv')
else:
print("Keine Ergebnisse gefunden.")
if __name__ == "__main__":
main()