update description parser

This commit is contained in:
robinrolle
2025-04-13 08:21:39 +02:00
parent d87c8f948d
commit c16a9ae2a1

View File

@ -1,15 +1,32 @@
import base64 import base64
import re
from typing import Dict
def process_description(desc_b64: str) -> str: def process_description(desc_b64: str) -> Dict[str, str]:
""" """
Décode une chaîne base64 et retourne le texte UTF-8 correspondant. Décode une chaîne Base64, puis découpe le texte en sections à partir des titres suivis de ':'.
:param base64_text: Donnée encodée en base64. :param desc_b64: Donnée encodée en base64 représentant un fichier .txt
:return: Chaîne de caractères décodée. :return: Dictionnaire avec titres comme clés et contenu comme valeurs
""" """
try: try:
# Décodage
decoded_bytes = base64.b64decode(desc_b64) decoded_bytes = base64.b64decode(desc_b64)
decoded_text = decoded_bytes.decode('utf-8') decoded_text = decoded_bytes.decode('utf-8')
return decoded_text
# Expression régulière pour matcher les titres suivis de ':'
pattern = r'(?P<title>[\w\s]+):\s*'
# Split tout en gardant les titres
parts = re.split(pattern, decoded_text)
# Le premier élément de `parts` est ce qui précède le 1er titre (souvent vide)
chunks = {}
for i in range(1, len(parts), 2):
title = parts[i].strip()
content = parts[i+1].strip() if (i + 1) < len(parts) else ""
chunks[title] = content
return chunks
except Exception as e: except Exception as e:
return f"[Erreur de décodage] {str(e)}" return {"Erreur": f"[Erreur de décodage ou de parsing] {str(e)}"}