ia-subvention / data /get_les_aides.py
Add script to get API data and import to vectore store
6236000
import http.client
import json
conn = http.client.HTTPSConnection("api.les-aides.fr")
payload = ''
headers = {
'X-IDC': 'bcfac1828e5ef1b7cab084379a5f2a871e82ee7c',
}
requestID = 23994079
filieres = [ 289, 290 ]
domaines = [893,883,877,790,793,798,802,805,862,807,810,813,816,820,818]
def request(filiere, domaines):
conn.request("GET", f"/aides?ape=A&region=75&domaine={domaines}&filiere={filiere}", 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 get_final_type(types):
return None # Return None if no matching type is found
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"))
# if 'cci' in aide:
# del aide['cci']
# if 'url' in aide:
# del aide['url']
aide["metadata"] = {
# "type_aide": get_final_type(aide["prets"]),
"lien": aide['uri'],
"Source": f"https://les-aides.fr/"
}
return aide
except Exception as e:
print(aide)
print(f"Error: {e}")
return None
subventions = []
# 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 add_dispositifs(filiere, domaines_section):
print(f"Requesting filiere {filiere} and domaines {domaines_section}")
dispositifs = request(filiere, domaines_section)
for dispositif in dispositifs:
if not any(subvention.get("numero") == dispositif["numero"] for subvention in subventions if isinstance(subvention, dict)):
subventions.append(dispositif)
# Call request function with different parameters
for filiere in filieres:
add_dispositifs(filiere, domaines_section_1)
add_dispositifs(filiere, domaines_section_2)
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])
# print(subventions)
with open('data/les_aides.json', 'w', encoding='utf-8') as f:
json.dump(subventions, f, ensure_ascii=False, indent=4)