From 00c47a3e558a2ec6e14ee3da09c3e6de6ad47142 Mon Sep 17 00:00:00 2001 From: John Smith Date: Sat, 26 Aug 2023 16:21:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=80=E4=BA=9B=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/avatar.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/avatar.py b/services/avatar.py index eed6dfe..dac6eb8 100644 --- a/services/avatar.py +++ b/services/avatar.py @@ -319,7 +319,7 @@ class UserSpaceAvatarFetcher(AvatarFetcher): async def _do_fetch(self, user_id) -> Optional[str]: if self._wbi_key == '': - self._wbi_key = await self._get_wbi_key() + await self._refresh_wbi_key() if self._wbi_key == '': return None @@ -341,6 +341,7 @@ class UserSpaceAvatarFetcher(AvatarFetcher): if r.status == 412: # 被B站ban了 self._cool_down(3 * 60) + await self._refresh_wbi_key() return None data = await r.json() except (aiohttp.ClientConnectionError, asyncio.TimeoutError): @@ -355,13 +356,20 @@ class UserSpaceAvatarFetcher(AvatarFetcher): if code == -401: # 被B站ban了 self._cool_down(3 * 60) + await self._refresh_wbi_key() elif code == -403: # 签名错误 self._wbi_key = '' + await self._refresh_wbi_key() return None return process_avatar_url(data['data']['face']) + async def _refresh_wbi_key(self): + wbi_key = await self._get_wbi_key() + if wbi_key != '': + self._wbi_key = wbi_key + async def _get_wbi_key(self): try: async with utils.request.http_session.get( @@ -519,7 +527,8 @@ class GameUserCenterAvatarFetcher(AvatarFetcher): } ) as r: if r.status != 200: - logger.warning( + # 这个接口经常502 + logger.info( 'GameUserCenterAvatarFetcher failed to fetch avatar: status=%d %s uid=%d', r.status, r.reason, user_id )