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

XFEstudio/gpt4free

Add cookies_to_dict for Copilot

408031c9
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +21 -19
Modified g4f/Provider/needs_auth/CopilotAccount.py +21 -19
@@ -10,6 +10,9 @@ from ...typing import AsyncResult, Messages
10 10 from ...errors import NoValidHarFileError
11 11 from ... import debug
12 12
13 def cookies_to_dict():
14 return Copilot._cookies if isinstance(Copilot._cookies, dict) else {c.name: c.value for c in Copilot._cookies}
15
13 16 class CopilotAccount(AsyncAuthedProvider, Copilot):
14 17 needs_auth = True
15 18 use_nodriver = True
@@ -24,21 +27,20 @@ class CopilotAccount(AsyncAuthedProvider, Copilot):
24 27
25 28 @classmethod
26 29 async def on_auth_async(cls, proxy: str = None, **kwargs) -> AsyncIterator:
27 if cls._access_token is None:
28 try:
29 cls._access_token, cls._cookies = readHAR(cls.url)
30 except NoValidHarFileError as h:
31 debug.log(f"Copilot: {h}")
32 if has_nodriver:
33 login_url = os.environ.get("G4F_LOGIN_URL")
34 if login_url:
35 yield RequestLogin(cls.label, login_url)
36 cls._access_token, cls._cookies = await get_access_token_and_cookies(cls.url, proxy)
37 else:
38 raise h
30 try:
31 Copilot._access_token, Copilot._cookies = readHAR(cls.url)
32 except NoValidHarFileError as h:
33 debug.log(f"Copilot: {h}")
34 if has_nodriver:
35 login_url = os.environ.get("G4F_LOGIN_URL")
36 if login_url:
37 yield RequestLogin(cls.label, login_url)
38 Copilot._access_token, Copilot._cookies = await get_access_token_and_cookies(cls.url, proxy)
39 else:
40 raise h
39 41 yield AuthResult(
40 api_key=cls._access_token,
41 cookies=cls._cookies if isinstance(cls._cookies, dict) else {c.name: c.value for c in cls._cookies},
42 api_key=Copilot._access_token,
43 cookies=cookies_to_dict()
42 44 )
43 45
44 46 @classmethod
@@ -49,9 +51,9 @@ class CopilotAccount(AsyncAuthedProvider, Copilot):
49 51 auth_result: AuthResult,
50 52 **kwargs
51 53 ) -> AsyncResult:
52 cls._access_token = getattr(auth_result, "api_key")
53 cls._cookies = getattr(auth_result, "cookies")
54 cls.needs_auth = cls.needs_auth
55 for chunk in cls.create_completion(model, messages, **kwargs):
54 Copilot._access_token = getattr(auth_result, "api_key")
55 Copilot._cookies = getattr(auth_result, "cookies")
56 Copilot.needs_auth = cls.needs_auth
57 for chunk in Copilot.create_completion(model, messages, **kwargs):
56 58 yield chunk
57 auth_result.cookies = cls._cookies if isinstance(cls._cookies, dict) else {c.name: c.value for c in cls._cookies}
59 auth_result.cookies = cookies_to_dict()