diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index 2b84bca..907cfd3 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -191,6 +191,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all charactertypelist = csv_to_list("charactertypes", antilist) objectstoholdlist = csv_to_list("objectstohold", antilist) episodetitlelist = csv_to_list(csvfilename="episodetitles",antilist=antilist,skipheader=True) + flufferlist = csv_to_list("fluff", antilist) tokenlist = [] @@ -836,7 +837,11 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all if(imagetype == "art blaster mode"): specialmode = True - artblastermode = True + if(uncommon_dist(insanitylevel)): + artblastermode = True + else: + onlysubjectmode = True + artifymode = True print("Running in art blaster mode") if(imagetype == "unique art mode"): @@ -888,6 +893,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all dynamictemplatesmode = True print("Running with dynamic templates mode") + # just for testing, you can't choose this. Artify runs through Art Blaster instead. if(imagetype == "artify mode"): specialmode = True onlysubjectmode = True @@ -1343,6 +1349,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += "-imagetype-, " if(unique_dist(insanitylevel) and bool(colorschemelist)): completeprompt += "-colorscheme-, " + if(uncommon_dist(insanitylevel) and bool(artistlist)): + completeprompt += "-artiststyle-, " step = step + 1 # start unique art here @@ -1364,6 +1372,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += "-imagetype-, " if(unique_dist(insanitylevel) and bool(qualitylist)): completeprompt += "-quality-, " + if(unique_dist(insanitylevel) and bool(artistlist)): + completeprompt += "-artistdescription-, " step = step + 1 @@ -1374,6 +1384,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all while step < end: if(uncommon_dist(insanitylevel) and bool(vomitlist)): completeprompt += "-vomit-, " + if(uncommon_dist(insanitylevel) and bool(flufferlist)): + completeprompt += "-fluff-, " if(uncommon_dist(insanitylevel) and bool(qualitylist)): completeprompt += "-quality-, " if(unique_dist(insanitylevel) and bool(minivomitlist)): @@ -1399,6 +1411,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += "-artmovement-, " if(unique_dist(insanitylevel) and bool(lightinglist)): completeprompt += "-lighting-, " + if(unique_dist(insanitylevel) and bool(allstylessuffixlist)): + completeprompt += "-allstylessuffix-, " step = step + 1 # start photo fantasy here @@ -1469,6 +1483,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all completeprompt += chosenstyleprefix if(dynamictemplatesmode == True): + if(artists == "none"): + dynamictemplatesprefixlist = [sentence for sentence in dynamictemplatesprefixlist if "-artist-" not in sentence.lower()] chosenstyleprefix = random.choice(dynamictemplatesprefixlist) completeprompt += chosenstyleprefix if(chosenstyleprefix[-1] == "."): @@ -2452,7 +2468,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # if we have artists, maybe go in artists descriptor mode if(templatemode == False and specialmode == False and "-artist-" in completeprompt and common_dist(max(8 - insanitylevel,3))): for i in range(random.randint(1,3)): - print("adding artist stuff") + # print("adding artist stuff") completeprompt += ", -artistdescription-" descriptivemode = True completeprompt += ", " @@ -2462,7 +2478,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all # if not, we could go in random styles descriptor mode elif(templatemode == False and specialmode == False and uncommon_dist(10 - insanitylevel)): for i in range(random.randint(1,max(7,insanitylevel + 2))): - print("adding random crap") + # print("adding random crap") completeprompt += ", -allstylessuffix-" descriptivemode = True completeprompt += ", " @@ -2682,9 +2698,11 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all - if(dynamictemplatesmode == True and normal_dist(insanitylevel) and templatesmodechance == 0): - if("-artist-" in completeprompt): + if(dynamictemplatesmode == True and common_dist(insanitylevel) and templatesmodechance == 0): + if("-artist-" in completeprompt or artists == "none"): dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artist-" not in sentence.lower()] + dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artiststyle-" not in sentence.lower()] + dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artistdescription-" not in sentence.lower()] if("-lighting-" in completeprompt): dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-lighting-" not in sentence.lower()] if("-shotsize-" in completeprompt): @@ -3164,11 +3182,12 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all "-objectstohold-" in completeprompt or "-episodetitle-" in completeprompt or "-token-" in completeprompt or - "-allstylessuffix-" in completeprompt): + "-allstylessuffix-" in completeprompt or + "-fluff-" 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-","-subjectfromfile-", "-brand-", "-space-", "-artist-", "-imagetype-", "-othertype-", "-quality-", "-lighting-", "-camera-", "-lens-","-imagetypequality-", "-poemline-", "-songline-", "-greatwork-", "-fantasyartist-", "-popularartist-", "-romanticismartist-", "-photographyartist-", "-emoji-", "-timeperiod-", "-shotsize-", "-musicgenre-", "-animaladdition-", "-addontolocationinside-", "-addontolocation-", "-objectaddition-", "-humanaddition-", "-overalladdition-", "-focus-", "-direction-", "-styletilora-", "-manwomanrelation-", "-waterlocation-", "-container-", "-firstname-", "-flora-", "-print-", "-miniactivity-", "-pattern-", "-animalsuffixaddition-", "-chair-", "-cardname-", "-covering-", "-heshe-", "-hisher-", "-himher-", "-outfitdescriptor-", "-hairdescriptor-", "-hairvomit-", "-humandescriptor-", "-manwomanmultiple-", "-facepart-", "-buildfacepart-", "-outfitvomit-", "-locationdescriptor-", "-basicbitchdescriptor-", "-animaldescriptor-", "-humanexpression-", "-humanvomit-", "-eyecolor-", "-fashiondesigner-", "-colorcombination-", "-materialcombination-", "-oppositefictional-", "-oppositenonfictional-", "-photoaddition-", "-age-", "-agecalculator-", "-gregmode-" - ,"-portraitartist-", "-characterartist-" , "-landscapeartist-", "-scifiartist-", "-graphicdesignartist-", "-digitalartist-", "-architectartist-", "-cinemaartist-", "-setting-", "-charactertype-", "-objectstohold-", "-episodetitle-", "-token-", "-allstylessuffix-"] + ,"-portraitartist-", "-characterartist-" , "-landscapeartist-", "-scifiartist-", "-graphicdesignartist-", "-digitalartist-", "-architectartist-", "-cinemaartist-", "-setting-", "-charactertype-", "-objectstohold-", "-episodetitle-", "-token-", "-allstylessuffix-", "-fluff-"] 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, customoutfitslist, 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, firstnamelist, floralist, printlist, miniactivitylist, patternlist, animalsuffixadditionlist, chairlist, cardnamelist, coveringlist, heshelist, hisherlist, himherlist, outfitdescriptorlist, hairdescriptorlist, hairvomitlist, humandescriptorlist, manwomanmultiplelist, facepartlist, buildfacepartlist, outfitvomitlist, locationdescriptorlist, basicbitchdescriptorlist, animaldescriptorlist, humanexpressionlist, humanvomitlist, eyecolorlist, fashiondesignerlist, colorcombinationlist, materialcombinationlist, oppositefictionallist, oppositenonfictionallist, photoadditionlist, agelist, agecalculatorlist, gregmodelist - , portraitartistlist, characterartistlist, landscapeartistlist, scifiartistlist, graphicdesignartistlist, digitalartistlist, architectartistlist, cinemaartistlist, settinglist, charactertypelist, objectstoholdlist, episodetitlelist, tokenlist, allstylessuffixlist] + , portraitartistlist, characterartistlist, landscapeartistlist, scifiartistlist, graphicdesignartistlist, digitalartistlist, architectartistlist, cinemaartistlist, settinglist, charactertypelist, objectstoholdlist, episodetitlelist, tokenlist, allstylessuffixlist, flufferlist] allwildcardslistwithhybrid = ["-material-", "-descriptor-", "-outfit-", "-conceptsuffix-","-culture-", "-objecttotal-", "-outfitprinttotal-", "-element-"] allwildcardslistwithhybridlists = [materiallist, descriptorlist,outfitlist,conceptsuffixlist,culturelist, objecttotallist, outfitprinttotallist, elementlist] @@ -3369,6 +3388,7 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender charactertypelist = csv_to_list("charactertypes", antilist) objectstoholdlist = csv_to_list("objectstohold", antilist) episodetitlelist = csv_to_list(csvfilename="episodetitles",antilist=antilist,skipheader=True) + flufferlist = csv_to_list("fluff", antilist) outfitdescriptorlist = csv_to_list("outfitdescriptors",antilist) hairdescriptorlist = csv_to_list("hairdescriptors",antilist) @@ -3611,6 +3631,9 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender prompt = prompt.replace(combination," -objectstohold- ") if lowercase_combination in [x.lower() for x in episodetitlelist] and chance_roll(insanitylevel, "uncommon"): prompt = prompt.replace(combination," -episodetitle- ") + + if lowercase_combination in [x.lower() for x in flufferlist] and chance_roll(insanitylevel, "uncommon"): + prompt = prompt.replace(combination," -fluff- ") #if lowercase_combination in [x.lower() for x in conceptprefixlist] and chance_roll(insanitylevel, "uncommon"): @@ -3920,12 +3943,13 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender "-charactertype-" in completeprompt or "-objectstohold-" in completeprompt or "-episodetitle-" in completeprompt or - "-allstylessuffix-" in completeprompt + "-allstylessuffix-" in completeprompt or + "-fluff-" 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-", "-subjectfromfile-", "-brand-", "-space-", "-artist-", "-imagetype-", "-othertype-", "-quality-", "-lighting-", "-camera-", "-lens-","-imagetypequality-", "-poemline-", "-songline-", "-greatwork-", "-fantasyartist-", "-popularartist-", "-romanticismartist-", "-photographyartist-", "-emoji-", "-timeperiod-", "-shotsize-", "-musicgenre-", "-animaladdition-", "-objectaddition-", "-humanaddition-", "-overalladdition-", "-focus-", "-direction-", "-styletilora-", "-manwomanrelation-", "-waterlocation-", "-container-", "-firstname-", "-flora-", "-print-", "-miniactivity-", "-pattern-", "-chair-", "-cardname-", "-covering-", "-outfitdescriptor-", "-hairdescriptor-", "-hairvomit-", "-humandescriptor-", "-manwomanmultiple-", "-facepart-", "-locationdescriptor-", "-basicbitchdescriptor-", "-animaldescriptor-", "-humanexpression-", "-humanvomit-", "-eyecolor-", "-fashiondesigner-", "-colorcombination-", "-materialcombination-", "-photoaddition-", "-age-", "agecalculator-", "-gregmode-" - ,"-portraitartist-", "-characterartist-" , "-landscapeartist-", "-scifiartist-", "-graphicdesignartist-", "-digitalartist-", "-architectartist-", "-cinemaartist-", "-setting-", "-charactertype-", "-objectstohold-", "-episodetitle-", "-allstylessuffix-"] + ,"-portraitartist-", "-characterartist-" , "-landscapeartist-", "-scifiartist-", "-graphicdesignartist-", "-digitalartist-", "-architectartist-", "-cinemaartist-", "-setting-", "-charactertype-", "-objectstohold-", "-episodetitle-", "-allstylessuffix-", "-fluff-"] 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, customoutfitslist, brandlist, spacelist, artistlist, imagetypelist, othertypelist, qualitylist, lightinglist, cameralist, lenslist, imagetypequalitylist, poemlinelist, songlinelist, greatworklist, fantasyartistlist, popularartistlist, romanticismartistlist, photographyartistlist, emojilist, timeperiodlist, shotsizelist, musicgenrelist, animaladditionlist, objectadditionslist, humanadditionlist, overalladditionlist, focuslist, directionlist, stylestiloralist, manwomanrelationlist, waterlocationlist, containerlist, firstnamelist, floralist, printlist, miniactivitylist, patternlist, chairlist, cardnamelist, coveringlist, outfitdescriptorlist, hairdescriptorlist, hairvomitlist, humandescriptorlist, manwomanmultiplelist, facepartlist, locationdescriptorlist, basicbitchdescriptorlist, animaldescriptorlist, humanexpressionlist, humanvomitlist, eyecolorlist, fashiondesignerlist, colorcombinationlist, materialcombinationlist, photoadditionlist, agelist, agecalculatorlist, gregmodelist - , portraitartistlist, characterartistlist, landscapeartistlist, scifiartistlist, graphicdesignartistlist, digitalartistlist, architectartistlist, cinemaartistlist, settinglist, charactertypelist, objectstoholdlist, episodetitlelist, allstylessuffixlist] + , portraitartistlist, characterartistlist, landscapeartistlist, scifiartistlist, graphicdesignartistlist, digitalartistlist, architectartistlist, cinemaartistlist, settinglist, charactertypelist, objectstoholdlist, episodetitlelist, allstylessuffixlist, flufferlist] allwildcardslistwithhybrid = ["-material-", "-descriptor-", "-outfit-", "-conceptsuffix-","-culture-", "-objecttotal-", "-outfitprinttotal-", "-element-"] allwildcardslistwithhybridlists = [materiallist, descriptorlist,outfitlist,conceptsuffixlist,culturelist, objecttotallist, outfitprinttotallist, elementlist] @@ -4363,6 +4387,9 @@ def artify_prompt(insanitylevel = 5, prompt = "", artists = "all", amountofartis def flufferizer(prompt = "", amountoffluff = "dynamic", seed = -1, reverse_polarity = False): + if(amountoffluff == "none"): + return prompt + # set seed # For use in ComfyUI (might bring to Automatic1111 as well) # lets do it when its larger than 0 diff --git a/csvfiles/artists_and_category.csv b/csvfiles/artists_and_category.csv index 519f20c..2cf30b3 100644 --- a/csvfiles/artists_and_category.csv +++ b/csvfiles/artists_and_category.csv @@ -1582,7 +1582,7 @@ Mike Mignola,"comics, dark, high contrast",Comics,"Dark, gothic, atmospheric, mi Gjon Mili,"photography, high contrast",Photography,"Light painting, motion studies, experimental techniques",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Alexander Millar,"figurativism, colorful",Painting,"Scottish urban scenes, nostalgic, working-class themes",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Anja Millen,"abstract, colorful, expressionism",Painting,"Surrealism, dreamlike landscapes, ethereal imagery",0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -Frank Miller,"comics, dark, high contrast",Comics,"Graphic novels, noir style, Sin City, Batman: The Dark Knight",1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +Frank Miller,"comics, dark, high contrast",Comics,"Graphic novel, gritty, noir style, dynamic, iconic style",1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Ian Miller,"detailed, high contrast, monochromatic",Illustration,"Fantasy, intricate detail, dark atmospheres",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Marjorie Miller,"portrait, figurativism",Painting,"Realistic portraits, intimate moments, soft brushwork",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Richard E. Miller,"impressionism, colorful, portrait",Painting,"Impressionism, domestic scenes, dappled light",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/csvfiles/minivomit.csv b/csvfiles/minivomit.csv index ee5fff4..d33dca5 100644 --- a/csvfiles/minivomit.csv +++ b/csvfiles/minivomit.csv @@ -20,4 +20,5 @@ Rule of Thirds award winning stylized -allstylessuffix- --artistdescription- \ No newline at end of file +-artistdescription- +-fluff- \ No newline at end of file diff --git a/csvfiles/quality.csv b/csvfiles/quality.csv index 89494a0..d762b77 100644 --- a/csvfiles/quality.csv +++ b/csvfiles/quality.csv @@ -37,4 +37,7 @@ Concept Art World contest winner Flickr Unsplash -Pixabay \ No newline at end of file +Pixabay +-fluff- +-fluff-, -fluff- +-fluff-, -fluff-, -fluff- \ No newline at end of file diff --git a/csvfiles/special_lists/imagetypemodes.csv b/csvfiles/special_lists/imagetypemodes.csv index 621b63d..e757e8f 100644 --- a/csvfiles/special_lists/imagetypemodes.csv +++ b/csvfiles/special_lists/imagetypemodes.csv @@ -6,4 +6,5 @@ unique art mode massive madness mode photo fantasy mode subject only mode -fixed styles mode \ No newline at end of file +fixed styles mode +dynamic templates mode \ No newline at end of file diff --git a/csvfiles/templates/dynamic_templates_prefix.csv b/csvfiles/templates/dynamic_templates_prefix.csv index 9a23361..a98c089 100644 --- a/csvfiles/templates/dynamic_templates_prefix.csv +++ b/csvfiles/templates/dynamic_templates_prefix.csv @@ -12,9 +12,10 @@ The very -descriptor- OR(artwork;art;image;scene) is inspired by OR(-imagetype-; a -allstylessuffix- type of OR(artwork;art;image;scene) From the -age-, this OR(artwork;art;image;scene) OR(;based on OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-);uncommon) In OR(-material-;-materialcombination-;-color-;-colorcombination-;-pattern-;-print-) material, this OR(;-imagetypequality-;uncommon) OR(artwork;art;sculpture;scene) --artist- is expressing OR(an -mood- mood;-imagetypequality- skill;the essence of -basicbitchdescriptor-;-artiststyle- art) +-artist- is expressing OR(an -mood- mood;-imagetypequality- skill;the essence of -basicbitchdescriptor-;-artiststyle-;-fluff- art) This OR(photograph;artwork;art;sculpture;scene;-imagetype-) is shot in -shotsize- OR(;around -timeperiod-;uncommon) -In full OR(-artmovement-;-basicbitchdescriptor-;-pattern-;-print-;-animal-;-allstylessuffix-;-rpgclass-) style. +In OR(full;-imagetypequality-;-fluff-;uncommon) OR(-artmovement-;-basicbitchdescriptor-;-pattern-;-print-;-animal-;-allstylessuffix-;-rpgclass-) style. On a OR(-imagetypequality-;-basicbitchdescriptor-) OR(OR(;gradient;uncommon) background;art;artwork;image) OR(;in OR(-colorscheme-;-colorcombination-) colors;uncommon) a OR(-imagetypequality-;-basicbitchdescriptor-;-mood-)-style OR(OR(;gradient;uncommon) background;art;artwork;image) --artistdescription-, -artistmedium- by -artist- \ No newline at end of file +-artistdescription-, -artistmedium- by -artist- +Art by -artist-, -fluff- defines the -colorscheme- backgroud, drawing inspiration from -greatwork-. \ No newline at end of file diff --git a/csvfiles/templates/dynamic_templates_suffix.csv b/csvfiles/templates/dynamic_templates_suffix.csv index 7026ef3..3117f6d 100644 --- a/csvfiles/templates/dynamic_templates_suffix.csv +++ b/csvfiles/templates/dynamic_templates_suffix.csv @@ -16,5 +16,8 @@ OR(It;The scene) is set with a OR(dynamic;quality;still;tranquil;-imagetypequali Blending different mediums such as -othertype- and -othertype-. Elements of OR(-colorcombination- colors;-color-;-colorscheme-;-setting-;-allstylessuffix-) It has detailing in OR(-material-;-materialcombination-). --artistdescription-, -artistdescription-, -artistdescription- --allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix- \ No newline at end of file +-artistdescription-, -artistdescription-, -artistdescription-. +-allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix-, -allstylessuffix-. +-quality-, -fluff-. +OR(In the background;On top of the image;On the bottom of the image) OR(is the OR(;large;uncommon) text;are the words) "OR(-poemline-;-songline-;-episodetitle-)". +The OR(;-imagetypequality-;-basicbitchdescriptor-;-descriptor-;uncommon) background is composed of OR(-material- materials;-pattern- patterns;-print- print). \ No newline at end of file diff --git a/main.py b/main.py index 9b8eed6..bba4df3 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ from call_extras import * from model_lists import * -def generateimages(amount = 1, size = "all",model = "currently selected model",samplingsteps = "40",cfg= "7",hiresfix = True,hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+", hiresscale="2",apiurl="http://127.0.0.1:7860",qualitygate=False,quality="7.6",runs="5",insanitylevel="5",subject="all", artist="all", imagetype="all",silentmode=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma", img2imgbatch = "1", img2imgsamplingsteps = "20", img2imgcfg = "7", img2imgsamplingmethod = "DPM++ SDE Karras", img2imgupscaler = "R-ESRGAN 4x+", img2imgmodel = "currently selected model", img2imgactivate = False, img2imgscale = "2", img2imgpadding = "64",img2imgdenoisestrength="0.3",ultimatesdupscale=False,usdutilewidth = "512", usdutileheight = "0", usdumaskblur = "8", usduredraw ="Linear", usduSeamsfix = "None", usdusdenoise = "0.35", usduswidth = "64", usduspadding ="32", usdusmaskblur = "8",controlnetenabled=False, controlnetmodel="",img2imgdenoisestrengthmod="-0.05",enableextraupscale = False,controlnetblockymode = False,extrasupscaler1 = "all",extrasupscaler2 ="all",extrasupscaler2visiblity="0.5",extrasupscaler2gfpgan="0",extrasupscaler2codeformer="0.15",extrasupscaler2codeformerweight="0.1",extrasresize="2",onlyupscale="false",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender="all", chosensubjectsubtypeobject="all", chosensubjectsubtypehumanoid="all", chosensubjectsubtypeconcept="all", increasestability = False, qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used", basesize = "512", promptvariantinsanitylevel = 0, givenoutfit = "", autonegativeprompt = True, autonegativepromptstrength = 0, autonegativepromptenhance = False, base_model = "SD1.5", OBP_preset = ""): +def generateimages(amount = 1, size = "all",model = "currently selected model",samplingsteps = "40",cfg= "7",hiresfix = True,hiressteps ="0",denoisestrength="0.6",samplingmethod="DPM++ SDE Karras", upscaler="R-ESRGAN 4x+", hiresscale="2",apiurl="http://127.0.0.1:7860",qualitygate=False,quality="7.6",runs="5",insanitylevel="5",subject="all", artist="all", imagetype="all",silentmode=False, workprompt="", antistring="",prefixprompt="", suffixprompt="", negativeprompt="",promptcompounderlevel = "1", seperator="comma", img2imgbatch = "1", img2imgsamplingsteps = "20", img2imgcfg = "7", img2imgsamplingmethod = "DPM++ SDE Karras", img2imgupscaler = "R-ESRGAN 4x+", img2imgmodel = "currently selected model", img2imgactivate = False, img2imgscale = "2", img2imgpadding = "64",img2imgdenoisestrength="0.3",ultimatesdupscale=False,usdutilewidth = "512", usdutileheight = "0", usdumaskblur = "8", usduredraw ="Linear", usduSeamsfix = "None", usdusdenoise = "0.35", usduswidth = "64", usduspadding ="32", usdusmaskblur = "8",controlnetenabled=False, controlnetmodel="",img2imgdenoisestrengthmod="-0.05",enableextraupscale = False,controlnetblockymode = False,extrasupscaler1 = "all",extrasupscaler2 ="all",extrasupscaler2visiblity="0.5",extrasupscaler2gfpgan="0",extrasupscaler2codeformer="0.15",extrasupscaler2codeformerweight="0.1",extrasresize="2",onlyupscale="false",givensubject="",smartsubject=True,giventypeofimage="",imagemodechance=20, gender="all", chosensubjectsubtypeobject="all", chosensubjectsubtypehumanoid="all", chosensubjectsubtypeconcept="all", increasestability = False, qualityhiresfix = False, qualitymode = "highest", qualitykeep="keep used", basesize = "512", promptvariantinsanitylevel = 0, givenoutfit = "", autonegativeprompt = True, autonegativepromptstrength = 0, autonegativepromptenhance = False, base_model = "SD1.5", OBP_preset = "", amountoffluff = "none"): loops = int(amount) # amount of images to generate steps = 0 upscalefilelist=[] @@ -143,6 +143,8 @@ def generateimages(amount = 1, size = "all",model = "currently selected model",s if(autonegativeprompt): negativeprompt = build_dynamic_negative(positive_prompt=randomprompt, insanitylevel=autonegativepromptstrength,enhance=autonegativepromptenhance, existing_negative_prompt=originalnegativeprompt, base_model=base_model) + randomprompt = flufferizer(prompt=randomprompt, amountoffluff=amountoffluff) + if(randomsubject == ""): # make the filename, from from a to the first comma # find the index of the first comma after "of a" or end of the prompt diff --git a/prompttester.py b/prompttester.py index 8e0d2e3..f9a0de0 100644 --- a/prompttester.py +++ b/prompttester.py @@ -95,16 +95,16 @@ def generateprompts(amount = 1,insanitylevel="5",subject="all", artist="all", im print("All done!") generateprompts(10,5 - ,"all" # subject - ,"all" # artists - ,"artify mode" # image type "only other types", "only templates mode", "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" + ,"concept" # subject + ,"none" # artists + ,"dynamic templates mode" # image type "only other types", "only templates mode", "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 ,"","","PREFIXPROMPT" ,"SUFFIXPROMPT" ,"",1,"" ,"" # subject override ,True, # smart subject - "",20 + "",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 diff --git a/scripts/onebuttonprompt.py b/scripts/onebuttonprompt.py index 029ebd7..0835090 100644 --- a/scripts/onebuttonprompt.py +++ b/scripts/onebuttonprompt.py @@ -25,7 +25,7 @@ subjectsubtypesobject = ["all"] subjectsubtypeshumanoid = ["all"] subjectsubtypesconcept = ["all"] artists = ["all", "all (wild)", "none", "popular", "greg mode", "3D", "abstract", "angular", "anime" ,"architecture", "art nouveau", "art deco", "baroque", "bauhaus", "cartoon", "character", "children's illustration", "cityscape", "cinema", "clean", "cloudscape", "collage", "colorful", "comics", "cubism", "dark", "detailed", "digital", "expressionism", "fantasy", "fashion", "fauvism", "figurativism", "gore", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "nudity", "photography", "pop art", "portrait", "primitivism", "psychedelic", "realism", "renaissance", "romanticism", "scene", "sci-fi", "sculpture", "seascape", "space", "stained glass", "still life", "storybook realism", "street art", "streetscape", "surrealism", "symbolism", "textile", "ukiyo-e", "vibrant", "watercolor", "whimsical"] -imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"] +imagetypes = ["all", "all - force multiple", "photograph", "octane render","digital art","concept art", "painting", "portrait", "anime key visual", "only other types", "only templates mode", "dynamic templates mode", "art blaster mode", "quality vomit mode", "color cannon mode", "unique art mode", "massive madness mode", "photo fantasy mode", "subject only mode", "fixed styles mode", "the tokinator"] promptmode = ["at the back", "in the front"] promptcompounder = ["1", "2", "3", "4", "5"] ANDtogglemode = ["none", "automatic", "prefix AND prompt + suffix", "prefix + prefix + prompt + suffix"] @@ -35,6 +35,8 @@ genders = ["all", "male", "female"] qualitymodelist = ["highest", "gated"] qualitykeeplist = ["keep used","keep all"] +amountofflufflist = ["none", "dynamic", "short", "medium", "long"] + #for autorun and upscale sizelist = ["all", "portrait", "wide", "square", "ultrawide", "ultraheight", "wild"] basesizelist = ["512", "768", "1024"] @@ -234,12 +236,15 @@ 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, OBP_preset): + 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, amountoffluff): 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, OBP_preset)) + base_prompt = 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) + fluffed_prompt = flufferizer(prompt=base_prompt, amountoffluff=amountoffluff) + promptlist.append(fluffed_prompt) + return promptlist @@ -510,23 +515,25 @@ class Script(scripts.Script): only templates mode is perfect for beginners, who want to see some good results fast. - 10. art blaster mode --> Special generation mode that focusses on art movements, stylings and artists. + 10. dynamic templates mode --> A method that uses prompts in a more natural language. - 11. quality vomit mode --> Special generation mode that focusses on qualifiers and stylings. + 11. art blaster mode --> Special generation mode that focusses on art movements, stylings and artists. - 12. color cannon mode --> Special generation mode that focusses on color scheme's and moods. + 12. quality vomit mode --> Special generation mode that focusses on qualifiers and stylings. - 13. unique art mode --> Special generation mode that focusses on other image types, art movements, stylings and lighting. + 13. color cannon mode --> Special generation mode that focusses on color scheme's and moods. - 14. massive madness mode --> Special generation mode, creates prompt soup. Almost pure randomness. + 14. unique art mode --> Special generation mode that focusses on other image types, art movements, stylings and lighting. - 15. photo fantasy mode --> Special generation mode that focusses on photographs, cameras, lenses and lighting. + 15. massive madness mode --> Special generation mode, creates prompt soup. Almost pure randomness. - 16. subject only mode --> Will only generate a subject, with no additional frills. + 16. photo fantasy mode --> Special generation mode that focusses on photographs, cameras, lenses and lighting. - 17. fixed styles mode --> Generate a subject on top of a fixed style. + 17. subject only mode --> Will only generate a subject, with no additional frills. - 18. the tokinator --> Complete random word gibberish mode, use at own risk + 18. fixed styles mode --> Generate a subject on top of a fixed style. + + 19. the tokinator --> Complete random word gibberish mode, use at own risk ### 🎲🖼️ One in X chance to use special image type mode @@ -640,12 +647,20 @@ class Script(scripts.Script): SDXL --> More natural language (default) Stable Cascade --> More natural language and no prompt weights + + ⭐ Flufferizer + + A simple and quick implementiation of Fooocus prompt magic + """ ) with gr.Row(variant="compact"): base_model = gr.Dropdown( basemodelslist, label="✨ Base model", value="SDXL") + with gr.Row(variant="compact"): + amountoffluff = gr.Dropdown( + amountofflufflist, label="⭐ Flufferizer", value="dynamic") with gr.Row(variant="compact"): with gr.Column(variant="compact"): promptcompounderlevel = gr.Dropdown( @@ -907,7 +922,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, OBP_preset], 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, amountoffluff], outputs=[prompt1, prompt2, prompt3,prompt4,prompt5]) prompt1toworkflow.click(prompttoworkflowprompt, inputs=prompt1, outputs=workprompt) prompt2toworkflow.click(prompttoworkflowprompt, inputs=prompt2, outputs=workprompt) @@ -915,7 +930,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, OBP_preset]) + 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, amountoffluff]) interrupt.click(tryinterrupt, inputs=[apiurl]) automatedoutputsfolderbutton.click(openfolder) @@ -1221,12 +1236,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, OBP_preset] + 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, amountoffluff] - 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): + 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, amountoffluff): images = [] infotexts = [] @@ -1300,7 +1315,9 @@ 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, OBP_preset) + base_prompt = 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) + fluffed_prompt = flufferizer(prompt=base_prompt, amountoffluff=amountoffluff) + preppedprompt += fluffed_prompt # set the artist mode back when done (for automatic mode) artist = artistcopy @@ -1311,7 +1328,8 @@ class Script(scripts.Script): p.negative_prompt = negativeprompt if(silentmode == True): - p.prompt = createpromptvariant(workprompt,promptvariantinsanitylevel) + base_prompt = createpromptvariant(workprompt,promptvariantinsanitylevel) + p.prompt = base_prompt #for j in range(batchsize): @@ -1321,7 +1339,7 @@ class Script(scripts.Script): print(p.prompt) if(autonegativeprompt): - p.negative_prompt = build_dynamic_negative(positive_prompt=p.prompt, insanitylevel=autonegativepromptstrength,enhance=autonegativepromptenhance, existing_negative_prompt=p.negative_prompt, base_model=base_model) + p.negative_prompt = build_dynamic_negative(positive_prompt=base_prompt, insanitylevel=autonegativepromptstrength,enhance=autonegativepromptenhance, existing_negative_prompt=p.negative_prompt, base_model=base_model) promptlist = []