Spaces:
Runtime error
Runtime error
| import requests | |
| _geo_cache = {} | |
| def city_to_coordinates(city): | |
| """Convert a city name to (lat, lon) using Open-Meteo's geocoding API.""" | |
| if city in _geo_cache: | |
| return _geo_cache[city] | |
| url = "https://geocoding-api.open-meteo.com/v1/search" | |
| params = { | |
| "name": city.strip(), | |
| "count": 1, | |
| "format": "json" | |
| } | |
| try: | |
| response = requests.get(url, params=params, timeout=10) | |
| response.raise_for_status() | |
| data = response.json() | |
| results = data.get("results") | |
| if not results: | |
| return None | |
| coords = (results[0]["latitude"], results[0]["longitude"]) | |
| _geo_cache[city] = coords | |
| return coords | |
| except (requests.RequestException, ValueError) as e: | |
| print(f"city_to_coordinates failed for '{city}': {e}") | |
| return None | |