Améliorations gestion des images

This commit is contained in:
François Pelletier 2025-06-30 21:20:03 -04:00
parent ef3e875953
commit 3fdb2b7641
13 changed files with 542 additions and 10 deletions

View file

@ -1,6 +1,8 @@
# Importation de la bibliothèque Streamlit
# Streamlit est utilisé pour créer des applications web interactives en Python
import streamlit as st
import re # Pour les expressions régulières
import requests # Pour effectuer des requêtes HTTP
# Définition de la fonction principale pour l'onglet 2 de l'application
def app_tab2():
@ -12,4 +14,29 @@ def app_tab2():
# st.markdown() est utilisé pour rendre du texte formaté en Markdown
# st.session_state est un dictionnaire qui conserve les données entre les rechargements de page
# ['content'] fait référence à la clé où le contenu Markdown est stocké
st.markdown(st.session_state['content'])
markdown_content = st.session_state['markdown']
fabriquedoc_public_endpoint = st.session_state['fabriquedoc_public_endpoint']
bearer_token = st.session_state['bearer_token']
# Regex pour trouver les images Markdown: ![alt text](path/to/image.ext)
# Capture le chemin complet de l'image (y compris les répertoires si présents)
image_pattern = re.compile(r'!\[.*?\]\((.*?)\)')
def replace_image_path(match):
image_path = match.group(1)
# Si le chemin est déjà une URL complète, ne rien faire
if image_path.startswith('http://') or image_path.startswith('https://'):
return match.group(0)
# Construire l'URL complète de l'image
# On suppose que le chemin dans le markdown est juste le nom du fichier ou un chemin relatif simple
# et que le backend sert les images via /images/{nom_fichier}
image_name = image_path.split('/')[-1] # Prend juste le nom du fichier
full_image_url = f"{fabriquedoc_public_endpoint}/images/{image_name}"
return f"![{match.group(0).split('](')[0][2:]}]({full_image_url})"
# Remplacer tous les chemins d'images relatifs par des URLs complètes
processed_markdown_content = image_pattern.sub(replace_image_path, markdown_content)
st.markdown(processed_markdown_content)