| __author__ = "receyuki" | |
| __filename__ = "swarmui.py" | |
| __copyright__ = "Copyright 2023" | |
| __email__ = "receyuki@gmail.com" | |
| import json | |
| from ..format.base_format import BaseFormat | |
| from ..utility import remove_quotes | |
| class SwarmUI(BaseFormat): | |
| SETTING_KEY = ["model", "", "seed", "cfgscale", "steps", ""] | |
| def __init__(self, info: dict = None, raw: str = ""): | |
| super().__init__(info, raw) | |
| if not self._info: | |
| self._info = json.loads(self._raw) | |
| self._ss_format() | |
| def _ss_format(self): | |
| data_json = self._info.get("sui_image_params") | |
| self._positive = data_json.get("prompt").strip() | |
| self._negative = data_json.get("negativeprompt").strip() | |
| self._raw = "\n".join([self._positive, self._negative, str(data_json)]).strip() | |
| data_json.pop("prompt") | |
| data_json.pop("negativeprompt") | |
| self._setting = remove_quotes(str(data_json).strip("{ }")) | |
| self._width = str(data_json.get("width")) | |
| self._height = str(data_json.get("height")) | |
| for p, s in zip(super().PARAMETER_KEY, SwarmUI.SETTING_KEY): | |
| match p: | |
| case "sampler": | |
| comfyuisampler = data_json.get("comfyuisampler") | |
| autowebuisampler = data_json.get("autowebuisampler") | |
| self._parameter["sampler"] = str( | |
| remove_quotes((comfyuisampler, autowebuisampler)) | |
| if comfyuisampler and autowebuisampler | |
| else comfyuisampler or autowebuisampler | |
| ) | |
| case "size": | |
| self._parameter["size"] = ( | |
| str(data_json.get("width")) + "x" + str(data_json.get("height")) | |
| ) | |
| case _: | |
| self._parameter[p] = str(data_json.get(s)) | |