mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
仅仅是检查图片hash就将图片下载到磁盘是否有些浪费io,于是改成了内存中直接计算
This commit is contained in:
parent
6321a9e7e0
commit
27e97214bd
@ -1,9 +1,10 @@
|
|||||||
import random
|
import imagehash
|
||||||
|
from PIL import Image
|
||||||
|
from io import BytesIO
|
||||||
|
from httpx import TimeoutException
|
||||||
|
|
||||||
from nonebot.adapters.onebot.v11 import MessageEvent
|
from nonebot.adapters.onebot.v11 import MessageEvent
|
||||||
|
|
||||||
from configs.path_config import TEMP_PATH
|
|
||||||
from utils.image_utils import get_img_hash
|
|
||||||
from utils.utils import get_message_text, get_message_img, get_message_at
|
from utils.utils import get_message_text, get_message_img, get_message_at
|
||||||
from ._model import WordBank
|
from ._model import WordBank
|
||||||
from utils.http_utils import AsyncHttpx
|
from utils.http_utils import AsyncHttpx
|
||||||
@ -13,11 +14,13 @@ async def check(event: MessageEvent) -> bool:
|
|||||||
text = get_message_text(event.message)
|
text = get_message_text(event.message)
|
||||||
img = get_message_img(event.message)
|
img = get_message_img(event.message)
|
||||||
at = get_message_at(event.message)
|
at = get_message_at(event.message)
|
||||||
rand = random.randint(1, 100)
|
|
||||||
problem = text
|
problem = text
|
||||||
if not text and len(img) == 1:
|
if not text and len(img) == 1:
|
||||||
if await AsyncHttpx.download_file(img[0], TEMP_PATH / f"{event.user_id}_{rand}_word_bank_check.jpg"):
|
try:
|
||||||
problem = str(get_img_hash(TEMP_PATH / f"{event.user_id}_{rand}_word_bank_check.jpg"))
|
r = await AsyncHttpx.get(img[0])
|
||||||
|
problem = str(imagehash.average_hash(Image.open(BytesIO(r.content))))
|
||||||
|
except TimeoutException:
|
||||||
|
pass
|
||||||
if at:
|
if at:
|
||||||
temp = ''
|
temp = ''
|
||||||
for seg in event.message:
|
for seg in event.message:
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
import random
|
import imagehash
|
||||||
|
from PIL import Image
|
||||||
|
from io import BytesIO
|
||||||
|
from httpx import TimeoutException
|
||||||
|
|
||||||
from services import logger
|
from services import logger
|
||||||
from utils.image_utils import get_img_hash
|
|
||||||
from ._rule import check
|
from ._rule import check
|
||||||
from ._model import WordBank
|
from ._model import WordBank
|
||||||
from configs.path_config import DATA_PATH, TEMP_PATH
|
from configs.path_config import DATA_PATH
|
||||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
||||||
from utils.utils import get_message_img, get_message_text, get_message_at
|
from utils.utils import get_message_img, get_message_text, get_message_at
|
||||||
from nonebot import on_message
|
from nonebot import on_message
|
||||||
@ -25,9 +27,11 @@ async def _(event: MessageEvent):
|
|||||||
at = get_message_at(event.message)
|
at = get_message_at(event.message)
|
||||||
problem = None
|
problem = None
|
||||||
if not text and img and len(img) == 1:
|
if not text and img and len(img) == 1:
|
||||||
rand = random.randint(1, 10000)
|
try:
|
||||||
if await AsyncHttpx.download_file(img[0], TEMP_PATH / f"{event.user_id}_{rand}_word_bank.jpg"):
|
r = await AsyncHttpx.get(img[0])
|
||||||
problem = str(get_img_hash(TEMP_PATH / f"{event.user_id}_{rand}_word_bank.jpg"))
|
problem = str(imagehash.average_hash(Image.open(BytesIO(r.content))))
|
||||||
|
except TimeoutException:
|
||||||
|
logger.error(f"下载 {img[0]} 下载超时..")
|
||||||
elif at:
|
elif at:
|
||||||
temp = ''
|
temp = ''
|
||||||
for seg in event.message:
|
for seg in event.message:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user