diff --git a/StarRailUID/starrailuid_roleinfo/utils.py b/StarRailUID/starrailuid_roleinfo/utils.py index ef34197..9c09912 100644 --- a/StarRailUID/starrailuid_roleinfo/utils.py +++ b/StarRailUID/starrailuid_roleinfo/utils.py @@ -3,9 +3,13 @@ from typing import List, TypeVar, Generator from PIL import Image from aiohttp import ClientSession +from gsuid_core.data_store import get_res_path T = TypeVar("T") +ROLEINFO_PATH = get_res_path() / 'StarRailUID' / 'roleinfo' +ROLEINFO_PATH.mkdir(parents=True, exist_ok=True) + def wrap_list(lst: List[T], n: int) -> Generator[List[T], None, None]: for i in range(0, len(lst), n): @@ -13,6 +17,14 @@ def wrap_list(lst: List[T], n: int) -> Generator[List[T], None, None]: async def get_icon(url: str) -> Image.Image: - async with ClientSession() as client: - async with client.get(url) as resp: - return Image.open(BytesIO(await resp.read())).convert("RGBA") + name = url.split('/')[-1] + path = ROLEINFO_PATH / name + if (path).exists(): + content = path.read_bytes() + else: + async with ClientSession() as client: + async with client.get(url) as resp: + content = await resp.read() + with open(path, "wb") as f: + f.write(content) + return Image.open(BytesIO(content)).convert("RGBA")