新增指定sampler, hires的功能
修复tags中方括号编码不正常的问题
This commit is contained in:
		
							
								
								
									
										54
									
								
								outofdate/explicit_api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								outofdate/explicit_api.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
from ..config import config, nickname
 | 
			
		||||
from ..utils.save import save_img
 | 
			
		||||
from io import BytesIO
 | 
			
		||||
import base64
 | 
			
		||||
import aiohttp
 | 
			
		||||
import asyncio
 | 
			
		||||
from nonebot.adapters.onebot.v11 import MessageSegment
 | 
			
		||||
from nonebot.log import logger
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def check_safe_method(fifo, img_bytes, message):
 | 
			
		||||
    if config.novelai_h:
 | 
			
		||||
        for i in img_bytes:
 | 
			
		||||
            await save_img(fifo, i)
 | 
			
		||||
            message += MessageSegment.image(i)
 | 
			
		||||
    else:
 | 
			
		||||
        nsfw_count = 0
 | 
			
		||||
        for i in img_bytes:
 | 
			
		||||
            try:
 | 
			
		||||
                label = await check_safe(i)
 | 
			
		||||
            except RuntimeError as e:
 | 
			
		||||
                logger.error(f"NSFWAPI调用失败,错误代码为{e.args}")
 | 
			
		||||
                label = "unknown"
 | 
			
		||||
            if label != "explicit":
 | 
			
		||||
                message += MessageSegment.image(i)
 | 
			
		||||
            else:
 | 
			
		||||
                nsfw_count += 1
 | 
			
		||||
            await save_img(fifo, i, label)
 | 
			
		||||
        if nsfw_count > 0:
 | 
			
		||||
            message += f"\n有{nsfw_count}张图片太涩了,{nickname}已经帮你吃掉了哦"
 | 
			
		||||
    return message
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def check_safe(img_bytes: BytesIO):
 | 
			
		||||
    # 检查图片是否安全
 | 
			
		||||
    start = "data:image/jpeg;base64,"
 | 
			
		||||
    image = img_bytes.getvalue()
 | 
			
		||||
    image = str(base64.b64encode(image), "utf-8")
 | 
			
		||||
    str0 = start + image
 | 
			
		||||
    # 重试三次
 | 
			
		||||
    for i in range(3):
 | 
			
		||||
        async with aiohttp.ClientSession() as session:
 | 
			
		||||
            # 调用API
 | 
			
		||||
            async with session.post('https://hf.space/embed/mayhug/rainchan-image-porn-detection/api/predict/',
 | 
			
		||||
                                    json={"data": [str0]}) as resp:
 | 
			
		||||
                if resp.status == 200:
 | 
			
		||||
                    jsonresult = await resp.json()
 | 
			
		||||
                    break
 | 
			
		||||
                else:
 | 
			
		||||
                    await asyncio.sleep(2)
 | 
			
		||||
                    error = resp.status
 | 
			
		||||
    else:
 | 
			
		||||
        raise RuntimeError(error)
 | 
			
		||||
    return jsonresult["data"][0]["label"]
 | 
			
		||||
		Reference in New Issue
	
	Block a user