From eddd3e42a15b1ebd0c86bcdb3ef0de425c8e983c Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Fri, 6 Sep 2024 11:33:39 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BF=AE=E6=94=B9=5Fchoose=5Fcook?= =?UTF-8?q?ie=E7=9A=84=E9=80=BB=E8=BE=91=E4=BB=A5=E6=94=AF=E6=8C=81no=20ta?= =?UTF-8?q?rget=E7=9A=84Platform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/utils/site.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/nonebot_bison/utils/site.py b/nonebot_bison/utils/site.py index 56f7132..752dc3c 100644 --- a/nonebot_bison/utils/site.py +++ b/nonebot_bison/utils/site.py @@ -86,7 +86,7 @@ class CookieClientManager(ClientManager): return text_fletten(f"{cookie.platform_name} [{cookie.content[:10]}]") - def _generate_hook(self, cookie: Cookie): + def _generate_hook(self, cookie: Cookie) -> callable: """hook 函数生成器,用于回写请求状态到数据库""" async def _response_hook(resp: httpx.Response): @@ -103,12 +103,9 @@ class CookieClientManager(ClientManager): async def _choose_cookie(self, target: Target) -> Cookie: """选择 cookie 的具体算法""" - if not target: - return Cookie(content="{}") - cookies = [ - *(await config.get_cookie_by_target(target, self._platform_name)), - *(await config.get_universal_cookie(self._platform_name)), - ] + cookies = await config.get_universal_cookie(self._platform_name) + if target: + cookies += await config.get_cookie(self._platform_name, target) cookies = (cookie for cookie in cookies if cookie.last_usage + timedelta(seconds=cookie.cd) < datetime.now()) cookie = min(cookies, key=lambda x: x.last_usage) return cookie @@ -128,7 +125,8 @@ class CookieClientManager(ClientManager): return await self._assemble_client(client, cookie) - async def _assemble_client(self, client, cookie): + async def _assemble_client(self, client, cookie) -> AsyncClient: + """组装 client,可以自定义 cookie 对象的 content 装配到 client 中的方式""" cookies = httpx.Cookies() if cookie: cookies.update(json.loads(cookie.content))