dikdimon's picture
Upload extensions using SD-Hub extension
f4a41d8 verified
raw
history blame
6.81 kB
import sys, os
import random
import uuid
import re
from superprompter.superprompter import *
from datetime import datetime
sys.path.append(os.path.abspath(".."))
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", OBP_preset = "", prompt_enhancer="none", preset_prefix = "", preset_suffix =""):
loops = int(amount) # amount of images to generate
steps = 0
insanitylevel = int(insanitylevel)
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, OBP_preset, prompt_enhancer)
result = resultlist[0]
print("prompt_g")
print(resultlist[1])
print("prompt_l")
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, OBP_preset, prompt_enhancer,"","", preset_prefix, preset_suffix)
#if(superprompter):
# load_models()
# superpromptresult1 = answer(input_text=result, max_new_tokens=150, repetition_penalty=1.5, temperature=0.5, top_p=0.1, top_k=10, seed=seed)
# superpromptresult2 = answer(input_text="Help me prompt this a little bit better and concise: """ + result + "" , max_new_tokens=150, repetition_penalty=1.5, temperature=0.5, top_p=0.1, top_k=10, seed=seed)
# superpromptresult3 = answer(input_text="Make this more artful: """ + result + "" , max_new_tokens=150, repetition_penalty=1.5, temperature=5.0, top_p=5, top_k=1, seed=seed)
# superpromptresult4 = answer(input_text="Describe this for me please: """ + result + "" , max_new_tokens=150, repetition_penalty=1.5, temperature=5.0, top_p=5, top_k=1, seed=seed)
# unload_models()
#print (result + " --- " + superpromptresult1 + " --- " + superpromptresult2 + " --- " + superpromptresult3 + " --- " + superpromptresult4)
print("")
print("loop " + str(steps))
print("")
if(onlyartists == True):
print(result)
print("")
if(result.count("-")>1 and imagetype == "only templates"):
print("Is there a mistake in wildcards?")
print("")
print(result)
break
if(givensubject != "" and givensubject not in result and imagetype == "only templates"):
print("No givensubject, there must be an issue:")
print("")
print(result)
break
if(overrideoutfit != "" and overrideoutfit not in result and onlyartists == False and "-outfit-" not in overrideoutfit):
print("The outfit override is not showing up!")
print("")
print(result)
break
if(" OR " in result or ";" in result):
print("There is a mistake in a OR statement")
print("")
print(result)
break
# Use regex to find words enclosed by hyphens, the wildcards1
# make some minor exceptions
resultnew = result
resultnew = resultnew.replace("-eye-", " eye ")
resultnew = resultnew.replace("-of-", " of ")
resultnew = resultnew.replace("-the-", " the ")
resultnew = resultnew.replace("-up-", " up ")
resultnew = resultnew.replace("-in-", " in ")
resultnew = resultnew.replace("-au-", " au ")
resultnew = resultnew.replace("-da-", " da ")
resultnew = resultnew.replace("-doo-", " doo ")
resultnew = resultnew.replace("-and-", " and ")
resultnew = resultnew.replace("-o-", " o ")
resultnew = resultnew.replace("-horse-", " horse ")
matches = re.findall(r'-\w+-', resultnew)
# Filter out matches with commas and spaces
wildcards = [match for match in matches if ',' not in match and ' ' not in match]
if(wildcards):
print("There is a wildcard still in the prompt")
print("")
print(result)
break
#if("game" in result or "movie" in result or "series" in result):
# print("TEST THIS")
# print("")
# print(result)
# break
steps += 1
print("")
print("All done!")
if __name__ == "__main__":
generateprompts(10,5
,"all" # subject
,"all" # artists
,"all" # image type "only other types", "only templates mode", "all - anime", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "dynamic templates mode", "artify mode"
, False # only artists
,"",""
,"" #prefix prompt -- masterpiece, best quality, very aesthetic, absurdres
,"" #suffix prompt
,"",1,""
,"" # subject override
,True, # smart subject
"",5
, "all" # gender
, "all" # object types
, "all" # humanoid types -- all,generic humans,generic human relations, multiple humans, celebrities e.a.,fictional,humanoids, based on job or title,based on first name
, "all" # concept types
, False # prompt switching
, True # Turn off emojis
, -1 # seed
, "" #outfit override
, False #prompt_g_and_l
, "SDXL" #base model
, "" #preset "All (random)..."
, "" # superprompter
, "hello" # preset prefix
, "" # preset suffix
)