Spaces:
Running
Running
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®ion=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) |