Spaces:
Runtime error
Runtime error
import requests | |
import json | |
import os | |
import datetime | |
from typing import List, Dict | |
SKITOUR_API_URL = 'https://skitour.fr/api/' | |
def get_massifs() -> List[Dict]: | |
""" | |
Fetch the list of massifs from the Skitour API. | |
Returns: | |
List[Dict]: List of massifs with their details. | |
""" | |
url = SKITOUR_API_URL + 'massifs' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
response = requests.get(url, headers=headers, timeout=10) | |
return response.json() | |
def get_topos(ids_massif: str) -> List[Dict]: | |
""" | |
Fetch ski touring itineraries for a given massif. | |
Args: | |
ids_massif (str): ID of the massif. | |
Returns: | |
List[Dict]: List of itineraries for the specified massif. | |
""" | |
url = SKITOUR_API_URL + 'topos' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
params = {'m': ids_massif} | |
response = requests.get(url, headers=headers, params=params, timeout=10) | |
return json.loads(response.text.replace('\\\\', '\\')) | |
def get_sommets(massif_id: str) -> List[Dict]: | |
""" | |
Fetch the list of summits for a given massif. | |
Args: | |
massif_id (str): ID of the massif. | |
Returns: | |
List[Dict]: List of summits with their details. | |
""" | |
url = SKITOUR_API_URL + 'sommets' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
params = {'m': massif_id} | |
response = requests.get(url, headers=headers, params=params) | |
response = response.json() | |
sommets = [] | |
for _sommets in response: | |
sommets.append({ | |
"name": _sommets['sommet'], | |
"lat": float(_sommets['latlon'][0]), | |
"lon": float(_sommets['latlon'][1]), | |
"range": _sommets['massif']['nom'] | |
}) | |
return sommets | |
def get_refuges(massif_ids: str) -> List[Dict]: | |
""" | |
Fetch the list of refuges for a given massif. | |
Args: | |
massif_ids (str): ID(s) of the massif(s). | |
Returns: | |
List[Dict]: List of refuges. | |
""" | |
url = SKITOUR_API_URL + 'refuges' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
params = {'m': massif_ids} | |
response = requests.get(url, headers=headers, params=params, timeout=10) | |
return response.json() | |
def get_details_topo(id_topo): | |
url = SKITOUR_API_URL + f'topo/{id_topo}' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
response = requests.get(url, headers=headers) | |
return response.json() | |
def get_conditions(massif_ids: str) -> List[Dict]: | |
""" | |
Fetch the list of refuges for a given massif. | |
Args: | |
massif_ids (str): ID(s) of the massif(s). | |
Returns: | |
List[Dict]: List of refuges. | |
""" | |
url = SKITOUR_API_URL + 'refuges' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
params = {'m': massif_ids} | |
response = requests.get(url, headers=headers, params=params, timeout=10) | |
return response.json() | |
def get_outing(id_outing: str) -> Dict: | |
""" | |
Fetch the details of a specific outing. | |
Args: | |
id_outing (str): ID of the outing. | |
Returns: | |
Dict: Details of the outing. | |
""" | |
url = SKITOUR_API_URL + f'sortie/{id_outing}' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
response = requests.get(url, headers=headers, timeout=10) | |
return response.json() | |
def get_recent_outings(massif_id: str) -> List[Dict]: | |
""" | |
Fetch the list of recent outings for a given massif. | |
Args: | |
massif_id (str): ID of the massif. | |
Returns: | |
List[Dict]: List of recent outings. | |
""" | |
url = SKITOUR_API_URL + 'sorties' | |
headers = {'cle': os.getenv('SKITOUR_API_TOKEN')} | |
params = {'m': massif_id, 'j':30} | |
response = requests.get(url, headers=headers, params=params, timeout=10) | |
response = response.json() | |
if response: | |
for _response in response: | |
_response['date'] = datetime.datetime.fromtimestamp(float(_response['date'])).strftime('%Y-%m-%d') | |
_response['description'] = get_outing(_response['id']) | |
return response | |
else: | |
return [] | |