Fix: NanoBanana null-safe handling + bessere Fehlermeldungen
- _handle_nanobanana_generate: Prüfe code!=0 (z.B. 402=kein Guthaben), data=None-Safe - _handle_nanobanana_status: data=None-Safe + response=None-Safe - JavaScript: Bessere Fehlermeldung wenn resp.json() fehlschlägt - Verhindert 'NoneType' object has no attribute 'get' Crash
This commit is contained in:
+26
-7
@@ -493,7 +493,7 @@ def build_index(articles: list[dict]) -> str:
|
||||
<header>
|
||||
<div class="header-inner">
|
||||
<h1>Artikel-Übersicht</h1>
|
||||
<p class="subtitle">{count} Artikel im Archiv · <a href="/?key={ACCESS_TOKEN}">Aktualisieren</a><span class="token-indicator">{token_status}</span></p>
|
||||
<p class="subtitle">{count} Artikel im Archiv · <a href="/?key={ACCESS_TOKEN}">Aktualisieren</a> · <a href="/nanobanana?key={ACCESS_TOKEN}" style="font-weight:600">🎨 Bild-Generator</a><span class="token-indicator">{token_status}</span></p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container">
|
||||
@@ -1038,11 +1038,22 @@ h1{color:#c0392b;}p{color:#888;}</style></head>
|
||||
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;}</style></head>
|
||||
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…';
|
||||
|
||||
Reference in New Issue
Block a user