From 3281db5f19209787d490da2b35f8e182877284bf Mon Sep 17 00:00:00 2001 From: AIrjen Date: Sat, 24 Feb 2024 09:53:10 +0100 Subject: [PATCH] first set of changes --- build_dynamic_prompt.py | 28 ++- one_button_presets.py | 2 + prompttester.py | 7 +- scripts/onebuttonprompt.py | 29 +-- userfiles/obp_presets.json | 362 +++++++++++++++++++++++++++++++++++++ 5 files changed, 411 insertions(+), 17 deletions(-) create mode 100644 userfiles/obp_presets.json diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index 2b7e165..0be13cc 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -2,6 +2,8 @@ import random import re from csv_reader import * from random_functions import * +from one_button_presets import OneButtonPresets +OBPresets = OneButtonPresets() @@ -10,7 +12,7 @@ from random_functions import * # insanity level controls randomness of propmt 0-10 # forcesubject van be used to force a certain type of subject # Set artistmode to none, to exclude artists -def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all", onlyartists = False, antivalues = "", prefixprompt = "", suffixprompt ="",promptcompounderlevel ="1", seperator = "comma", givensubject="",smartsubject = True,giventypeofimage="", imagemodechance = 20, gender = "all", subtypeobject="all", subtypehumanoid="all", subtypeconcept="all", advancedprompting=True, hardturnoffemojis=False, seed=-1, overrideoutfit="", prompt_g_and_l = False, base_model = "SD1.5"): +def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all", onlyartists = False, antivalues = "", prefixprompt = "", suffixprompt ="",promptcompounderlevel ="1", seperator = "comma", givensubject="",smartsubject = True,giventypeofimage="", imagemodechance = 20, gender = "all", subtypeobject="all", subtypehumanoid="all", subtypeconcept="all", advancedprompting=True, hardturnoffemojis=False, seed=-1, overrideoutfit="", prompt_g_and_l = False, base_model = "SD1.5", OBP_preset = ""): remove_weights = False less_verbose = False @@ -27,6 +29,30 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(advancedprompting != False and random.randint(0,max(0, insanitylevel - 2)) <= 0): advancedprompting == False + + if(OBP_preset == OBPresets.RANDOM_PRESET_OBP): + obp_options = OBPresets.load_obp_presets() + random_preset = random.choice(list(obp_options.keys())) + print("Engaging randomized presets, locking on to: " + random_preset) + + selected_opb_preset = OBPresets.get_obp_preset(random_preset) + insanitylevel = selected_opb_preset["insanitylevel"] + forcesubject = selected_opb_preset["subject"] + artists = selected_opb_preset["artist"] + subtypeobject = selected_opb_preset["chosensubjectsubtypeobject"] + subtypehumanoid = selected_opb_preset["chosensubjectsubtypehumanoid"] + subtypeconcept = selected_opb_preset["chosensubjectsubtypeconcept"] + gender = selected_opb_preset["chosengender"] + imagetype = selected_opb_preset["imagetype"] + imagemodechance = selected_opb_preset["imagemodechance"] + givensubject = selected_opb_preset["givensubject"] + smartsubject = selected_opb_preset["smartsubject"] + overrideoutfit = selected_opb_preset["givenoutfit"] + prefixprompt = selected_opb_preset["prefixprompt"] + suffixprompt = selected_opb_preset["suffixprompt"] + giventypeofimage = selected_opb_preset["giventypeofimage"] + antistring = selected_opb_preset["antistring"] + originalartistchoice = artists doartistnormal = True outfitmode = 0 diff --git a/one_button_presets.py b/one_button_presets.py index 4103095..0e4b0cd 100644 --- a/one_button_presets.py +++ b/one_button_presets.py @@ -1,6 +1,7 @@ import json import os import shutil +import random class OneButtonPresets: @@ -8,6 +9,7 @@ class OneButtonPresets: DEFAULT_OBP_FILE = os.path.join(script_dir, "./presets/obp_presets.default") OBP_FILE = os.path.join(script_dir, "./userfiles/obp_presets.json") CUSTOM_OBP = "Custom..." + RANDOM_PRESET_OBP = "All (random)..." def __init__(self): self.opb_presets = self.load_obp_presets() diff --git a/prompttester.py b/prompttester.py index d3a5bd1..2ce4dc6 100644 --- a/prompttester.py +++ b/prompttester.py @@ -10,7 +10,7 @@ from build_dynamic_prompt import * -def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", imagetype="all",onlyartists=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender = "all", subtypeobject = "all", subtypehumanoid = "all", subtypeconcept = "all", advancedprompting = True, hardturnoffemojis=False, seed=0, overrideoutfit="", prompt_g_and_l = False, base_model = "SD1.5"): +def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", imagetype="all",onlyartists=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender = "all", subtypeobject = "all", subtypehumanoid = "all", subtypeconcept = "all", advancedprompting = True, hardturnoffemojis=False, seed=0, overrideoutfit="", prompt_g_and_l = False, base_model = "SD1.5", OBP_preset = ""): loops = int(amount) # amount of images to generate steps = 0 @@ -18,7 +18,7 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im while steps < loops: # build prompt if(prompt_g_and_l == True): - resultlist = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting, hardturnoffemojis, seed, overrideoutfit, prompt_g_and_l, base_model) + resultlist = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting, hardturnoffemojis, seed, overrideoutfit, prompt_g_and_l, base_model, OBP_preset) result = resultlist[0] print("prompt_g") print(resultlist[1]) @@ -26,7 +26,7 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im print(resultlist[2]) else: - result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting, hardturnoffemojis, seed, overrideoutfit, prompt_g_and_l, base_model) + result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance, gender, subtypeobject, subtypehumanoid, subtypeconcept, advancedprompting, hardturnoffemojis, seed, overrideoutfit, prompt_g_and_l, base_model, OBP_preset) print("") print("loop " + str(steps)) print("") @@ -115,4 +115,5 @@ generateprompts(10,5 , "" #outfit override , False #prompt_g_and_l , "SDXL" #base model + , "All (random)..." #preset "All (random)..." ) \ No newline at end of file diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index e8fa0e5..029ebd7 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -234,12 +234,12 @@ class Script(scripts.Script): def ui(self, is_img2img): - def gen_prompt(insanitylevel, subject, artist, imagetype, antistring, prefixprompt, suffixprompt, promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage, imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,givenoutfit, base_model): + def gen_prompt(insanitylevel, subject, artist, imagetype, antistring, prefixprompt, suffixprompt, promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage, imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,givenoutfit, base_model, OBP_preset): promptlist = [] for i in range(5): - promptlist.append(build_dynamic_prompt(insanitylevel,subject,artist, imagetype, False, antistring,prefixprompt,suffixprompt,promptcompounderlevel,seperator,givensubject,smartsubject, giventypeofimage, imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,True,False,-1,givenoutfit,False,base_model)) + promptlist.append(build_dynamic_prompt(insanitylevel,subject,artist, imagetype, False, antistring,prefixprompt,suffixprompt,promptcompounderlevel,seperator,givensubject,smartsubject, giventypeofimage, imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,True,False,-1,givenoutfit,False,base_model, OBP_preset)) return promptlist @@ -272,13 +272,15 @@ class Script(scripts.Script): Presets can be used to store and load settings. Set the One Button Preset to __"Custom..."__ to show all settings. The settings will give you more control over what you wish to generate. + + Choose __"All (random)..."__ to get a random preset each prompt generation. """) # Part of presets with gr.Row(): OBP_preset = gr.Dropdown( label="One Button Preset", - choices=[OBPresets.CUSTOM_OBP] + list(OBPresets.opb_presets.keys()), + choices=[OBPresets.RANDOM_PRESET_OBP] + [OBPresets.CUSTOM_OBP] + list(OBPresets.opb_presets.keys()), value="Standard", ) @@ -905,7 +907,7 @@ class Script(scripts.Script): extrasupscaler2codeformerweight = gr.Slider(0, 1, value="0.1", step=0.05, label="CodeFormer weight", visible = False) - genprom.click(gen_prompt, inputs=[insanitylevel,subject, artist, imagetype, antistring,prefixprompt, suffixprompt,promptcompounderlevel, seperator, givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, givenoutfit, base_model], outputs=[prompt1, prompt2, prompt3,prompt4,prompt5]) + genprom.click(gen_prompt, inputs=[insanitylevel,subject, artist, imagetype, antistring,prefixprompt, suffixprompt,promptcompounderlevel, seperator, givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, givenoutfit, base_model, OBP_preset], outputs=[prompt1, prompt2, prompt3,prompt4,prompt5]) prompt1toworkflow.click(prompttoworkflowprompt, inputs=prompt1, outputs=workprompt) prompt2toworkflow.click(prompttoworkflowprompt, inputs=prompt2, outputs=workprompt) @@ -913,7 +915,7 @@ class Script(scripts.Script): prompt4toworkflow.click(prompttoworkflowprompt, inputs=prompt4, outputs=workprompt) prompt5toworkflow.click(prompttoworkflowprompt, inputs=prompt5, outputs=workprompt) - startmain.click(generateimages, inputs=[amountofimages,size,model,samplingsteps,cfg,hiresfix,hiressteps,denoisestrength,samplingmethod, upscaler,hiresscale, apiurl, qualitygate, quality, runs,insanitylevel,subject, artist, imagetype, silentmode, workprompt, antistring, prefixprompt, suffixprompt,negativeprompt,promptcompounderlevel, seperator, img2imgbatch, img2imgsamplingsteps, img2imgcfg, img2imgsamplingmethod, img2imgupscaler, img2imgmodel,img2imgactivate, img2imgscale, img2imgpadding,img2imgdenoisestrength,ultimatesdupscale,usdutilewidth, usdutileheight, usdumaskblur, usduredraw, usduSeamsfix, usdusdenoise, usduswidth, usduspadding, usdusmaskblur, controlnetenabled, controlnetmodel,img2imgdenoisestrengthmod,enableextraupscale,controlnetblockymode,extrasupscaler1,extrasupscaler2,extrasupscaler2visiblity,extrasupscaler2gfpgan,extrasupscaler2codeformer,extrasupscaler2codeformerweight,extrasresize,onlyupscale,givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, increasestability, qualityhiresfix, qualitymode, qualitykeep, basesize, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model]) + startmain.click(generateimages, inputs=[amountofimages,size,model,samplingsteps,cfg,hiresfix,hiressteps,denoisestrength,samplingmethod, upscaler,hiresscale, apiurl, qualitygate, quality, runs,insanitylevel,subject, artist, imagetype, silentmode, workprompt, antistring, prefixprompt, suffixprompt,negativeprompt,promptcompounderlevel, seperator, img2imgbatch, img2imgsamplingsteps, img2imgcfg, img2imgsamplingmethod, img2imgupscaler, img2imgmodel,img2imgactivate, img2imgscale, img2imgpadding,img2imgdenoisestrength,ultimatesdupscale,usdutilewidth, usdutileheight, usdumaskblur, usduredraw, usduSeamsfix, usdusdenoise, usduswidth, usduspadding, usdusmaskblur, controlnetenabled, controlnetmodel,img2imgdenoisestrengthmod,enableextraupscale,controlnetblockymode,extrasupscaler1,extrasupscaler2,extrasupscaler2visiblity,extrasupscaler2gfpgan,extrasupscaler2codeformer,extrasupscaler2codeformerweight,extrasresize,onlyupscale,givensubject,smartsubject,giventypeofimage,imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, increasestability, qualityhiresfix, qualitymode, qualitykeep, basesize, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model, OBP_preset]) interrupt.click(tryinterrupt, inputs=[apiurl]) automatedoutputsfolderbutton.click(openfolder) @@ -982,9 +984,7 @@ class Script(scripts.Script): } obp_options[obp_preset_name] = opts OBPresets.save_obp_preset(obp_options) - choices = list(obp_options.keys()) + [ - OBPresets.CUSTOM_OBP - ] + choices = [OBPresets.RANDOM_PRESET_OBP] + list(obp_options.keys()) + [OBPresets.CUSTOM_OBP] return gr.update(choices=choices, value=obp_preset_name) else: return gr.update() @@ -1019,9 +1019,12 @@ class Script(scripts.Script): # Skip if Custom was selected if selection == OBPresets.CUSTOM_OBP: return [gr.update()] * 16 - + # Update Custom values based on selected One Button preset - selected_opb_preset = OBPresets.get_obp_preset(selection) + if selection == OBPresets.RANDOM_PRESET_OBP: + selected_opb_preset = OBPresets.get_obp_preset("Standard") + else: + selected_opb_preset = OBPresets.get_obp_preset(selection) return [ insanitylevel.update(value=selected_opb_preset["insanitylevel"]), subject.update(value=selected_opb_preset["subject"]), @@ -1218,12 +1221,12 @@ class Script(scripts.Script): - return [insanitylevel,subject, artist, imagetype, prefixprompt,suffixprompt,negativeprompt, promptcompounderlevel, ANDtoggle, silentmode, workprompt, antistring, seperator, givensubject, smartsubject, giventypeofimage, imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model] + return [insanitylevel,subject, artist, imagetype, prefixprompt,suffixprompt,negativeprompt, promptcompounderlevel, ANDtoggle, silentmode, workprompt, antistring, seperator, givensubject, smartsubject, giventypeofimage, imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model, OBP_preset] - def run(self, p, insanitylevel, subject, artist, imagetype, prefixprompt,suffixprompt,negativeprompt, promptcompounderlevel, ANDtoggle, silentmode, workprompt, antistring,seperator, givensubject, smartsubject, giventypeofimage, imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model): + def run(self, p, insanitylevel, subject, artist, imagetype, prefixprompt,suffixprompt,negativeprompt, promptcompounderlevel, ANDtoggle, silentmode, workprompt, antistring,seperator, givensubject, smartsubject, giventypeofimage, imagemodechance, chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept, promptvariantinsanitylevel, givenoutfit, autonegativeprompt, autonegativepromptstrength, autonegativepromptenhance, base_model, OBP_preset): images = [] infotexts = [] @@ -1297,7 +1300,7 @@ class Script(scripts.Script): #Here is where we build a "normal" prompt - preppedprompt += build_dynamic_prompt(insanitylevel,subject,artist, imagetype, False, antistring, prefixprompt, suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,True,False,-1,givenoutfit, False, base_model) + preppedprompt += build_dynamic_prompt(insanitylevel,subject,artist, imagetype, False, antistring, prefixprompt, suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage,imagemodechance,chosengender, chosensubjectsubtypeobject, chosensubjectsubtypehumanoid, chosensubjectsubtypeconcept,True,False,-1,givenoutfit, False, base_model, OBP_preset) # set the artist mode back when done (for automatic mode) artist = artistcopy diff --git a/userfiles/obp_presets.json b/userfiles/obp_presets.json new file mode 100644 index 0000000..f7fe77a --- /dev/null +++ b/userfiles/obp_presets.json @@ -0,0 +1,362 @@ +{ + "Standard": { + "insanitylevel": 5, + "subject": "all", + "artist": "all", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "all", + "imagemodechance": 20, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Consistent results": { + "insanitylevel": 2, + "subject": "concept", + "artist": "none", + "chosensubjectsubtypeobject": "flora", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "names from card based games", + "chosengender": "all", + "imagetype": "fixed styles mode", + "imagemodechance": "20", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Unique People Portraits": { + "insanitylevel": 3, + "subject": "humanoid", + "artist": "photography", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "based on first name", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "portrait", + "imagemodechance": "100", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "photograph", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Artful People Portraits": { + "insanitylevel": 5, + "subject": "humanoid", + "artist": "character", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "art blaster mode", + "imagemodechance": 20, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "portrait art by -artist-", + "giventypeofimage": "", + "antistring": "" + }, + "D&D Style Portraits": { + "insanitylevel": 2, + "subject": "humanoid", + "artist": "fantasy", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "humanoids", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "digital art", + "imagemodechance": "100", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "D&D style portrait, fantasy", + "suffixprompt": "detailed face", + "giventypeofimage": "", + "antistring": "" + }, + "Cybernetic Animals": { + "insanitylevel": 3, + "subject": "animal", + "artist": "sci-fi", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "digital art", + "imagemodechance": 100, + "givensubject": "robotic subject", + "smartsubject": true, + "givenoutfit": "cybernetics", + "prefixprompt": "sci-fi", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Greg mode - The Preset": { + "insanitylevel": 3, + "subject": "humanoid", + "artist": "greg mode", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "digital art", + "imagemodechance": 100, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "-outfit-", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Cyberpunk Characters": { + "insanitylevel": 3, + "subject": "humanoid", + "artist": "character", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "concept art", + "imagemodechance": "100", + "givensubject": "cyborg subject, background is night city, neon-lit", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "cyberpunk", + "suffixprompt": "neon hue, shadowrun", + "giventypeofimage": "", + "antistring": "" + }, + "Waifu's": { + "insanitylevel": 7, + "subject": "humanoid", + "artist": "none", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "female", + "imagetype": "subject only mode", + "imagemodechance": "20", + "givensubject": "-basicbitchdescriptor- 1girl, solo,", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "(((masterpiece))), (((best quality))), anime style, 2d,", + "suffixprompt": "key visual", + "giventypeofimage": "", + "antistring": "" + }, + "Husbando's": { + "insanitylevel": 7, + "subject": "humanoid", + "artist": "none", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "male", + "imagetype": "subject only mode", + "imagemodechance": "20", + "givensubject": "-basicbitchdescriptor- 1boy, solo,", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "(((masterpiece))), (((best quality))), anime style, 2d,", + "suffixprompt": "key visual", + "giventypeofimage": "", + "antistring": "" + }, + "Fashion Models": { + "insanitylevel": 3, + "subject": "humanoid", + "artist": "fashion", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "photograph", + "imagemodechance": "100", + "givensubject": "supermodel", + "smartsubject": true, + "givenoutfit": "fashion outfit", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "Fashion photography", + "antistring": "" + }, + "WIERD HATS": { + "insanitylevel": 4, + "subject": "humanoid", + "artist": "none", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "photograph", + "imagemodechance": "100", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "headwear", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Wallpaper art": { + "insanitylevel": 3, + "subject": "concept", + "artist": "digital", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "the X of Y concepts", + "chosengender": "female", + "imagetype": "all", + "imagemodechance": 6, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "small centered composition, product shot, plain background", + "suffixprompt": "", + "giventypeofimage": "wallpaper art, in the center is an image", + "antistring": "" + }, + "The Connaisseur": { + "insanitylevel": 5, + "subject": "concept", + "artist": "all (wild)", + "chosensubjectsubtypeobject": "all", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "lines from poems", + "chosengender": "female", + "imagetype": "unique art mode", + "imagemodechance": 20, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Interesting Landscapes": { + "insanitylevel": 5, + "subject": "landscape", + "artist": "landscape", + "chosensubjectsubtypeobject": "buildings", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "all", + "imagemodechance": 100, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Relaxing Seascapes": { + "insanitylevel": 4, + "subject": "concept", + "artist": "seascape", + "chosensubjectsubtypeobject": "buildings", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "painting", + "imagemodechance": 100, + "givensubject": "seascape", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Architecture": { + "insanitylevel": 3, + "subject": "object", + "artist": "architecture", + "chosensubjectsubtypeobject": "buildings", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "all", + "imagemodechance": 100, + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "building", + "suffixprompt": "", + "giventypeofimage": "architecture", + "antistring": "" + }, + "Nature": { + "insanitylevel": 4, + "subject": "object", + "artist": "nature", + "chosensubjectsubtypeobject": "flora", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "all", + "imagemodechance": "6", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Let the CFG sort it out": { + "insanitylevel": 2, + "subject": "concept", + "artist": "all (wild)", + "chosensubjectsubtypeobject": "buildings", + "chosensubjectsubtypehumanoid": "all", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "all", + "imagemodechance": 1, + "givensubject": "-cardname-, -episodetitle-, \"-poemline-\", \"-songline-\"", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + }, + "Now this is podracing": { + "insanitylevel": 9, + "subject": "concept", + "artist": "all (wild)", + "chosensubjectsubtypeobject": "flora", + "chosensubjectsubtypehumanoid": "generic humans", + "chosensubjectsubtypeconcept": "all", + "chosengender": "all", + "imagetype": "massive madness mode", + "imagemodechance": "20", + "givensubject": "", + "smartsubject": true, + "givenoutfit": "", + "prefixprompt": "", + "suffixprompt": "", + "giventypeofimage": "", + "antistring": "" + } +} \ No newline at end of file