aboutsummaryrefslogtreecommitdiffstats
path: root/modules/api
diff options
context:
space:
mode:
authorAUTOMATIC1111 <16777216c@gmail.com>2023-12-17 07:22:03 +0000
committerAUTOMATIC1111 <16777216c@gmail.com>2023-12-30 07:42:42 +0000
commitbb07cb6a0df60a96827125ffc09ea182a1ed272c (patch)
treee84c1769371fbfa797a13d29ab49a7089f8c78b7 /modules/api
parentde03882d6ca56bc81058f5120f028678a6a54aaa (diff)
downloadstable-diffusion-webui-gfx803-bb07cb6a0df60a96827125ffc09ea182a1ed272c.tar.gz
stable-diffusion-webui-gfx803-bb07cb6a0df60a96827125ffc09ea182a1ed272c.tar.bz2
stable-diffusion-webui-gfx803-bb07cb6a0df60a96827125ffc09ea182a1ed272c.zip
a
Diffstat (limited to 'modules/api')
-rw-r--r--modules/api/api.py27
-rw-r--r--modules/api/models.py2
2 files changed, 29 insertions, 0 deletions
diff --git a/modules/api/api.py b/modules/api/api.py
index 7154c9d5..b3d70940 100644
--- a/modules/api/api.py
+++ b/modules/api/api.py
@@ -335,6 +335,29 @@ class Api:
script_args[alwayson_script.args_from + idx] = request.alwayson_scripts[alwayson_script_name]["args"][idx]
return script_args
+ def apply_infotext(self, request, tabname):
+ if not request.infotext:
+ return {}
+
+ params = generation_parameters_copypaste.parse_generation_parameters(request.infotext)
+
+ for field in generation_parameters_copypaste.paste_fields[tabname]["fields"]:
+ if not field.api:
+ continue
+
+ value = field.function(params) if field.function else params.get(field.label)
+ target_type = request.__fields__[field.api].type_
+
+ if value is None:
+ continue
+
+ if not isinstance(value, target_type):
+ value = target_type(value)
+
+ setattr(request, field.api, value)
+
+ return params
+
def text2imgapi(self, txt2imgreq: models.StableDiffusionTxt2ImgProcessingAPI):
task_id = txt2imgreq.force_task_id or create_task_id("txt2img")
@@ -342,6 +365,9 @@ class Api:
if not script_runner.scripts:
script_runner.initialize_scripts(False)
ui.create_ui()
+
+ infotext_params = self.apply_infotext(txt2imgreq, "txt2img")
+
if not self.default_script_arg_txt2img:
self.default_script_arg_txt2img = self.init_default_script_args(script_runner)
selectable_scripts, selectable_script_idx = self.get_selectable_script(txt2imgreq.script_name, script_runner)
@@ -358,6 +384,7 @@ class Api:
args.pop('script_name', None)
args.pop('script_args', None) # will refeed them to the pipeline directly after initializing them
args.pop('alwayson_scripts', None)
+ args.pop('infotext', None)
script_args = self.init_script_args(txt2imgreq, self.default_script_arg_txt2img, selectable_scripts, selectable_script_idx, script_runner)
diff --git a/modules/api/models.py b/modules/api/models.py
index 58083a34..16edf11c 100644
--- a/modules/api/models.py
+++ b/modules/api/models.py
@@ -108,6 +108,7 @@ StableDiffusionTxt2ImgProcessingAPI = PydanticModelGenerator(
{"key": "save_images", "type": bool, "default": False},
{"key": "alwayson_scripts", "type": dict, "default": {}},
{"key": "force_task_id", "type": str, "default": None},
+ {"key": "infotext", "type": str, "default": None},
]
).generate_model()
@@ -126,6 +127,7 @@ StableDiffusionImg2ImgProcessingAPI = PydanticModelGenerator(
{"key": "save_images", "type": bool, "default": False},
{"key": "alwayson_scripts", "type": dict, "default": {}},
{"key": "force_task_id", "type": str, "default": None},
+ {"key": "infotext", "type": str, "default": None},
]
).generate_model()