XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Update providders.html

1f958d87
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

4 个文件 +11 -20
Modified g4f/Provider/needs_auth/Gemini.py +0 -2
@@ -768,7 +768,6 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
768 768 response = None
769 769 for attempt in range(max_retries + 1):
770 770 try:
771 print(f"Attempt {attempt + 1} for Gemini request to model {model}")
772 771 response = await session.post(
773 772 f"{cls.url}{prefix}{REQUEST_PATH}",
774 773 data=data,
@@ -838,7 +837,6 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
838 837 response.content, stream_timeout
839 838 ):
840 839 line_text = line_text.strip()
841 print(f"Received line: {line_text}")
842 840 error_buffer = (error_buffer + line_text)[-4096:]
843 841 error_match = BARD_ERROR_PATTERN.search(error_buffer)
844 842 if error_match:
Modified g4f/Provider/search/GoogleAiMode.py +3 -5
@@ -45,17 +45,15 @@ class GoogleAiMode(GoogleSearch):
45 45 search_results = await cls._read_search_results(session)
46 46 if search_results:
47 47 yield search_results
48 yield "\n\n---\n\n"
48 yield "\n\n---\n\n"
49 49 except Exception as e:
50 50 debug.log(f"Google Search: Error reading search results: {e}")
51 51 await session.close()
52 52 raise e
53 53
54 # Enable AI mode if model is ai-mode
55 54 try:
56 for _ in range(10):
55 for _ in range(5):
57 56 result = await session.evaluate_js("""const b =Array.from(document.querySelectorAll("a, button")).filter(a=>a.textContent.endsWith("KI‑Modus") || a.textContent.endsWith("AI-Mode")).pop(); b ? b.click() : null; !!b""")
58 debug.log(f"Google Search: Attempted #{_+1} to enable AI mode, result: {result}")
59 57 await asyncio.sleep(1)
60 58 if not result:
61 59 continue
@@ -108,7 +106,7 @@ for (let l of lines) {
108 106 // Dekodiere Hex-Escapes wie \x3d (=) am Ende des Base64-Strings
109 107 const base64Data = imgMatch[2].replace(/\\x([0-9a-fA-F]{2})/g, (_, h) => String.fromCharCode(parseInt(h, 16)));
110 108 // Ersetze nur den _setImageSrc-Aufruf, behalte umgebenden Text
111 l = l.replace(imgMatch[0], `\n![Bild](${base64Data})`);
109 l = l.replace(imgMatch[0], ''); // `\n![Bild](${base64Data})`);
112 110 }
113 111
114 112 // Behebt den fehlerhaften Regex für die Datei-Metadaten am Zeilenende
Modified g4f/gui/server/website.py +8 -4
@@ -360,13 +360,17 @@ class Website:
360 360 const previewImg = getImage("{p['name']}")
361 361 img.parentElement.appendChild(previewImg);
362 362 let n = 1;
363 let previewRemoved = false;
363 364 const orgSrc = img.dataset.src;
364 365 img.onload = () => {{
365 img.parentElement.removeChild(previewImg);
366 n = n + 1;
366 if (!previewRemoved && previewImg.parentNode) {{
367 previewImg.parentNode.removeChild(previewImg);
368 previewRemoved = true;
369 }}
370 n = n + 1;
367 371 if (n <= 3) {{
368 372 setTimeout(() => {{
369 img.src = orgSrc + `_${{n}}.jpg`;
373 img.src = orgSrc + `_${{n}}.webp`;
370 374 }}, 1000);
371 375 }}
372 376 }};
@@ -375,7 +379,7 @@ class Website:
375 379 img.src = 'https://image.thum.io/get/width/600/{logo_url}';
376 380 return;
377 381 }}
378 if (imgs.src == orgSrc) return;
382 if (img.src == orgSrc) return;
379 383 n = 3; // Stop carousel on error
380 384 img.src = orgSrc;
381 385 }};
Modified g4f/requests/cdp.py +0 -9
@@ -836,15 +836,6 @@ class CDPSession:
836 836 output = BytesIO()
837 837 image.save(output, format="WEBP", quality=85, method=6)
838 838 image_bytes = output.getvalue()
839
840 # Try to click any "Accept" or "Einwilligen" cookie consent buttons
841 for _ in range(5):
842 debug.log("Attempting to click accept button...")
843 await asyncio.sleep(1)
844 if await self.click_accept_button():
845 debug.log("Clicked accept button.")
846 await asyncio.sleep(1)
847 break
848 839
849 840 Path(filepath).write_bytes(image_bytes)
850 841 return filepath