39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
"""
|
|
Copyright (c) 2020 Sdj Geek
|
|
Voir le fichier LICENSE
|
|
|
|
Classe d'accès aux données du site https://public.opendatasoft.com
|
|
|
|
"""
|
|
|
|
import requests
|
|
|
|
|
|
def get_ville_from_cog(cog):
|
|
"""
|
|
Donne le nom de la commune (et son code postal) correspondant au code officiel géographique (cog) donné en entrée.
|
|
|
|
:param cog: le code officiel géographique à convertie
|
|
:return: le nom de la commune (et son code postal). None si la recherche a échoué.
|
|
"""
|
|
# Contacter l'API
|
|
r = requests.get("https://public.opendatasoft.com/api/records/1.0/search/",
|
|
params={'dataset': "correspondance-code-insee-code-postal",
|
|
'q': f"insee_com={cog}",
|
|
'lang': "fr"},
|
|
headers={'Accept': "application/json"})
|
|
# Tester la validité de la réponse
|
|
try:
|
|
r.raise_for_status()
|
|
except requests.HTTPError:
|
|
print(f"Warning get_ville_from_cog: requests return status {r.headers}")
|
|
return None
|
|
# Récupérer le résultat
|
|
result = r.json()
|
|
# Si résultat non vide
|
|
if result['nhits'] > 0:
|
|
# COMMUNE (CODE POSTAL)
|
|
return f"{result['records'][0]['fields']['nom_comm']} ({result['records'][0]['fields']['postal_code']})"
|
|
print(f"Warning get_ville_from_cog: no result returned for cog {cog}")
|
|
return None
|