update description parser
This commit is contained in:
@ -1,15 +1,32 @@
|
||||
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.
|
||||
:return: Chaîne de caractères décodée.
|
||||
:param desc_b64: Donnée encodée en base64 représentant un fichier .txt
|
||||
:return: Dictionnaire avec titres comme clés et contenu comme valeurs
|
||||
"""
|
||||
try:
|
||||
# Décodage
|
||||
decoded_bytes = base64.b64decode(desc_b64)
|
||||
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:
|
||||
return f"[Erreur de décodage] {str(e)}"
|
||||
return {"Erreur": f"[Erreur de décodage ou de parsing] {str(e)}"}
|
Reference in New Issue
Block a user