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

XFEstudio/gpt4free

Use custom user dir

136770e0
Heiner Lohaus <heiner@lohaus.eu>
提交于

代码差异

2 个文件 +16 -26
Modified g4f/Provider/OpenaiChat.py +11 -8
@@ -1,7 +1,6 @@
1 1 from __future__ import annotations
2 2
3 import uuid
4 import json
3 import uuid, json, time
5 4
6 5 from .base_provider import AsyncGeneratorProvider
7 6 from .helper import get_browser, get_cookies, format_prompt
@@ -56,8 +55,13 @@ class OpenaiChat(AsyncGeneratorProvider):
56 55 line = line[6:]
57 56 if line == b"[DONE]":
58 57 break
59 line = json.loads(line)
60 if "message" in line and not line["message"]["end_turn"]:
58 try:
59 line = json.loads(line)
60 except:
61 continue
62 if "message" not in line or "message_type" not in line["message"]["metadata"]:
63 continue
64 if line["message"]["metadata"]["message_type"] == "next":
61 65 new_message = line["message"]["content"]["parts"][0]
62 66 yield new_message[len(last_message):]
63 67 last_message = new_message
@@ -68,11 +72,9 @@ class OpenaiChat(AsyncGeneratorProvider):
68 72 from selenium.webdriver.common.by import By
69 73 from selenium.webdriver.support.ui import WebDriverWait
70 74 from selenium.webdriver.support import expected_conditions as EC
71 except ImportError:
72 return
73 75
74 driver = get_browser()
75 if not driver:
76 driver = get_browser()
77 except ImportError:
76 78 return
77 79
78 80 driver.get(f"{cls.url}/")
@@ -83,6 +85,7 @@ class OpenaiChat(AsyncGeneratorProvider):
83 85 javascript = "return (await (await fetch('/api/auth/session')).json())['accessToken']"
84 86 return driver.execute_script(javascript)
85 87 finally:
88 time.sleep(1)
86 89 driver.quit()
87 90
88 91 @classmethod
Modified g4f/Provider/helper.py +5 -18
@@ -2,7 +2,7 @@ from __future__ import annotations
2 2
3 3 import asyncio, sys
4 4 from asyncio import AbstractEventLoop
5
5 from os import path
6 6 import browser_cookie3
7 7
8 8 # Change event loop policy on windows
@@ -60,24 +60,11 @@ def format_prompt(messages: list[dict[str, str]], add_special_tokens=False):
60 60
61 61
62 62 def get_browser(user_data_dir: str = None):
63 try:
64 from undetected_chromedriver import Chrome
65 except ImportError:
66 return None
63 from undetected_chromedriver import Chrome
64 from platformdirs import user_config_dir
67 65
68 def get_user_data_dir():
69 dirs = [
70 '~/.config/google-chrome/Default',
71 '~/.var/app/com.google.Chrome/config/google-chrome/Default',
72 '%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default',
73 '~/Library/Application Support/Google/Chrome/Default',
74 ]
75 from os import path
76 for dir in dirs:
77 dir = path.expandvars(dir)
78 if path.exists(dir):
79 return dir
80 66 if not user_data_dir:
81 user_data_dir = get_user_data_dir()
67 user_data_dir = user_config_dir("g4f")
68 user_data_dir = path.join(user_data_dir, "Default")
82 69
83 70 return Chrome(user_data_dir=user_data_dir)