nonebot_plugin_novelai/extension/deepdanbooru.py

42 lines
1.7 KiB
Python

import aiohttp
import base64
from nonebot import on_command
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment
from nonebot.log import logger
from .translation import translate
deepdanbooru = on_command(".gettag", aliases={"鉴赏", "查书"})
@deepdanbooru.handle()
async def deepdanbooru_handle(event: GroupMessageEvent):
url = ""
for seg in event.message['image']:
url = seg.data["url"]
if url:
async with aiohttp.ClientSession() as session:
logger.info(f"正在获取图片")
async with session.get(url) as resp:
bytes = await resp.read()
str_img = str(base64.b64encode(bytes), "utf-8")
message = MessageSegment.at(event.user_id)
start = "data:image/jpeg;base64,"
str0 = start+str_img
async with aiohttp.ClientSession() as session:
async with session.post('https://mayhug-rainchan-anime-image-label.hf.space/api/predict/', json={"data": [str0, 0.6,"ResNet101"]}) as resp:
if resp.status != 200:
await deepdanbooru.finish(f"识别失败,错误代码为{resp.status}")
jsonresult = await resp.json()
data = jsonresult['data'][0]
logger.info(f"TAG查询完毕")
tags = ""
for label in data['confidences']:
tags = tags+label["label"]+","
tags_ch = await translate(tags.replace("_", " "), "zh")
if tags_ch == tags.replace("_", " "):
message = message+tags
message = message+tags+f"\n机翻结果:"+tags_ch
await deepdanbooru.finish(message)
else:
await deepdanbooru.finish(f"未找到图片")