alpine-agent / src /skitour_api.py
florentgbelidji's picture
Added source modules of the app
7f4e4c3
raw
history blame
4.03 kB
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 []