import http.client import json conn = http.client.HTTPSConnection("aides-territoires.beta.gouv.fr") headersConnexion = { 'X-AUTH-TOKEN': 'eeb481e42950f1dbfc46dc348e6e32a0c631cc5b94dd7ab874a30c027f9de87c', } def connexion(): conn.request("POST", "/api/connexion/", '', headersConnexion) data = conn.getresponse().read() return json.loads(data.decode("utf-8"))['token'] def get_final_type(types): type_mapping = { "Subvention": 2, "Prêt": 1, "Avance récupérable": 1, "Certificat d'économie d'énergie (CEE)": 4, "Autre aide financière": 4, "Ingénierie technique": 4, "Ingénierie financière": 4, "Ingénierie Juridique / administrative": 4 } final_type_mapping = { 1: "Avance − Prêts − Garanties", 2: "Subvention", 3: "Prise en charge des coûts et allègement des charges", 4: "Autres" } for t in types: if t in type_mapping: return final_type_mapping[type_mapping[t]] return None # Return None if no matching type is found def request(): subventions = [] page = 1 while True: conn.request("GET", f"/api/aids/?page={page}&organization_type_slugs=farmer&perimeter_id=70971-nouvelle-aquitaine", '', headersRequest) res = conn.getresponse().read() resData = res.decode("utf-8") data = json.loads(resData) subventions += data['results'] if data['next'] is None: break page += 1 print(f"Total subventions : {len(data['results'])}") return subventions token = connexion() headersRequest = { 'Authorization': 'Bearer ' + token, } aides = request() print(f"Nb aides : {len(aides)}") for aide in aides: aide["metadata"] = { "type_aide": get_final_type(aide["aid_types"]), "lien": f"https://aides-territoires.beta.gouv.fr/aides/{aide['slug']}", "Source": f"https://aides-territoires.beta.gouv.fr" } # print(subventions) with open('aides_territoires.json', 'w', encoding='utf-8') as f: json.dump(aides, f, ensure_ascii=False, indent=4)