diff --git a/nonebot-plugin-novelai/aidraw.py b/nonebot-plugin-novelai/aidraw.py index ffda2bf..38c6832 100644 --- a/nonebot-plugin-novelai/aidraw.py +++ b/nonebot-plugin-novelai/aidraw.py @@ -1,7 +1,7 @@ import time from collections import deque import aiohttp -from aiohttp.client_exceptions import ClientConnectorError +from aiohttp.client_exceptions import ClientConnectorError, ClientOSError from argparse import Namespace from asyncio import get_running_loop from nonebot import get_bot, on_shell_command @@ -14,7 +14,7 @@ from .config import config, nickname from .utils.data import lowQuality, basetag -from .mode import post, FIFO +from .backend import post, FIFO from .extension.anlas import anlas_check, anlas_set from .extension.daylimit import DayLimit from .utils.save import save_img @@ -29,8 +29,10 @@ aidraw_parser = ArgumentParser() aidraw_parser.add_argument("tags", nargs="*", help="标签") aidraw_parser.add_argument("-p", "--shape", "-形状", help="画布形状", dest="shape") -aidraw_parser.add_argument("-w", "--width", "-宽", help="画布宽", dest="width") -aidraw_parser.add_argument("-h", "--height", "-高", help="画布高", dest="height") +aidraw_parser.add_argument("-w", "--width", "-宽", + type=int, help="画布宽", dest="width") +aidraw_parser.add_argument("-e", "--height", "-高", + type=int, help="画布高", dest="height") aidraw_parser.add_argument("-c", "--scale", "-规模", type=float, help="规模", dest="scale") aidraw_parser.add_argument( @@ -71,7 +73,7 @@ async def aidraw_get(bot: Bot, message = message+f",批量生成数量过多,自动修改为{config.novelai_max}" args.count = config.novelai_max # 判断次数限制 - if config.novelai_daylimit and not await SUPERUSER(bot,event): + if config.novelai_daylimit and not await SUPERUSER(bot, event): left = DayLimit.count(user_id, args.count) if left == -1: aidraw.finish(f"今天你的次数不够了哦") @@ -225,14 +227,18 @@ async def _run_gennerate(fifo: FIFO): except ClientConnectorError: await sendtosuperuser(f"远程服务器拒绝连接,请检查配置是否正确,服务器是否已经启动") raise RuntimeError(f"远程服务器拒绝连接,请检查配置是否正确,服务器是否已经启动") + except ClientOSError: + await sendtosuperuser(f"远程服务器崩掉了欸……") + raise RuntimeError(f"服务器崩掉了欸……请等待主人修复吧") # 若启用ai检定,取消注释下行代码,并将构造消息体部分注释 # message = await check_safe_method(fifo, img_bytes, message) # 构造消息体并保存图片 + message = f"{config.novelai_mode}绘画完成~" for i in img_bytes: await save_img(fifo, i, fifo.group_id) message += MessageSegment.image(i) for i in fifo.format(): - message = MessageSegment.text(i) + message += MessageSegment.text(i) # 扣除点数 if fifo.cost > 0: await anlas_set(fifo.user_id, -fifo.cost) diff --git a/nonebot-plugin-novelai/extension/ramdomgirl.py b/nonebot-plugin-novelai/amusement/ramdomgirl.py similarity index 100% rename from nonebot-plugin-novelai/extension/ramdomgirl.py rename to nonebot-plugin-novelai/amusement/ramdomgirl.py diff --git a/nonebot-plugin-novelai/extension/wordbank.py b/nonebot-plugin-novelai/amusement/wordbank.py similarity index 100% rename from nonebot-plugin-novelai/extension/wordbank.py rename to nonebot-plugin-novelai/amusement/wordbank.py diff --git a/nonebot-plugin-novelai/mode copy.py b/nonebot-plugin-novelai/backend/__init__.py similarity index 91% rename from nonebot-plugin-novelai/mode copy.py rename to nonebot-plugin-novelai/backend/__init__.py index d1029e4..f1ac672 100644 --- a/nonebot-plugin-novelai/mode copy.py +++ b/nonebot-plugin-novelai/backend/__init__.py @@ -1,4 +1,4 @@ -from .config import config +from ..config import config if config.novelai_mode=="novelai": from .novelai.post import post,FIFO diff --git a/nonebot-plugin-novelai/base/fifo.py b/nonebot-plugin-novelai/backend/base/fifo.py similarity index 80% rename from nonebot-plugin-novelai/base/fifo.py rename to nonebot-plugin-novelai/backend/base/fifo.py index 18eb0eb..22993ad 100644 --- a/nonebot-plugin-novelai/base/fifo.py +++ b/nonebot-plugin-novelai/backend/base/fifo.py @@ -3,8 +3,8 @@ import time from PIL import Image from nonebot import get_driver -from ..utils.data import shapemap -from ..config import config +from ...utils.data import shapemap +from ...config import config import random @@ -41,7 +41,7 @@ def __init__(self, self.img2img: bool = False self.image: str = None if width and height: - self.shape_set(width,height) + self.shape_set(width, height) else: self.width, self.height = shapemap.get(shape or "p") # 数值合法检查 @@ -84,11 +84,20 @@ def add_image(self, image): self.img2img = True self.update_cost() - def shape_set(self, width, height): - base = round(min(width,height)/64) - if base>16: - base=16 - if width >= height: + def shape_set(self, width:int, height:int): + if width*height > pow(config.novelai_size, 2): + if width<=height: + ratio=height/width + width:float=config.novelai_size/pow(ratio,0.5) + height:float=width*ratio + else: + ratio=width/height + height:float=config.novelai_size/pow(ratio,0.5) + width:float=height*ratio + base = round(max(width, height)/64) + if base > 16: + base = 16 + if width <= height: self.width = round(width / height * base) * 64 self.height = 64*base else: @@ -100,21 +109,22 @@ def body(self): def keys(self): return ( - "seed","scale", "strength", "noise", "sampler", "model", "steps", "width", "height", "img2img") + "seed", "scale", "strength", "noise", "sampler", "model", "steps", "width", "height", "img2img") def __getitem__(self, item): return getattr(self, item) def format(self): dict_self = dict(self) - list=[] + list = [] str = "" for i, v in dict_self.items(): str += f"{i}={v}\n" list.append(str) - list.append(f"tags={dict_self['tags']}\n") - list.append(f"ntags={dict_self['ntags']}") + list.append(f"tags={self.tags}\n") + list.append(f"ntags={self.ntags}") return list + def __repr__(self): return f"time={self.time}\nuser_id={self.user_id}\ngroup_id={self.group_id}\ncost={self.cost}\ncount={self.count}\n"+"".join(self.format()) diff --git a/nonebot-plugin-novelai/base/post.py b/nonebot-plugin-novelai/backend/base/post.py similarity index 96% rename from nonebot-plugin-novelai/base/post.py rename to nonebot-plugin-novelai/backend/base/post.py index 07eaa1c..e17e53e 100644 --- a/nonebot-plugin-novelai/base/post.py +++ b/nonebot-plugin-novelai/backend/base/post.py @@ -4,7 +4,7 @@ import aiohttp from nonebot.log import logger from .fifo import FIFO_BASE -from ..utils import png2jpg +from ...utils import png2jpg async def post_base(fifo: FIFO_BASE, header, post_api): # 请求交互 diff --git a/nonebot-plugin-novelai/naifu/fifo.py b/nonebot-plugin-novelai/backend/naifu/fifo.py similarity index 100% rename from nonebot-plugin-novelai/naifu/fifo.py rename to nonebot-plugin-novelai/backend/naifu/fifo.py diff --git a/nonebot-plugin-novelai/sd/post.py b/nonebot-plugin-novelai/backend/naifu/post.py similarity index 92% rename from nonebot-plugin-novelai/sd/post.py rename to nonebot-plugin-novelai/backend/naifu/post.py index 3b5be48..7f1c75a 100644 --- a/nonebot-plugin-novelai/sd/post.py +++ b/nonebot-plugin-novelai/backend/naifu/post.py @@ -1,4 +1,4 @@ -from ..config import config +from ...config import config from .fifo import FIFO from ..base.post import post_base diff --git a/nonebot-plugin-novelai/novelai/fifo.py b/nonebot-plugin-novelai/backend/novelai/fifo.py similarity index 96% rename from nonebot-plugin-novelai/novelai/fifo.py rename to nonebot-plugin-novelai/backend/novelai/fifo.py index d6cb415..03e82c3 100644 --- a/nonebot-plugin-novelai/novelai/fifo.py +++ b/nonebot-plugin-novelai/backend/novelai/fifo.py @@ -1,4 +1,4 @@ -from ..config import config +from ...config import config from ..base.fifo import FIFO_BASE class FIFO(FIFO_BASE): diff --git a/nonebot-plugin-novelai/novelai/post.py b/nonebot-plugin-novelai/backend/novelai/post.py similarity index 95% rename from nonebot-plugin-novelai/novelai/post.py rename to nonebot-plugin-novelai/backend/novelai/post.py index fd25335..d65bd5f 100644 --- a/nonebot-plugin-novelai/novelai/post.py +++ b/nonebot-plugin-novelai/backend/novelai/post.py @@ -1,4 +1,4 @@ -from ..config import config +from ...config import config from .fifo import FIFO from ..base.post import post_base diff --git a/nonebot-plugin-novelai/sd/fifo.py b/nonebot-plugin-novelai/backend/sd/fifo.py similarity index 100% rename from nonebot-plugin-novelai/sd/fifo.py rename to nonebot-plugin-novelai/backend/sd/fifo.py diff --git a/nonebot-plugin-novelai/naifu/post.py b/nonebot-plugin-novelai/backend/sd/post.py similarity index 100% rename from nonebot-plugin-novelai/naifu/post.py rename to nonebot-plugin-novelai/backend/sd/post.py diff --git a/nonebot-plugin-novelai/config.py b/nonebot-plugin-novelai/config.py index 822d935..78b0740 100644 --- a/nonebot-plugin-novelai/config.py +++ b/nonebot-plugin-novelai/config.py @@ -25,6 +25,7 @@ class Config(BaseSettings): novelai_daylimit: int = 0 # 每日次数限制,0为禁用 novelai_h: bool = False # 是否允许H novelai_max: int = 3 # 每次能够生成的最大数量 + novelai_size: int = 1024 # 允许生成的图片最大分辨率,对应(值)^2.默认为1024(即1024*1024)。如果服务器比较寄,建议改成640(640*640)或者根据能够承受的情况修改。naifu和novelai会分别限制最大长宽为1024 # 可运行更改的设置 novelai_tags: str = "" # 内置的tag novelai_ntags: str = "" # 内置的反tag diff --git a/nonebot-plugin-novelai/mode.py b/nonebot-plugin-novelai/mode.py deleted file mode 100644 index 798d1af..0000000 --- a/nonebot-plugin-novelai/mode.py +++ /dev/null @@ -1,6 +0,0 @@ -from .config import config -count=0 -if count: - from .novelai.post import post,FIFO -else: - from .naifu.post import post,FIFO \ No newline at end of file diff --git a/nonebot-plugin-novelai/version.py b/nonebot-plugin-novelai/version.py index adaac6d..41f6475 100644 --- a/nonebot-plugin-novelai/version.py +++ b/nonebot-plugin-novelai/version.py @@ -19,7 +19,7 @@ def __init__(self): try: self.version = version(self.package) except: - self.version = "0.5.1" + self.version = "0.5.2" async def check_update(self): """检查更新,并推送"""