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