diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index baa0a77..fc82160 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -79,6 +79,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all spacelist = csv_to_list("space", antilist) poemlinelist = csv_to_list("poemlines", antilist) songlinelist = csv_to_list("songlines", antilist) + musicgenrelist = csv_to_list("musicgenres", antilist) + manwomanrelationlist = csv_to_list("manwomanrelations", antilist) + waterlocationlist = csv_to_list("waterlocations", antilist) + containerlist = csv_to_list("containers", antilist) humanlist = fictionallist + nonfictionallist + humanoidlist objecttotallist = objectlist + buildinglist + vehiclelist + foodlist + spacelist @@ -138,8 +142,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all hybridhumanlist = [] humanoidsubjectchooserlist = [] eventsubjectchooserlist = [] - addontolocationinside = [] - addontolocation = [] + addontolocationinsidelist = [] + addontolocationlist = [] generatevehicle = bool(vehiclelist) generateobject = bool(objectlist) @@ -152,7 +156,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(generatevehicle): objectwildcardlist.append("-vehicle-") hybridlist.append("-vehicle-") - addontolocation.append(vehiclelist) + addontolocationlist.append("-vehicle-") if(generateobject): objectwildcardlist.append("-object-") @@ -165,12 +169,13 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(generatespace): objectwildcardlist.append("-space-") hybridlist.append("-space-") + addontolocationlist.append("-space-") if(generatebuilding): objectwildcardlist.append("-building-") hybridlist.append("-building-") - addontolocation.append(buildinglist) - addontolocationinside.append(buildinglist) + addontolocationlist.append("-building-") + addontolocationinsidelist.append("-building-") if(generateobject): mainchooserlist.append("object") @@ -179,8 +184,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all generatenonfictionalcharacter = bool(nonfictionallist) generatehumanoids = bool(humanoidlist) generatemanwoman = bool(manwomanlist) + generatemanwomanrelation = bool(manwomanrelationlist) generatejob = bool(joblist) - generatehumanoid = generatefictionalcharacter + generatenonfictionalcharacter + generatehumanoids + generatemanwoman + generatejob + generatehumanoid = generatefictionalcharacter + generatenonfictionalcharacter + generatehumanoids + generatemanwoman + generatejob + generatemanwomanrelation if(generatefictionalcharacter): @@ -201,6 +207,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(generatemanwoman): humanoidsubjectchooserlist.append("human") + if(generatemanwomanrelation): + humanoidsubjectchooserlist.append("manwomanrelation") + if(generatejob): humanoidsubjectchooserlist.append("job") @@ -218,8 +227,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(generatelandscape): mainchooserlist.append("landscape") - addontolocation.append(locationlist) - addontolocationinside.append(locationlist) + addontolocationlist.append("-location-") + addontolocationinsidelist.append("-location-") generateevent = bool(eventlist) generateconcepts = bool(conceptprefixlist) + bool(conceptsuffixlist) @@ -588,7 +597,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all else: subjectchooser = "animal as human" if(mainchooser == "humanoid"): - #humanoidsubjectchooserlist = ["human", "job", "fictional", "non fictional", "humanoid"] + #humanoidsubjectchooserlist = ["human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation"] subjectchooser = random.choice(humanoidsubjectchooserlist) if(mainchooser == "landscape"): subjectchooser = "landscape" @@ -766,6 +775,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(onlyartists == True and artistmode == "enhancing"): artistmode = "normal" + # if there are not enough artists in the list, then just go normal + if(len(artistlist) < 3): + artistmode = "normal" if(onlyartists == True and step == end): step = step - 1 @@ -892,16 +904,16 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # Common to have 1 description, uncommon to have 2 if(common_dist(insanitylevel) and generatedescriptors == True): - completeprompt += random.choice(descriptorlist) + " " + completeprompt += "-descriptor- " if(uncommon_dist(insanitylevel) and generatedescriptors == True): - completeprompt += random.choice(descriptorlist) + " " + completeprompt += "-descriptor- " - if(subjectchooser in ["animal as human,","human", "job", "fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and generatebodytype == True): - completeprompt += random.choice(bodytypelist) + " " + if(subjectchooser in ["animal as human,","human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and generatebodytype == True): + completeprompt += "-bodytype- " - if(subjectchooser in ["object","animal as human,","human", "job", "fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and generatedescriptors == True): - completeprompt += random.choice(culturelist) + " " + if(subjectchooser in ["object","animal as human,","human", "job", "fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and generatedescriptors == True): + completeprompt += "-culture- " if(mainchooser == "object"): objectwildcardlist = ["-object-", "-building-","-vehicle-","-food-", "-space-"] # using wildcards for replacements @@ -949,9 +961,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(unique_dist(insanitylevel) and generateanimaladdition == True): animaladdedsomething = 1 - completeprompt += random.choice(animaladditionlist) + " -animal- " + completeprompt += "-animaladdition- -animal- " if(animaladdedsomething != 1): - completeprompt += random.choice(animallist) + " " + completeprompt += "-animal- " if(hybridorswap == "hybrid"): if(uncommon_dist(insanitylevel)): @@ -973,11 +985,14 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(givensubject==""): if(subjectchooser == "human"): - completeprompt += random.choice(manwomanlist) + " " + completeprompt += "-manwoman- " + + if(subjectchooser == "manwomanrelation"): + completeprompt += "-manwomanrelation- " if(subjectchooser == "job"): - completeprompt += random.choice(malefemalelist) + " " - completeprompt += random.choice(joblist) + " " + completeprompt += "-malefemale- " + completeprompt += "-job- " if(subjectchooser == "fictional"): if rare_dist(insanitylevel): @@ -985,7 +1000,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all hybridorswap = random.choice(hybridorswaplist) completeprompt += "[" - completeprompt += random.choice(fictionallist) + " " + completeprompt += "-fictional- " if(hybridorswap == "hybrid"): completeprompt += "|" + random.choice(hybridhumanlist) + " ] " @@ -999,7 +1014,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all hybridorswap = random.choice(hybridorswaplist) completeprompt += "[" - completeprompt += random.choice(nonfictionallist) + " " + completeprompt += "-nonfictional- " if(hybridorswap == "hybrid"): completeprompt += "|" + random.choice(hybridhumanlist) + "] " @@ -1013,7 +1028,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all hybridorswap = random.choice(hybridorswaplist) completeprompt += "[" - completeprompt += random.choice(humanoidlist) + " " + completeprompt += "-humanoid- " if(hybridorswap == "hybrid"): completeprompt += "|" + random.choice(hybridhumanlist) + "] " @@ -1037,7 +1052,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all hybridorswap = random.choice(hybridorswaplist) completeprompt += "[" - completeprompt += random.choice(locationlist) + " " + completeprompt += "-location- " if(hybridorswap == "hybrid"): completeprompt += "|" + "-location-" + "] " @@ -1051,19 +1066,17 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # shots from inside can create cool effects in landscapes if(unique_dist(insanitylevel)): insideshot = 1 - completeprompt += " from inside of a " - #addontolocationinside = [locationlist,buildinglist] - completeprompt += random.choice(random.choice(addontolocationinside)) + " " + completeprompt += " from inside of a -addontolocationinside- " if(normal_dist(insanitylevel) and insideshot == 0): completeprompt += " and " if(rare_dist(insanitylevel)): - completeprompt += random.choice(descriptorlist) + " " + completeprompt += "-descriptor- " if(rare_dist(insanitylevel)): - completeprompt += random.choice(culturelist) + " " + completeprompt += "-culture- " #addontolocation = [locationlist,buildinglist, vehiclelist] - completeprompt += random.choice(random.choice(addontolocation)) + " " + completeprompt += "-addontolocation- " if(mainchooser == "concept"): @@ -1087,19 +1100,19 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # object additions for i in range(2): if(mainchooser == "object" and uncommon_dist(insanitylevel) and generateobjectaddition == True): - completeprompt += ", " + random.choice(objectadditionslist) + ", " + completeprompt += ", -objectaddition- , " # riding an animal, holding an object or driving a vehicle, rare - if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid"] and rare_dist(insanitylevel) and generatehumanaddition == True): + if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and rare_dist(insanitylevel) and generatehumanaddition == True): humanspecial = 1 - completeprompt += random.choice(humanadditionlist) + " " + completeprompt += "-humanaddition- " completeprompt += ", " # unique additions for all types: if(extraordinary_dist(insanitylevel) and generateoveralladdition == True): - completeprompt += random.choice(overalladditionlist) + ", " + completeprompt += "-overalladdition- " @@ -1107,7 +1120,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # SD understands emoji's. Can be used to manipulate facial expressions. # emoji, legendary - if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid"] and legendary_dist(insanitylevel) and generateemoji== True): + if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and legendary_dist(insanitylevel) and generateemoji== True): completeprompt += "-emoji-, " @@ -1118,7 +1131,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # Job # either go job or activity, not both - if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and humanspecial != 1 and generatesubject == True): + if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and humanspecial != 1 and generatesubject == True): joboractivitylist = [joblist,humanactivitylist] completeprompt += random.choice(random.choice(joboractivitylist)) + ", " @@ -1138,16 +1151,16 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += " -minivomit-, " # outfit builder - if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and generateoutfit == True and humanspecial != 1): + if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and generateoutfit == True and humanspecial != 1): completeprompt += ", wearing " + random.choice(buildoutfitlist) + ", " - if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid"] and uncommon_dist(insanitylevel) and humanspecial != 1 and generatepose == True): + if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and uncommon_dist(insanitylevel) and humanspecial != 1 and generatepose == True): completeprompt += random.choice(poselist) + ", " - if(subjectchooser in ["human","job","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and generatehairstyle == True): + if(subjectchooser in ["human","job","fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and generatehairstyle == True): completeprompt += random.choice(buildhairlist) + ", " - if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel) and generateaccessorie == True and generateaccessories == True): + if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid", "manwomanrelation"] and normal_dist(insanitylevel) and generateaccessorie == True and generateaccessories == True): completeprompt += random.choice(buildaccessorielist) + ", " if(legendary_dist(insanitylevel) and subjectchooser not in ["landscape", "concept"] and generateinsideshot == True): @@ -1172,23 +1185,23 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += "-timeperiod-, " if(mainchooser not in ["landscape"] and rare_dist(insanitylevel) and generatefocus == True): - completeprompt += random.choice(focuslist) + ", " + completeprompt += "-focus-, " # others if(normal_dist(insanitylevel) and generatedirection == True): - completeprompt += random.choice(directionlist) + ", " + completeprompt += "-direction-, " if(normal_dist(insanitylevel) and generatemood == True): - completeprompt += random.choice(moodlist) + ", " + completeprompt += "-mood-, " # add in some more mini vomits if(unique_dist(insanitylevel) and generateminivomit == True): completeprompt += " -minivomit-, " if(normal_dist(insanitylevel) and generateartmovement == True): - completeprompt += random.choice(artmovementlist) + ", " + completeprompt += "-artmovement-, " if(normal_dist(insanitylevel) and generatelighting == True): completeprompt += "-lighting-, " @@ -1201,7 +1214,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += random.choice(photoadditionlist) + ", " if(isphoto == 1 and generatecamera == True): - completeprompt += random.choice(cameralist) + ", " + completeprompt += "-camera-, " if(normal_dist(insanitylevel) or isphoto == 1): if(generatelens == True): @@ -1212,13 +1225,13 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # vomit some cool/wierd things into the prompt if(uncommon_dist(insanitylevel) and generatevomit == True): - completeprompt += random.choice(vomitlist) + ", " + completeprompt += "-vomit-, " if(uncommon_dist(insanitylevel)): - completeprompt += random.choice(vomitlist) + ", " + completeprompt += "-vomit-, " #adding a great work of art, like starry night has cool effects. But this should happen only very rarely. if(novel_dist(insanitylevel) and generategreatwork == True): - completeprompt += " in the style of " + random.choice(greatworklist) + ", " + completeprompt += " in the style of -greatwork-, " #adding a poemline. But this should happen only very rarely. if(novel_dist(insanitylevel) and generatepoemline == True): @@ -1366,9 +1379,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # custom style list if(uncommon_dist(insanitylevel) and generatestyle == True): - completeprompt += random.choice(stylestiloralist) + ", " + completeprompt += "-styletilora-, " if(uncommon_dist(insanitylevel)): - completeprompt += random.choice(stylestiloralist) + ", " + completeprompt += "-styletilora-, " # custom suffix list @@ -1407,6 +1420,9 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all artistmode = artistmodeslist[modeselector] if artistmode in ["hybrid","switching"] and end - step == 1: artistmode = "normal" + # if there are not enough artists in the list, then just go normal + if(len(artistlist) < 3): + artistmode = "normal" if artistmode in ["hybrid", "stopping", "adding","switching"]: completeprompt += " [" @@ -1473,7 +1489,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(unique_dist(insanitylevel)): # sometimes, its just nice to have descriptor and a normal "outfit". We use mini outfits for this! completeprompt = completeprompt.replace("-outfit-", "-minioutfit-",1) - completeprompt = completeprompt.replace("-artist-", "art by -artist-") + # lol, this needs a rewrite :D @@ -1536,18 +1552,33 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all "-artistphotography-" in completeprompt or "-emoji-" in completeprompt or "-timeperiod-" in completeprompt or - "-shotsize-" in completeprompt): - allwildcardslistnohybrid = [ "-color-","-object-", "-animal-", "-fictional-","-nonfictional-","-building-","-vehicle-","-location-","-conceptprefix-","-food-","-haircolor-","-hairstyle-","-job-", "-accessory-", "-humanoid-", "-manwoman-", "-human-", "-colorscheme-", "-mood-", "-genderdescription-", "-artmovement-", "-malefemale-", "-bodytype-", "-minilocation-", "-minilocationaddition-", "-pose-", "-season-", "-minioutfit-", "-elaborateoutfit-", "-minivomit-", "-vomit-", "-rpgclass-", "-subjectfromfile-", "-brand-", "-space-", "-artist-", "-imagetype-", "-othertype-", "-quality-", "-lighting-", "-camera-", "-lens-","-imagetypequality-", "-poemline-", "-songline-", "-greatwork-", "-artistfantasy-", "-artistpopular-", "-artistromanticism-", "-artistphotography-", "-emoji-", "-timeperiod-", "-shotsize-"] - allwildcardslistnohybridlists = [colorlist, objectlist, animallist, fictionallist, nonfictionallist, buildinglist, vehiclelist, locationlist,conceptprefixlist,foodlist,haircolorlist, hairstylelist,joblist, accessorielist, humanoidlist, manwomanlist, humanlist, colorschemelist, moodlist, genderdescriptionlist, artmovementlist, malefemalelist, bodytypelist, minilocationlist, minilocationadditionslist, poselist, seasonlist, minioutfitlist, elaborateoutfitlist, minivomitlist, vomitlist, rpgclasslist, customsubjectslist, brandlist, spacelist, artistlist, imagetypelist, othertypelist, qualitylist, lightinglist, cameralist, lenslist, imagetypequalitylist, poemlinelist, songlinelist, greatworklist, fantasyartistlist, popularartistlist, romanticismartistlist, photographyartistlist, emojilist, timeperiodlist, shotsizelist] + "-shotsize-" in completeprompt or + "-musicgenre-" in completeprompt or + "-animaladdition-" in completeprompt or + "-addontolocationinside-" in completeprompt or + "-addontolocation-" in completeprompt or + "-objectaddition-" in completeprompt or + "-humanaddition-" in completeprompt or + "-overalladdition-" in completeprompt or + "-focus-" in completeprompt or + "-direction-" in completeprompt or + "-styletilora-" in completeprompt or + "-manwomanrelation-" in completeprompt or + "-waterlocation-" in completeprompt or + "-container-" in completeprompt): + allwildcardslistnohybrid = [ "-color-","-object-", "-animal-", "-fictional-","-nonfictional-","-building-","-vehicle-","-location-","-conceptprefix-","-food-","-haircolor-","-hairstyle-","-job-", "-accessory-", "-humanoid-", "-manwoman-", "-human-", "-colorscheme-", "-mood-", "-genderdescription-", "-artmovement-", "-malefemale-", "-bodytype-", "-minilocation-", "-minilocationaddition-", "-pose-", "-season-", "-minioutfit-", "-elaborateoutfit-", "-minivomit-", "-vomit-", "-rpgclass-", "-subjectfromfile-", "-brand-", "-space-", "-artist-", "-imagetype-", "-othertype-", "-quality-", "-lighting-", "-camera-", "-lens-","-imagetypequality-", "-poemline-", "-songline-", "-greatwork-", "-artistfantasy-", "-artistpopular-", "-artistromanticism-", "-artistphotography-", "-emoji-", "-timeperiod-", "-shotsize-", "-musicgenre-", "-animaladdition-", "-addontolocationinside-", "-addontolocation-", "-objectaddition-", "-humanaddition-", "-overalladdition-", "-focus-", "-direction-", "-styletilora-", "-manwomanrelation-", "-waterlocation-", "-container-"] + allwildcardslistnohybridlists = [colorlist, objectlist, animallist, fictionallist, nonfictionallist, buildinglist, vehiclelist, locationlist,conceptprefixlist,foodlist,haircolorlist, hairstylelist,joblist, accessorielist, humanoidlist, manwomanlist, humanlist, colorschemelist, moodlist, genderdescriptionlist, artmovementlist, malefemalelist, bodytypelist, minilocationlist, minilocationadditionslist, poselist, seasonlist, minioutfitlist, elaborateoutfitlist, minivomitlist, vomitlist, rpgclasslist, customsubjectslist, brandlist, spacelist, artistlist, imagetypelist, othertypelist, qualitylist, lightinglist, cameralist, lenslist, imagetypequalitylist, poemlinelist, songlinelist, greatworklist, fantasyartistlist, popularartistlist, romanticismartistlist, photographyartistlist, emojilist, timeperiodlist, shotsizelist, musicgenrelist, animaladditionlist, addontolocationinsidelist, addontolocationlist, objectadditionslist, humanadditionlist, overalladditionlist, focuslist, directionlist, stylestiloralist, manwomanrelationlist, waterlocationlist, containerlist] allwildcardslistwithhybrid = ["-material-", "-descriptor-", "-outfit-", "-conceptsuffix-","-culture-", "-objecttotal-"] allwildcardslistwithhybridlists = [materiallist, descriptorlist,outfitlist,conceptsuffixlist,culturelist, objecttotallist] + # keywordsinstring = any(word.lower() in givensubject.lower() for word in keywordslist) for wildcard in allwildcardslistnohybrid: attachedlist = allwildcardslistnohybridlists[allwildcardslistnohybrid.index(wildcard)] completeprompt = replacewildcard(completeprompt, insanitylevel, wildcard, attachedlist,False) + for wildcard in allwildcardslistwithhybrid: attachedlist = allwildcardslistwithhybridlists[allwildcardslistwithhybrid.index(wildcard)] @@ -1571,25 +1602,43 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # function def replacewildcard(completeprompt, insanitylevel, wildcard,listname, activatehybridorswap): + if(len(listname) == 0): # handling empty lists completeprompt = completeprompt.replace(wildcard, "",1) else: while wildcard in completeprompt: - if(unique_dist(insanitylevel) and activatehybridorswap == True): + if(unique_dist(insanitylevel) and activatehybridorswap == True and len(listname)>2): hybridorswaplist = ["hybrid", "swap"] hybridorswap = random.choice(hybridorswaplist) - hybridorswapreplacementvalue = "[" + random.choice(listname) + replacementvalue = random.choice(listname) + listname.remove(replacementvalue) + hybridorswapreplacementvalue = "[" + replacementvalue if(hybridorswap == "hybrid"): - hybridorswapreplacementvalue += "|" + random.choice(listname) + "] " + replacementvalue = random.choice(listname) + listname.remove(replacementvalue) + hybridorswapreplacementvalue += "|" + replacementvalue + "] " if(hybridorswap == "swap"): - hybridorswapreplacementvalue += ":" + random.choice(listname) + ":" + str(random.randint(1,20)) + "] " + replacementvalue = random.choice(listname) + listname.remove(replacementvalue) + hybridorswapreplacementvalue += ":" + replacementvalue + ":" + str(random.randint(1,20)) + "] " completeprompt = completeprompt.replace(wildcard, hybridorswapreplacementvalue,1) - completeprompt = completeprompt.replace(wildcard, random.choice(listname),1) + #if list is not empty + if(bool(listname)): + replacementvalue = random.choice(listname) + listname.remove(replacementvalue) + if(wildcard == "-artist-"): + replacementvalue = "art by " + replacementvalue + + else: + replacementvalue = "" + + completeprompt = completeprompt.replace(wildcard, replacementvalue,1) + return completeprompt @@ -1606,6 +1655,9 @@ def cleanup(completeprompt): # Move the extracted matches to the end of completeprompt completeprompt += " " + " ".join(matches) + # sometimes if there are not enough artist, we get left we things formed as (:1.2) + completeprompt = re.sub('\(\:\d+\.\d+\)', '', completeprompt) + # all cleanup steps moved here completeprompt = re.sub('\[ ', '[', completeprompt) completeprompt = re.sub('\[,', '[', completeprompt) @@ -1643,6 +1695,8 @@ def cleanup(completeprompt): completeprompt = re.sub('(?