From c39ad4852788258be1bee6f39dd4db1e657659cd Mon Sep 17 00:00:00 2001 From: AIrjen Date: Mon, 29 May 2023 07:37:50 +0200 Subject: [PATCH] Prefix working with automatic Moved cleaning into seperate function, now also works with calling for Artists only mode --- build_dynamic_prompt.py | 65 ++++++++++++++++++++------------------ prompttester.py | 12 +++---- scripts/onebuttonprompt.py | 6 ++-- 3 files changed, 44 insertions(+), 39 deletions(-) diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index 240b65a..3ed7e11 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -548,7 +548,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(onlyartists == True): - completeprompt = completeprompt.strip(", ") + + # clean it up + completeprompt = cleanup(completeprompt) + print("only generated these artists:" + completeprompt) return completeprompt @@ -1047,36 +1050,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all attachedlist = allwildcardslistwithhybridlists[allwildcardslistwithhybrid.index(wildcard)] completeprompt = replacewildcard(completeprompt, insanitylevel, wildcard, attachedlist,True) - - + - - - completeprompt = re.sub('\[ ', '[', completeprompt) - completeprompt = re.sub(' \]', ']', completeprompt) - completeprompt = re.sub(' \|', '|', completeprompt) - completeprompt = re.sub(' \"', '\"', completeprompt) - completeprompt = re.sub('\" ', '\"', completeprompt) - completeprompt = re.sub('\( ', '(', completeprompt) - completeprompt = re.sub(' \(', '(', completeprompt) - completeprompt = re.sub('\) ', ')', completeprompt) - completeprompt = re.sub(' \)', ')', completeprompt) - - completeprompt = re.sub(' :', ':', completeprompt) - - completeprompt = re.sub(',,', ', ', completeprompt) - completeprompt = re.sub(',,,', ', ', completeprompt) - completeprompt = re.sub(', ,', ',', completeprompt) - completeprompt = re.sub(' , ', ', ', completeprompt) - completeprompt = re.sub(',\(', ', (', completeprompt) - - completeprompt = re.sub('a The', 'The', completeprompt) - completeprompt = re.sub(', ,', ',', completeprompt) - - - completeprompt = completeprompt.strip(", ") - - + # clean it up + completeprompt = cleanup(completeprompt) #just for me, some fun with posting fake dev messages (ala old sim games) if(random.randint(1, 50)==1): @@ -1111,4 +1088,32 @@ def replacewildcard(completeprompt, insanitylevel, wildcard,listname, activatehy completeprompt = completeprompt.replace(wildcard, random.choice(listname),1) + return completeprompt + +def cleanup(completeprompt): + # all cleanup steps moved here + completeprompt = re.sub('\[ ', '[', completeprompt) + completeprompt = re.sub(' \]', ']', completeprompt) + completeprompt = re.sub(' \|', '|', completeprompt) + completeprompt = re.sub(' \"', '\"', completeprompt) + completeprompt = re.sub('\" ', '\"', completeprompt) + completeprompt = re.sub('\( ', '(', completeprompt) + completeprompt = re.sub(' \(', '(', completeprompt) + completeprompt = re.sub('\) ', ')', completeprompt) + completeprompt = re.sub(' \)', ')', completeprompt) + + completeprompt = re.sub(' :', ':', completeprompt) + + completeprompt = re.sub(',,', ', ', completeprompt) + completeprompt = re.sub(',,,', ', ', completeprompt) + completeprompt = re.sub(', ,', ',', completeprompt) + completeprompt = re.sub(' , ', ', ', completeprompt) + completeprompt = re.sub(',\(', ', (', completeprompt) + + completeprompt = re.sub('a The', 'The', completeprompt) + completeprompt = re.sub(', ,', ',', completeprompt) + + + completeprompt = completeprompt.strip(", ") + return completeprompt \ No newline at end of file diff --git a/prompttester.py b/prompttester.py index bd5f12c..114ec68 100644 --- a/prompttester.py +++ b/prompttester.py @@ -10,22 +10,22 @@ from build_dynamic_prompt import * -def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", imagetype="all",silentmode=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma",givensubject="",smartsubject=True,giventypeofimage=""): +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=""): loops = int(amount) # amount of images to generate steps = 0 insanitylevel = int(insanitylevel) while steps < loops: # build prompt - if(silentmode==True and workprompt == ""): - print("Trying to use provided workflow prompt, but is empty. Generating a random prompt instead.") - result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, False,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage) + result = build_dynamic_prompt(insanitylevel,subject,artist,imagetype, onlyartists,antistring,prefixprompt,suffixprompt,promptcompounderlevel, seperator,givensubject,smartsubject,giventypeofimage) print("") print("loop " + str(steps)) print("") - + if(onlyartists == True): + print(result) + print("") @@ -35,4 +35,4 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im print("") print("All done!") -generateprompts(100,10) \ No newline at end of file +generateprompts(10,7,"all","all","all",True,"","","") \ No newline at end of file diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index 35be9e3..856006d 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -654,9 +654,9 @@ class Script(scripts.Script): print("Automatic and artist mode set to none, don't work together well. Ignoring this setting!") artist = "all" - if(ANDtoggle == "automatic" and (prefixprompt != "")): - print("Automatic doesnt work well if there is an prefix prompt filled in. Ignoring this prompt fields!") - prefixprompt = "" + #if(ANDtoggle == "automatic" and (prefixprompt != "")): + # print("Automatic doesnt work well if there is an prefix prompt filled in. Ignoring this prompt fields!") + # prefixprompt = ""