diff --git a/article_server.py b/article_server.py
index 6900192..42ff928 100644
--- a/article_server.py
+++ b/article_server.py
@@ -493,7 +493,7 @@ def build_index(articles: list[dict]) -> str:
@@ -1038,11 +1038,22 @@ h1{color:#c0392b;}p{color:#888;}
return
result = _nanobanana_generate(prompt, image_urls, aspect_ratio, resolution)
+ # Prüfe auf Transport-Fehler (Netzwerk/HTTP)
if "error" in result:
self._json_reply(500, {"ok": False, "error": result["error"]})
return
-
- task_id = result.get("data", {}).get("taskId", "")
+ # Prüfe auf NanoBanana API-Fehler (code != 0, z.B. 402 = kein Guthaben)
+ api_code = result.get("code", 0)
+ if api_code != 0:
+ api_msg = result.get("msg", "Unbekannter API-Fehler")
+ self._json_reply(500, {"ok": False, "error": f"NanoBanana: {api_msg} (Code {api_code})"})
+ return
+ # Null-Safe: data kann None sein
+ data = result.get("data") or {}
+ task_id = data.get("taskId", "")
+ if not task_id:
+ self._json_reply(500, {"ok": False, "error": "Keine taskId in API-Antwort"})
+ return
self._json_reply(200, {"ok": True, "taskId": task_id})
def _handle_nanobanana_status(self):
@@ -1060,11 +1071,12 @@ h1{color:#c0392b;}p{color:#888;}
self._json_reply(500, {"ok": False, "error": result["error"]})
return
- data = result.get("data", {})
+ # Null-Safe: data kann None sein
+ data = result.get("data") or {}
self._json_reply(200, {
"ok": True,
"successFlag": data.get("successFlag"),
- "resultImageUrl": data.get("response", {}).get("resultImageUrl"),
+ "resultImageUrl": (data.get("response") or {}).get("resultImageUrl"),
"completeTime": data.get("completeTime"),
})
@@ -2064,10 +2076,17 @@ async function startGeneration() {{
method: 'POST',
body: formData
}});
- const data = await resp.json();
+
+ let data;
+ try {{
+ data = await resp.json();
+ }} catch (e) {{
+ const text = await resp.text().catch(() => '');
+ throw new Error('Server-Antwort nicht lesbar (Status ' + resp.status + '): ' + text.substring(0, 200));
+ }}
if (!data.ok) {{
- throw new Error(data.error || 'Unbekannter Fehler');
+ throw new Error(data.error || 'Unbekannter Fehler (Status ' + resp.status + ')');
}}
document.getElementById('spinnerText').textContent = 'Warte auf Ergebnis…';