From b1660bb9d6002a21bd40a82c99a690c385dccd71 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Sun, 16 Apr 2023 03:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0=E8=89=B2?= =?UTF-8?q?=E5=9B=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + plugins/send_setu_/_model.py | 8 ++++---- plugins/send_setu_/update_setu/data_source.py | 18 ++++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 44943447..d79fd8d0 100644 --- a/README.md +++ b/README.md @@ -334,6 +334,7 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能 ### 2023/4/16 * 修复开箱更新未登录时没有停止更新 +* 修复更新色图问题 ### 2023/4/5 diff --git a/plugins/send_setu_/_model.py b/plugins/send_setu_/_model.py index 82f52c3b..ba2920ec 100644 --- a/plugins/send_setu_/_model.py +++ b/plugins/send_setu_/_model.py @@ -19,7 +19,7 @@ class Setu(Model): """作者""" pid = fields.BigIntField() """pid""" - img_hash = fields.TextField() + img_hash: str = fields.TextField() """图片hash""" img_url = fields.CharField(255) """pixiv url链接""" @@ -64,16 +64,16 @@ class Setu(Model): return await query.all() @classmethod - async def delete_image(cls, pid: int) -> int: + async def delete_image(cls, pid: int, img_url: str) -> int: """ 说明: 删除图片并替换 参数: :param pid: 图片pid """ + print(pid) return_id = -1 - query = await cls.get_or_none(pid=pid) - if query: + if query := await cls.get_or_none(pid=pid, img_url=img_url): num = await cls.filter(is_r18=query.is_r18).count() last_image = await cls.get_or_none(is_r18=query.is_r18, local_id=num - 1) if last_image: diff --git a/plugins/send_setu_/update_setu/data_source.py b/plugins/send_setu_/update_setu/data_source.py index 039e3118..52d548b3 100755 --- a/plugins/send_setu_/update_setu/data_source.py +++ b/plugins/send_setu_/update_setu/data_source.py @@ -157,9 +157,10 @@ async def update_setu_img(flag: bool = False): unlink = True if unlink: local_image.unlink() - max_num = await Setu.delete_image(image.pid) - os.rename(path / f"{max_num}.jpg", local_image) - logger.warning(f"更新色图 PID:{image.pid} 404,已删除并替换") + max_num = await Setu.delete_image(image.pid, image.img_url) + if (path / f"{max_num}.jpg").exists(): + os.rename(path / f"{max_num}.jpg", local_image) + logger.warning(f"更新色图 PID:{image.pid} 404,已删除并替换") except Exception as e: _success -= 1 logger.error(f"更新色图 {image.local_id}.jpg 错误 {type(e)}: {e}") @@ -169,8 +170,9 @@ async def update_setu_img(flag: bool = False): else: logger.info(f"更新色图 {image.local_id}.jpg 已存在") if _success or error_info or flag: - await get_bot().send_private_msg( - user_id=int(list(get_bot().config.superusers)[0]), - message=f'{str(datetime.now()).split(".")[0]} 更新 色图 完成,本地存在 {count} 张,实际更新 {_success} 张,' - f"以下为更新时未知错误:\n" + "\n".join(error_info), - ) + if bot := get_bot(): + await bot.send_private_msg( + user_id=int(list(bot.config.superusers)[0]), + message=f'{str(datetime.now()).split(".")[0]} 更新 色图 完成,本地存在 {count} 张,实际更新 {_success} 张,' + f"以下为更新时未知错误:\n" + "\n".join(error_info), + )