OpenData-Bordeaux-RSE / data_manager_bziiit.py
cdupland
Refactor API endpoint for prompts to use /opendata instead of /public
fe870ca
import requests
import streamlit as st
# URL de base de l'API bziiit
BASE_URL = "https://bziiitapi-api.azurewebsites.net"
# Fonction de récupération des labels
def get_labels():
url = f"{BASE_URL}/opendata/labels"
response = requests.get(url)
if response.status_code == 200:
return response.json()["response"]
else:
st.error(f"Échec de récupération des labels: {response.text}")
return []
# Fonction de récupération des projets RSE
def get_rse_projects():
url = f"{BASE_URL}/opendata/bordeaux-rse/projects"
response = requests.get(url)
if response.status_code == 200:
return response.json()["response"]
else:
st.error(f"Échec de récupération des projets RSE: {response.text}")
return []
# Fonction de récupération des entreprises
def get_engaged_brands():
url = f"{BASE_URL}/opendata/bordeaux-rse/brands"
response = requests.get(url)
if response.status_code == 200:
return response.json()["response"]
else:
st.error(f"Échec de récupération des marques engagées: {response.text}")
return []
# Fonction de récupération des prompts
def get_prompts():
url = f"{BASE_URL}/opendata/prompts"
response = requests.get(url)
if response.status_code == 200:
return response.json()["response"]
else:
st.error(f"Échec de récupération des marques engagées: {response.text}")
return []
def get_prompt_by_id(id):
prompts = get_prompts()
for prompt in prompts:
if prompt.get('id') == id:
return prompt
# Fonction consolidant les données labels + projets RSE + marques
def get_bziiit_data():
labels = get_labels()
rse_projects = get_rse_projects()
engaged_brands = get_engaged_brands()
bziiit_data = []
# Assurez-vous d'utiliser 'name' pour bziiit data et ajoutez une distinction de type
for label in labels:
bziiit_data.append({
'type': 'label', # Ajout du type
'name': label.get('name', 'Unknown'),
'description': label.get('description', 'Unknown'),
'logo_url': label.get('logo_url', 'Unknown'),
'labels': [label] # Stocke l'objet label entier si nécessaire
})
for project in rse_projects:
bziiit_data.append({
'type': 'project', # Ajout du type
'name': project.get('name', 'Unknown'),
'labels': project.get('labels', []) # Assurez-vous que 'labels' est une liste dans le JSON de réponse
})
for brand in engaged_brands:
bziiit_data.append({
'type': 'brand', # Ajout du type
'name': brand.get('name', 'Unknown'),
'logo_url': brand.get('logo_url', 'Unknown'), # Assurez-vous que 'logo_url' est une URL valide
'description': brand.get('description', 'Unknown'),
'labels': brand.get('labels', [])
})
return bziiit_data