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)