import streamlit as st
import json
import base64
# Chargeons un fichier JSON contenant les données
try:
with open("resources.json", "r", encoding='utf-8') as file:
resources = json.load(file)
except Exception as e:
st.error(f"Erreur lors du chargement du fichier JSON : {e}")
resources = []
# Définissons la fonction create_card
def create_card(emoji, title, description, url):
with st.container():
col1, col2 = st.columns([1, 5])
with col1:
st.markdown(f"
{emoji}
", unsafe_allow_html=True)
with col2:
st.subheader(title)
st.write(description)
st.link_button("Ouvrir " + title, url, help=None, type="secondary", disabled=False, use_container_width=True)
st.divider()
# Base64 encoding function for images
def get_image_as_base64(path):
with open(path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode()
# Load image and get base64
image_path = "EDUCA.png"
image_base64 = get_image_as_base64(image_path)
# Display the image with rounded corners
st.markdown(
f'',
unsafe_allow_html=True
)
# Affichage d'un titre pour l'application et d'une barre de recherche
st.title("🏫 Ressources de EDUCA")
search_query = st.text_input("🔍 Recherche", "")
# Filtre les ressources basé sur la recherche
filtered_resources = [res for res in resources if search_query.lower() in res["Nom"].lower() or search_query.lower() in res["Description"].lower()]
# Créons les tabs
tab_all, tab_spaces, tab_models, tab_datasets = st.tabs(["✨ Tout", "🚀 Espaces", "📼 Modèles", "📁 Datasets"])
# Fonction pour afficher les ressources filtrées dans chaque onglet
def show_resources(filtered_resources, category):
displayed_resources = [res for res in filtered_resources if res["Categorie"] == category]
if displayed_resources:
for res in displayed_resources:
create_card(res["Emoji"], res["Nom"], res["Description"], res["Url"])
else:
st.error("🔴 Rien pour le moment.")
# Tab Tout
with tab_all:
st.header("Toutes les ressources")
if filtered_resources:
for res in filtered_resources:
create_card(res["Emoji"], res["Nom"], res["Description"], res["Url"])
else:
st.error("🔴 Aucune ressource ne correspond à votre recherche.")
# Tabs pour chaque catégorie avec les ressources filtrées
with tab_spaces:
st.header("Espaces")
show_resources(filtered_resources, "Space")
with tab_models:
st.header("Modèles")
show_resources(filtered_resources, "Model")
with tab_datasets:
st.header("Datasets")
show_resources(filtered_resources, "Dataset")