|
import modal |
|
from duckduckgo_search import DDGS |
|
from bs4 import BeautifulSoup |
|
import requests |
|
|
|
|
|
app = modal.App("healthmate-clinic-lookup") |
|
|
|
|
|
image = modal.Image.debian_slim().pip_install( |
|
"duckduckgo_search", |
|
"beautifulsoup4", |
|
"requests", |
|
"fastapi[standard]" |
|
) |
|
|
|
@app.function(image=image) |
|
@modal.fastapi_endpoint() |
|
def search_clinics(city: str) -> list: |
|
""" |
|
Search for clinics near the specified city using DuckDuckGo. |
|
Returns a list of dictionaries containing clinic information. |
|
""" |
|
if not city: |
|
return [{"error": "Please provide a city name"}] |
|
|
|
try: |
|
|
|
with DDGS() as ddgs: |
|
|
|
search_query = f"top medical clinics near {city}" |
|
results = list(ddgs.text(search_query, max_results=3)) |
|
|
|
if not results: |
|
return [{"error": f"No clinics found near {city}"}] |
|
|
|
|
|
clinics = [] |
|
for result in results: |
|
clinic_info = { |
|
"name": result.get("title", "Unknown Clinic"), |
|
"link": result.get("link", "#"), |
|
"description": result.get("body", "No description available") |
|
} |
|
clinics.append(clinic_info) |
|
|
|
return clinics |
|
|
|
except Exception as e: |
|
return [{"error": f"Error searching for clinics: {str(e)}"}] |
|
|
|
@app.local_entrypoint() |
|
def main(): |
|
|
|
results = search_clinics.remote("San Francisco") |
|
print(results) |