dan92 commited on
Commit
b99533f
·
verified ·
1 Parent(s): e782ba9

Upload index.js

Browse files
Files changed (1) hide show
  1. index.js +51 -37
index.js CHANGED
@@ -560,55 +560,69 @@ async function handleNormalResponse(response, model, res) {
560
  Utils.handleError(error, res);
561
  }
562
  }
 
563
  async function handleImageResponse(imageUrl) {
564
- //对服务器发送图片请求
565
- const MAX_RETRIES = 3;
566
- let retryCount = 0;
567
- let imageBase64Response;
 
568
 
569
- while (retryCount < MAX_RETRIES) {
570
- try {
571
- //发送图片请求获取图片
572
- imageBase64Response = await fetch(`https://assets.grok.com/${imageUrl}`, {
573
- method: 'GET',
574
- headers: {
575
- ...DEFAULT_HEADERS,
576
- ...CONFIG.API.SIGNATURE_COOKIE
577
- }
578
- });
579
 
580
- if (imageBase64Response.ok) {
581
- break; // 如果请求成功,跳出重试循环
582
- }
583
 
584
- retryCount++;
585
- if (retryCount === MAX_RETRIES) {
586
- throw new Error(`上游服务请求失败! status: ${imageBase64Response.status}`);
587
- }
588
 
589
- // 等待一段时间后重试(可以使用指数退避)
590
- await new Promise(resolve => setTimeout(resolve, 500 * retryCount));
591
 
592
- } catch (error) {
593
- retryCount++;
594
- if (retryCount === MAX_RETRIES) {
595
- throw error;
 
 
 
596
  }
597
- // 等待一段时间后重试
598
- await new Promise(resolve => setTimeout(resolve, 500 * retryCount));
599
  }
600
- }
601
 
602
- const arrayBuffer = await imageBase64Response.arrayBuffer();
603
- const imagebuffer = Buffer.from(arrayBuffer);
604
 
605
- const base64String = imagebuffer.toString('base64');
606
 
607
- // 获取图片类型(例如:image/jpeg, image/png)
608
- const imageContentType = imageBase64Response.headers.get('content-type');
609
 
610
- // 构建 Data URL返回
611
- return `data:${imageContentType};base64,${base64String}`;
 
 
 
 
 
 
 
 
 
 
 
 
612
  }
613
 
614
  // 404处理
 
560
  Utils.handleError(error, res);
561
  }
562
  }
563
+
564
  async function handleImageResponse(imageUrl) {
565
+ try {
566
+ //对服务器发送图片请求
567
+ const MAX_RETRIES = 3;
568
+ let retryCount = 0;
569
+ let imageBase64Response;
570
 
571
+ while (retryCount < MAX_RETRIES) {
572
+ try {
573
+ //发送图片请求获取图片
574
+ imageBase64Response = await fetch(`https://assets.grok.com/${imageUrl}`, {
575
+ method: 'GET',
576
+ headers: {
577
+ ...DEFAULT_HEADERS,
578
+ ...CONFIG.API.SIGNATURE_COOKIE
579
+ }
580
+ });
581
 
582
+ if (imageBase64Response.ok) {
583
+ break; // 如果请求成功,跳出重试循环
584
+ }
585
 
586
+ retryCount++;
587
+ if (retryCount === MAX_RETRIES) {
588
+ throw new Error(`上游服务请求失败! status: ${imageBase64Response.status}`);
589
+ }
590
 
591
+ // 等待一段时间后重试(可以使用指数退避)
592
+ await new Promise(resolve => setTimeout(resolve, 500 * retryCount));
593
 
594
+ } catch (error) {
595
+ retryCount++;
596
+ if (retryCount === MAX_RETRIES) {
597
+ throw error;
598
+ }
599
+ // 等待一段时间后重试
600
+ await new Promise(resolve => setTimeout(resolve, 500 * retryCount));
601
  }
 
 
602
  }
 
603
 
604
+ const arrayBuffer = await imageBase64Response.arrayBuffer();
605
+ const imagebuffer = Buffer.from(arrayBuffer);
606
 
607
+ const base64String = imagebuffer.toString('base64');
608
 
609
+ // 获取图片类型(例如:image/jpeg, image/png)
610
+ const imageContentType = imageBase64Response.headers.get('content-type');
611
 
612
+ // 修改返回结构,确保返回Markdown格式的图片标签
613
+ return {
614
+ type: "image_url",
615
+ image_url: {
616
+ url: `data:image/jpg;base64,${base64String}`
617
+ }
618
+ };
619
+
620
+ // 或者如果需要直接返回可显示的字符串
621
+ // return `![generated image](data:image/jpg;base64,${base64String})`;
622
+ } catch (error) {
623
+ console.error('图片处理失败:', error);
624
+ return '图片生成失败';
625
+ }
626
  }
627
 
628
  // 404处理