adieyal / sd-dynamic-prompts

A custom script for AUTOMATIC1111/stable-diffusion-webui to implement a tiny template language for random prompt generation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Request] Make PromptWriter add Template data as a newline

thecakeisal1e opened this issue · comments

Mostly this is a request so that webui's infotext_utils.parse_generation_parameters can return res["Template"] and can be added quickly to img2img to use Template instead of Prompt. I'm unsure if it's the PromptWriter class or pnginfo_saver.strip_template_info adding the generation params to the resultant PNG but this would probably be a convenient.

Actually, it's probably easier to make edits to stable diffusion...

For anyone who is looking to apply the Template previously used to gen a picture with dynamic prompts, edit lines 100-108 of modules/img2img.py to the following:

            parsed_parameters = parse_generation_parameters(geninfo)
            png_info_props.append("Template")                                                   # Add Template support
            png_info_props.append("Negative Template")
            parsed_parameters = {k: v for k, v in parsed_parameters.items() if k in (png_info_props or {})}
        except Exception:
            parsed_parameters = {}

        if "Template" in parsed_parameters and parsed_parameters["Template"] is not None:       # Add support for Template inputs
            p.prompt = (" " + parsed_parameters["Template"])
        else:
            p.prompt = prompt + (" " + parsed_parameters["Prompt"] if "Prompt" in parsed_parameters else "")

and add to modules/infotext_utils.py at line 261

        line = line[16:].strip()

        before_keyword, sep, after_keyword = line.partition("Negative Template:")
        if sep:
            res["Negative Template"] = after_keyword
        else:
            before_keyword, sep, after_keyword = res["Negative Template"].partition("Template:")
            if sep:
                res["Template"] = after_keyword
            else:
                print("Input image doesn't have template data.")
                res["Negative Template"] = " "
                res["Template"] = " "