Spaces:
Sleeping
Sleeping
Gestion des réponses farfelues
Browse files
app.py
CHANGED
|
@@ -67,20 +67,24 @@ def rechercher_article(articleSource):
|
|
| 67 |
|
| 68 |
def extract_json_from_response(response):
|
| 69 |
"""
|
| 70 |
-
Extrait le JSON d'une chaîne de texte contenant potentiellement du texte en vrac.
|
| 71 |
Retourne un objet Python (dict) ou None si extraction impossible.
|
| 72 |
"""
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
if matches:
|
| 77 |
-
json_str = matches[0]
|
| 78 |
try:
|
| 79 |
-
return json.loads(
|
| 80 |
-
except Exception
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
print("Aucun JSON trouvé dans la réponse.")
|
| 85 |
return None
|
| 86 |
|
|
|
|
| 67 |
|
| 68 |
def extract_json_from_response(response):
|
| 69 |
"""
|
| 70 |
+
Extrait le premier bloc JSON valide d'une chaîne de texte contenant potentiellement du texte en vrac.
|
| 71 |
Retourne un objet Python (dict) ou None si extraction impossible.
|
| 72 |
"""
|
| 73 |
+
# Recherche tous les blocs JSON potentiels dans la réponse
|
| 74 |
+
json_candidates = re.findall(r'({[\s\S]*?})', response)
|
| 75 |
+
for candidate in json_candidates:
|
|
|
|
|
|
|
| 76 |
try:
|
| 77 |
+
return json.loads(candidate)
|
| 78 |
+
except Exception:
|
| 79 |
+
continue
|
| 80 |
+
# Si aucun bloc JSON valide trouvé, essayer de corriger les crochets manquants
|
| 81 |
+
try:
|
| 82 |
+
start = response.index('{')
|
| 83 |
+
end = response.rindex('}') + 1
|
| 84 |
+
json_str = response[start:end]
|
| 85 |
+
return json.loads(json_str)
|
| 86 |
+
except Exception as e:
|
| 87 |
+
print("Erreur lors du parsing JSON extrait:", e)
|
| 88 |
print("Aucun JSON trouvé dans la réponse.")
|
| 89 |
return None
|
| 90 |
|