fix: add transcription provider fallback
This commit is contained in:
+30
-3
@@ -1,6 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import re
|
||||
from typing import Any
|
||||
|
||||
|
||||
@@ -33,13 +34,39 @@ def summarize_error(body: Any, fallback: str) -> str:
|
||||
if isinstance(err, dict):
|
||||
msg = err.get("message")
|
||||
if isinstance(msg, str) and msg.strip():
|
||||
return msg.strip()
|
||||
return _compact_error_text(msg)
|
||||
|
||||
msg = body.get("message")
|
||||
if isinstance(msg, str) and msg.strip():
|
||||
return msg.strip()
|
||||
return _compact_error_text(msg)
|
||||
|
||||
return fallback
|
||||
return _compact_error_text(fallback)
|
||||
|
||||
|
||||
def _compact_error_text(text: str, limit: int = 240) -> str:
|
||||
clean = text.strip()
|
||||
if not clean:
|
||||
return "Unknown provider error"
|
||||
|
||||
lower = clean.lower()
|
||||
if "<!doctype html" in lower or "<html" in lower:
|
||||
title_match = re.search(r"<title>\s*([^<]+?)\s*</title>", clean, flags=re.IGNORECASE | re.DOTALL)
|
||||
title = re.sub(r"\s+", " ", title_match.group(1)).strip() if title_match else "HTML error page"
|
||||
code_match = re.search(r"(?:error code\s*)?([45]\d{2})", clean, flags=re.IGNORECASE)
|
||||
code = code_match.group(1) if code_match else None
|
||||
phrase = "Bad gateway" if "bad gateway" in lower else title
|
||||
if "cloudflare" in lower or "openrouter.ai" in lower:
|
||||
if code:
|
||||
return f"Cloudflare/OpenRouter returned HTTP {code} {phrase}"
|
||||
return f"Cloudflare/OpenRouter returned {phrase}"
|
||||
if code:
|
||||
return f"Provider returned HTTP {code} HTML error page: {title}"
|
||||
return f"Provider returned HTML error page: {title}"
|
||||
|
||||
clean = re.sub(r"\s+", " ", clean)
|
||||
if len(clean) > limit:
|
||||
return clean[: limit - 1].rstrip() + "…"
|
||||
return clean
|
||||
|
||||
|
||||
def build_transcript_block(display_name: str, transcript: str) -> str:
|
||||
|
||||
Reference in New Issue
Block a user