Spaces:
Sleeping
Sleeping
| import requests | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| app = FastAPI() | |
| # Modelo de datos para la solicitud POST | |
| class ConsultaRequest(BaseModel): | |
| consulta: str | |
| # --- Configuración de Google CSE --- | |
| API_KEY = "AIzaSyAej8rDfcGTBKos8UtOSJ8KYyfwK9QLa1k" | |
| CX = "d453e209e2d3042bd" | |
| def busqueda_google(consulta: str): | |
| """ | |
| Busca en Google CSE y devuelve los dos primeros resultados. | |
| """ | |
| try: | |
| url = "https://www.googleapis.com/customsearch/v1" | |
| params = { | |
| "q": consulta, | |
| "key": API_KEY, | |
| "cx": CX, | |
| "hl": "es" | |
| } | |
| response = requests.get(url, params=params) | |
| data = response.json() | |
| if "items" not in data: | |
| return None | |
| items = data["items"][:2] | |
| resultados = { | |
| f"resultado_{i+1}": { | |
| "texto": it.get("title"), | |
| "url": it.get("link") | |
| } | |
| for i, it in enumerate(items) | |
| } | |
| return resultados if resultados else None | |
| except Exception as e: | |
| print(f"Error en la búsqueda de Google CSE: {e}") | |
| return None | |
| async def buscar(request_body: ConsultaRequest): | |
| """ | |
| Endpoint principal para la búsqueda. | |
| """ | |
| consulta = request_body.consulta | |
| if not consulta: | |
| return {"error": "Falta la consulta"}, 400 | |
| print(f"Consulta recibida: {consulta}") | |
| resultado = busqueda_google(consulta) | |
| if resultado: | |
| return { | |
| "tipo": "google_web", | |
| "resultados": resultado | |
| } | |
| return {"error": "No se encontraron resultados"}, 404 | |
| # Para Hugging Face Spaces | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |