Spaces:
Build error
Build error
| import gradio as gr | |
| import json | |
| from PIL import Image | |
| import numpy as np | |
| # --- User Defined Logic --- | |
| import requests | |
| from typing import Dict, Any | |
| def meteo(ville: str) -> str: | |
| """ | |
| Récupère la température actuelle (en °C) pour une ville donnée en utilisant l'API gratuite Open-Meteo. | |
| Args: | |
| ville (str): Nom de la ville (ex: "Paris", "Lyon", "Marseille"). | |
| Returns: | |
| str: Chaîne décrivant la température actuelle dans la ville spécifiée. | |
| En cas d'erreur, retourne un message explicite. | |
| """ | |
| # Géocodage simple : on utilise une API Nominatim (OpenStreetMap) sans clé | |
| geo_url = "https://nominatim.openstreetmap.org/search" | |
| geo_params = { | |
| "q": ville, | |
| "format": "json", | |
| "limit": 1 | |
| } | |
| headers = {"User-Agent": "gradio-mcp-demo/1.0"} | |
| try: | |
| geo_resp = requests.get(geo_url, params=geo_params, headers=headers, timeout=10) | |
| geo_resp.raise_for_status() | |
| geo_data = geo_resp.json() | |
| if not geo_data: | |
| return f"Ville '{ville}' introuvable." | |
| lat = float(geo_data[0]["lat"]) | |
| lon = float(geo_data[0]["lon"]) | |
| except Exception as e: | |
| return f"Erreur géocodage : {e}" | |
| # Appel météo via Open-Meteo (pas de clé requise) | |
| meteo_url = "https://api.open-meteo.com/v1/forecast" | |
| meteo_params = { | |
| "latitude": lat, | |
| "longitude": lon, | |
| "current_weather": True, | |
| "temperature_unit": "celsius" | |
| } | |
| try: | |
| meteo_resp = requests.get(meteo_url, params=meteo_params, timeout=10) | |
| meteo_resp.raise_for_status() | |
| data = meteo_resp.json() | |
| temp = data["current_weather"]["temperature"] | |
| return f"Température actuelle à {ville} : {temp} °C" | |
| except Exception as e: | |
| return f"Erreur météo : {e}" | |
| # --- Interface Factory --- | |
| def create_interface(): | |
| return gr.Interface( | |
| fn=meteo, | |
| inputs=[gr.Textbox(label=k) for k in ['ville']], | |
| outputs=gr.Textbox(label="Température actuelle dans la ville"), | |
| title="meteo", | |
| description="Auto-generated tool: meteo" | |
| ) |