fix: Fixed the issue of failing to get nicknames and faces when UID list is too long

This commit is contained in:
LWR
2023-05-30 00:30:25 +08:00
parent ed0c79b67f
commit 93df2cd8a1
+8 -7
View File
@@ -10,7 +10,6 @@ from io import BytesIO
from typing import Tuple, List, Dict, Sized, Optional, Any, Union from typing import Tuple, List, Dict, Sized, Optional, Any, Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from loguru import logger
from . import config from . import config
from .Credential import Credential from .Credential import Credential
@@ -164,12 +163,14 @@ async def get_unames_and_faces_by_uids(uids: List[str]) -> Tuple[List[str], List
face = Image.new("RGBA", (300, 300), (255, 255, 255, 255)) face = Image.new("RGBA", (300, 300), (255, 255, 255, 255))
return face return face
user_info_url = f"https://api.vc.bilibili.com/account/v1/user/cards?uids={','.join(uids)}" infos_list = []
try: uid_lists = split_list(uids, 10)
infos_list = await request("GET", user_info_url) for lst in uid_lists:
except ResponseCodeException as ex: user_info_url = f"https://api.vc.bilibili.com/account/v1/user/cards?uids={','.join(lst)}"
logger.exception("批量获取昵称和头像图片异常", ex) try:
return [], [] infos_list.extend(await request("GET", user_info_url))
except ResponseCodeException:
return [], []
infos = dict(zip([x["mid"] for x in infos_list], infos_list)) infos = dict(zip([x["mid"] for x in infos_list], infos_list))
unames = [infos[int(uid)]["name"] if int(uid) in infos else "" for uid in uids] unames = [infos[int(uid)]["name"] if int(uid) in infos else "" for uid in uids]
download_face_tasks = [ download_face_tasks = [