From 27b6e70471a38eae0a9399fa01b501ac9c66b3fb Mon Sep 17 00:00:00 2001 From: zhishi <1951671751@qq.com> Date: Wed, 8 Apr 2026 20:18:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0url=E8=BD=ACbase64=E9=87=8D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/ai.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/utils/ai.ts b/src/utils/ai.ts index 958d43b..4e1defa 100644 --- a/src/utils/ai.ts +++ b/src/utils/ai.ts @@ -57,12 +57,19 @@ async function withTaskRecord( } } -async function urlToBase64(url: string): Promise { - const res = await axios.get(url, { responseType: "arraybuffer" }); - const base64 = Buffer.from(res.data).toString("base64"); - return `${base64}`; +async function urlToBase64(url: string, retries = 3, delay = 1000): Promise { + for (let attempt = 1; attempt <= retries; attempt++) { + try { + const res = await axios.get(url, { responseType: "arraybuffer" }); + const base64 = Buffer.from(res.data).toString("base64"); + return `${base64}`; + } catch (e) { + if (attempt === retries) throw e; + await new Promise((resolve) => setTimeout(resolve, delay * attempt)); + } + } + throw new Error("urlToBase64 failed"); } - class AiText { private AiType: AiType | `${string}:${string}`; constructor(AiType: AiType | `${string}:${string}`) {