ia-subvention / data /get_les_aides.py
cd@bziiit.com
Update data handling and API request parameters for aides
76f1467
import http.client
import json
conn = http.client.HTTPSConnection("api.les-aides.fr")
payload = ''
headers = {
'X-IDC': 'bcfac1828e5ef1b7cab084379a5f2a871e82ee7c',
}
sirets = [ 88889319500014, 89765311900015, 53476514400025, 89125008600016, 98379850500019 ]
domaines = [893,883,877,790,793,798,802,805,862,807,810,813,816,820,818]
# region = 11
# filieres = [ 341 ] # 341: Automobile
def request(domaines, siret = None):
# ape=A&region=75
conn.request("GET", f"/aides?siret={siret}&domaine={domaines}", payload, headers)
res = conn.getresponse()
data = res.read()
data = json.loads(data.decode("utf-8"))
print(f"Total subventions : {len(data['dispositifs'])}")
for i in range(len(data['dispositifs'])):
data['dispositifs'][i]['idr'] = data['idr']
return data['dispositifs']
def getAide(aide):
try:
conn.request("GET", f"/aide/?requete={aide['idr']}&dispositif={aide['numero']}", payload, headers)
res = conn.getresponse()
aide = json.loads(res.read().decode("utf-8"))
aide["metadata"] = {
"lien": aide['uri'],
"Source": f"https://les-aides.fr/",
"sirets": subventions_sirest[aide['numero']]
}
return aide
except Exception as e:
print(aide)
print(f"Error: {e}")
return None
subventions = []
subventions_sirest = {}
# Split domaines into two sections
domaines_section_2 = "[893,883,877,790,793,798,802]"
domaines_section_1 = "[805,862,807,810,813,816,820,818]"
# Function to add dispositifs to subventions list without duplication
def is_dispositif_exists(numero):
"""Check if a dispositif with given numero exists and return it if found."""
for subvention in subventions:
if isinstance(subvention, dict) and subvention.get("numero") == numero:
return subvention
return None
def add_dispositifs(domaines_section, siret=None):
print(f"Requesting domaines {domaines_section}")
dispositifs = request(domaines_section, siret)
for dispositif in dispositifs:
numero = dispositif.get("numero")
existing = is_dispositif_exists(numero)
if not existing:
subventions.append(dispositif) # Add dispositif to subventions list
if numero in subventions_sirest:
# print(f"Dispositif {numero} already exists for siret {subventions_sirest[numero]}")
subventions_sirest[numero].append(siret)
else:
subventions_sirest[numero] = [siret]
for siret in sirets:
print(f"Requesting siret {siret}")
add_dispositifs(domaines_section_1, siret)
add_dispositifs(domaines_section_2, siret)
# Call request function with different parameters
# for filiere in filieres:
print(f"Nb aides : {subventions_sirest}")
print(f"Nb aides : {len(subventions)}")
for i in range(len(subventions)):
print(f"{subventions[i]['numero']} : {i} / {len(subventions)}")
subventions[i] = getAide(subventions[i])
with open('data/les_aides.json', 'w', encoding='utf-8') as f:
json.dump(subventions, f, ensure_ascii=False, indent=4)