Merge pull request #172 from AIrjen/new_mode

Artify, Flufferize and new mode + secrets
This commit is contained in:
AIrjen
2024-03-22 18:57:31 +01:00
committed by GitHub
36 changed files with 6009 additions and 3934 deletions
+86 -1
View File
@@ -18,7 +18,8 @@ OBPresets = OneButtonPresets()
allpresets = [OBPresets.RANDOM_PRESET_OBP] + list(OBPresets.opb_presets.keys())
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"]
artifyartists = ["all", "all (wild)", "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", "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"]
subjects =["all", "object", "animal", "humanoid", "landscape", "concept"]
genders = ["all", "male", "female"]
emojis = [False, True]
@@ -32,6 +33,12 @@ subjectsubtypesconcept = ["all"]
#subjectsubtypeshumanoid = ["all", "generic humans", "generic human relations", "celebrities e.a.", "fictional characters", "humanoids", "based on job or title", "based on first name"]
#subjectsubtypesconcept = ["all", "event", "the X of Y concepts", "lines from poems", "lines from songs"]
amountofflufflist = ["none", "dynamic", "short", "medium", "long"]
fluff_reverse_polarity = [False,True]
artifymodeslist = ["standard", "remix", "super remix turbo"]
artifyamountofartistslist = ["random", "0", "1", "2", "3", "4", "5"]
# Load up stuff for personal artists list, if any
# find all artist files starting with personal_artits in userfiles
@@ -570,15 +577,91 @@ class AutoNegativePrompt:
print("Generated negative prompt: " + generatedprompt)
return (generatedprompt,)
class OneButtonArtify:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"prompt": ("STRING", {"default": '', "multiline": True}),
"artist": (artifyartists, {"default": "all"}),
"amount_of_artists": (artifyamountofartistslist, {"default": "1"}),
"artify_mode": (artifymodeslist, {"default": "standard"})
},
"optional": {
"seed": ("INT", {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}),
},
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("artified_prompt",)
FUNCTION = "Comfy_OBP_Artify"
#OUTPUT_NODE = False
CATEGORY = "OneButtonPrompt"
def Comfy_OBP_Artify(self, prompt, artist, amount_of_artists,artify_mode, seed):
# artify here
artified_prompt = artify_prompt(prompt=prompt, artists=artist, amountofartists=amount_of_artists, mode=artify_mode, seed=seed)
print("Artified prompt: " + artified_prompt)
return (artified_prompt,)
class OneButtonFlufferize:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"prompt": ("STRING", {"default": '', "multiline": True}),
"amount_of_fluff": (amountofflufflist, {"default": "dynamic"}),
"reverse_polarity": (fluff_reverse_polarity, {"default": False}),
},
"optional": {
"seed": ("INT", {"default": 0, "min": 0, "max": 0xFFFFFFFFFFFFFFFF}),
},
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("fluffed_prompt",)
FUNCTION = "Comfy_OBP_Flufferize"
#OUTPUT_NODE = False
CATEGORY = "OneButtonPrompt"
def Comfy_OBP_Flufferize(self, prompt, amount_of_fluff, reverse_polarity, seed):
# artify here
fluffed_prompt = flufferizer(prompt=prompt, amountoffluff=amount_of_fluff, reverse_polarity=reverse_polarity, seed=seed)
print("Fluffed prompt: " + fluffed_prompt)
return (fluffed_prompt,)
# A dictionary that contains all nodes you want to export with their names
# NOTE: names should be globally unique
NODE_CLASS_MAPPINGS = {
"OneButtonPrompt": OneButtonPrompt,
"OneButtonPreset": OneButtonPreset,
"OneButtonArtify": OneButtonArtify,
"CreatePromptVariant": CreatePromptVariant,
"SavePromptToFile": SavePromptToFile,
"AutoNegativePrompt": AutoNegativePrompt,
"OneButtonFlufferize": OneButtonFlufferize,
}
@@ -586,7 +669,9 @@ NODE_CLASS_MAPPINGS = {
NODE_DISPLAY_NAME_MAPPINGS = {
"OneButtonPrompt": "One Button Prompt",
"OneButtonPreset": "One Button Preset",
"OneButtonArtify": "One Button Artify",
"CreatePromptVariant": "Create Prompt Variant",
"SavePromptToFile": "Save Prompt To File",
"AutoNegativePrompt": "Auto Negative Prompt",
"OneButtonFlufferize": "One Button Flufferize",
}
+1
View File
@@ -33,6 +33,7 @@ More of a Fooocus fan? Take a look at this excellent fork called [RuinedFooocus]
- Has a set of __template prompts__ from various sources, __fully wildcarded__ and usable with Subject Override ==> [guide to prompt templates](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/templates.md)
- Has multiple __prompt generation modes__ to choose from ==> [guide to prompt generation modes](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/prompt_generation_modes.md)
- Stay in control, and fine-tune One Button Prompt with a __config__ file ==> [config file](https://github.com/AIrjen/OneButtonPrompt/blob/main/user_guides/config_file.md)
- __Flufferize__ your prompt to enhance your results with Prompt Magic
## Important Notice
+38
View File
@@ -0,0 +1,38 @@
import sys, os
import random
import uuid
import re
from datetime import datetime
sys.path.append(os.path.abspath(".."))
from build_dynamic_prompt import *
def generateprompts(amount = 1,prompt = "",artists="all",amountofartists = "1", mode="standard"):
loops = int(amount) # amount of images to generate
steps = 0
originalpositiveprompt = prompt
while steps < loops:
# build prompt
if originalpositiveprompt == "":
result = build_dynamic_prompt(insanitylevel=3)
else:
result = artify_prompt(prompt=prompt, artists=artists, amountofartists=amountofartists, mode=mode)
result = flufferizer(prompt=result, reverse_polarity=True)
print("ARTIFY COMPLETE: " + result)
print("")
print("loop " + str(steps))
print("")
steps += 1
print("")
print("All done!")
if __name__ == "__main__":
generateprompts(10,"a norwegian forest cat", "all","random", "standard")
+417 -79
View File
@@ -16,6 +16,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
remove_weights = False
less_verbose = False
add_vomit = True
add_quality = True
# set seed
@@ -84,6 +86,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
# "Stable Cascade" -- Remove weights
if(base_model == "Stable Cascade"):
remove_weights = True
add_vomit = False
add_quality = False
if(base_model == "SD1.5"):
less_verbose = True
@@ -134,7 +138,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
hairvomitlist = csv_to_list("hairvomit",antilist,"./csvfiles/",0,"?",False,False)
humanoidlist = csv_to_list("humanoids",antilist)
imagetypelist = csv_to_list(csvfilename="imagetypes",antilist=antilist, insanitylevel=insanitylevel)
imagetypelist = csv_to_list(csvfilename="imagetypes",antilist=antilist, insanitylevel=insanitylevel, delimiter="?")
joblist = csv_to_list(csvfilename="jobs",antilist=antilist,skipheader=True,gender=gender)
lenslist = csv_to_list(csvfilename="lenses",antilist=antilist, insanitylevel=insanitylevel)
lightinglist = csv_to_list(csvfilename="lighting",antilist=antilist, insanitylevel=insanitylevel)
@@ -187,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 = []
@@ -351,6 +356,21 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
tokinatorlist = csv_to_list("tokinator", antilist,"./csvfiles/templates/",0,"?")
styleslist = csv_to_list("styles", antilist,"./csvfiles/templates/",0,"?")
stylessuffix = [item.split('-subject-')[1] for item in styleslist]
breakstylessuffix = [item.split(',') for item in stylessuffix]
allstylessuffixlist = [value for sublist in breakstylessuffix for value in sublist]
allstylessuffixlist = list(set(allstylessuffixlist))
artistsuffix = artist_descriptions_csv_to_list("artists_and_category")
breakartiststylessuffix = [item.split(',') for item in artistsuffix]
artiststylessuffixlist = [value for sublist in breakartiststylessuffix for value in sublist]
artiststylessuffixlist = list(set(artiststylessuffixlist))
allstylessuffixlist += artiststylessuffixlist
dynamictemplatesprefixlist = csv_to_list("dynamic_templates_prefix", antilist,"./csvfiles/templates/",0,"?")
dynamictemplatessuffixlist = csv_to_list("dynamic_templates_suffix", antilist,"./csvfiles/templates/",0,"?")
# subjects
@@ -806,6 +826,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
onlysubjectmode = False
stylesmode = False
thetokinatormode = False
dynamictemplatesmode = False
artifymode = False
# determine wether we should go for a template or not. Not hooked up to insanitylevel
if(imagetype == "only templates mode"):
@@ -815,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"):
@@ -862,6 +888,17 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
print("Running with a completely random set of words")
print("All safety and logic is turned off")
if(imagetype == "dynamic templates mode"):
specialmode = True
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
artifymode = True
print("Running with artify mode")
# main stuff
generatetype = not specialmode
@@ -887,8 +924,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
generatelighting = bool(lightinglist) and not specialmode
generatemood = bool(moodlist) and not specialmode
generatepose = bool(poselist) and not templatemode
generatevomit = bool(vomitlist) and not specialmode
generatequality = bool(qualitylist) and not specialmode
generatevomit = bool(vomitlist) and not specialmode and add_vomit
generatequality = bool(qualitylist) and not specialmode and add_quality
generateshot = bool(shotsizelist) and not specialmode
generatetimeperiod = bool(timeperiodlist) and not specialmode
generateemoji = bool(emojilist) and not templatemode
@@ -913,8 +950,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
generateepisodetitle = bool(episodetitlelist) and not specialmode
generateminilocationaddition = bool(minilocationadditionslist) and not specialmode
generateminivomit = bool(minivomitlist) and not specialmode
generateimagetypequality = bool(imagetypequalitylist) and not specialmode and generateimagetypequality
generateminivomit = bool(minivomitlist) and not specialmode and add_vomit
generateimagetypequality = bool(imagetypequalitylist) and not specialmode and generateimagetypequality
generateoveralladdition = bool(overalladditionlist) and not specialmode
generateimagetype = bool(imagetypelist) and not specialmode and generateimagetype
@@ -1080,7 +1117,7 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
subjectchooser = ""
mainchooser = ""
completeprompt += prefixprompt
#completeprompt += prefixprompt
completeprompt += ", "
@@ -1312,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
@@ -1333,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
@@ -1343,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)):
@@ -1368,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
@@ -1430,13 +1475,22 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
# start styles mode here
# start styles mode here
if(stylesmode == True):
chosenstyle = random.choice(styleslist)
chosenstyleprefix = chosenstyle.split("-subject-")[0]
chosenstylesuffix= chosenstyle.split("-subject-")[1]
chosenstylesuffix = chosenstyle.split("-subject-")[1]
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] == "."):
completeprompt += " OR(Capturing a; Describing a;Portraying a;Featuring a)"
else:
completeprompt += " OR(with a;capturing a; describing a;portraying a;of a;featuring a)"
# start artist part
@@ -2408,74 +2462,98 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
completeprompt += ", "
# end of the artist stuff
if(thetokinatormode == False):
# Add more quality while in greg mode lol
if(originalartistchoice == "greg mode" and generatequality == True):
completeprompt += "-quality-, "
# others
if(chance_roll(max(1,insanitylevel -1), directionchance) and generatedirection == True):
completeprompt += "-direction-, "
if(chance_roll(insanitylevel, moodchance) and generatemood == True):
completeprompt += "-mood-, "
# add in some more mini vomits
if(chance_roll(insanitylevel, minivomitsuffixchance) and generateminivomit == True):
completeprompt += " -minivomit-, "
if(chance_roll(insanitylevel, artmovementchance) and generateartmovement == True):
completeprompt += "-artmovement-, "
if(chance_roll(insanitylevel, lightingchance) and generatelighting == True):
completeprompt += "-lighting-, "
# todo
descriptivemode = False
# 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")
completeprompt += ", -artistdescription-"
descriptivemode = True
completeprompt += ", "
# determine wether we have a photo or not
if("photo" in completeprompt.lower()):
isphoto = 1
if(chance_roll(insanitylevel, photoadditionchance) and isphoto == 1 and generatephotoaddition == True):
completeprompt += random.choice(photoadditionlist) + ", "
if(isphoto == 1 and generatecamera == True):
completeprompt += "-camera-, "
if(chance_roll(insanitylevel, lenschance) or isphoto == 1):
if(generatelens == True):
completeprompt += "-lens-, "
# 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")
completeprompt += ", -allstylessuffix-"
descriptivemode = True
completeprompt += ", "
if(chance_roll(insanitylevel, colorschemechance) and generatecolorscheme == True):
completeprompt += "-colorscheme-, "
# and on high levels, DO EVERYTHING :D
if(descriptivemode == False or rare_dist(insanitylevel)):
# vomit some cool/wierd things into the prompt
if(chance_roll(insanitylevel, vomit1chance) and generatevomit == True):
completeprompt += "-vomit-, "
if(chance_roll(insanitylevel, vomit2chance)):
completeprompt += "-vomit-, "
# human specfic vomit
if(mainchooser == "humanoid" and chance_roll(insanitylevel, humanvomitchance) and generatehumanvomit == True):
completeprompt += "-humanvomit-, "
if(chance_roll(insanitylevel, humanvomitchance)):
completeprompt += "-humanvomit-, "
#adding a great work of art, like starry night has cool effects. But this should happen only very rarely.
if(chance_roll(insanitylevel, greatworkchance) and generategreatwork == True):
completeprompt += " in the style of -greatwork-, "
#adding a poemline. But this should happen only very rarely.
if(chance_roll(insanitylevel, poemlinechance) and generatepoemline == True):
completeprompt += " \"-poemline-\", "
#adding a songline. But this should happen only very rarely.
if(chance_roll(insanitylevel, songlinechance) and generatesongline == True):
completeprompt += " \"-songline-\", "
# everyone loves the adding quality. The better models don't need this, but lets add it anyway
if((chance_roll(insanitylevel, quality1chance) or originalartistchoice == "greg mode") and generatequality == True):
completeprompt += "-quality-, "
if((chance_roll(insanitylevel, quality2chance) or originalartistchoice == "greg mode")):
# Add more quality while in greg mode lol
if(originalartistchoice == "greg mode" and generatequality == True):
completeprompt += "-quality-, "
# others
if(chance_roll(max(1,insanitylevel -1), directionchance) and generatedirection == True):
completeprompt += "-direction-, "
if(chance_roll(insanitylevel, moodchance) and generatemood == True):
completeprompt += "-mood-, "
# add in some more mini vomits
if(chance_roll(insanitylevel, minivomitsuffixchance) and generateminivomit == True):
completeprompt += " -minivomit-, "
if(chance_roll(insanitylevel, artmovementchance) and generateartmovement == True):
completeprompt += "-artmovement-, "
if(chance_roll(insanitylevel, lightingchance) and generatelighting == True):
completeprompt += "-lighting-, "
# determine wether we have a photo or not
if("photo" in completeprompt.lower()):
isphoto = 1
if(chance_roll(insanitylevel, photoadditionchance) and isphoto == 1 and generatephotoaddition == True):
completeprompt += random.choice(photoadditionlist) + ", "
if(isphoto == 1 and generatecamera == True):
completeprompt += "-camera-, "
if(chance_roll(insanitylevel, lenschance) or isphoto == 1):
if(generatelens == True):
completeprompt += "-lens-, "
if(chance_roll(insanitylevel, colorschemechance) and generatecolorscheme == True):
completeprompt += "-colorscheme-, "
# vomit some cool/wierd things into the prompt
if(chance_roll(insanitylevel, vomit1chance) and generatevomit == True):
completeprompt += "-vomit-, "
if(chance_roll(insanitylevel, vomit2chance)):
completeprompt += "-vomit-, "
# human specfic vomit
if(mainchooser == "humanoid" and chance_roll(insanitylevel, humanvomitchance) and generatehumanvomit == True):
completeprompt += "-humanvomit-, "
if(chance_roll(insanitylevel, humanvomitchance)):
completeprompt += "-humanvomit-, "
#adding a great work of art, like starry night has cool effects. But this should happen only very rarely.
if(chance_roll(insanitylevel, greatworkchance) and generategreatwork == True):
completeprompt += " in the style of -greatwork-, "
#adding a poemline. But this should happen only very rarely.
if(chance_roll(insanitylevel, poemlinechance) and generatepoemline == True):
completeprompt += " \"-poemline-\", "
#adding a songline. But this should happen only very rarely.
if(chance_roll(insanitylevel, songlinechance) and generatesongline == True):
completeprompt += " \"-songline-\", "
# everyone loves the adding quality. The better models don't need this, but lets add it anyway
if((chance_roll(insanitylevel, quality1chance) or originalartistchoice == "greg mode") and generatequality == True):
completeprompt += "-quality-, "
if((chance_roll(insanitylevel, quality2chance) or originalartistchoice == "greg mode")):
completeprompt += "-quality-, "
# start second part of art blaster here
@@ -2609,6 +2687,60 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
# start styles mode here
if(stylesmode == True):
completeprompt += chosenstylesuffix
templatesmodechance = 0
if(uncommon_dist(insanitylevel)):
templatesmodechance = 1
if(dynamictemplatesmode == True and templatesmodechance == 1):
for i in range(random.randint(1,max(2,insanitylevel))):
completeprompt += ", -allstylessuffix-"
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):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-shotsize-" not in sentence.lower()]
if("-artmovement-" in completeprompt):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artmovement-" not in sentence.lower()]
if("-imagetype-" in completeprompt or "-othertype-" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-imagetype-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-othertype-" not in sentence.lower()]
if("-colorcombination-" in completeprompt or "-colorscheme" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-colorcombination-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-colorscheme-" not in sentence.lower()]
if("-mood-" in completeprompt or "-humanexpression" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-mood-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-humanexpression-" not in sentence.lower()]
chosenstylesuffix = random.choice(dynamictemplatessuffixlist)
completeprompt += ". " + chosenstylesuffix
if(normal_dist(insanitylevel)):
if("-artist-" in completeprompt):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artist-" not in sentence.lower()]
if("-lighting-" in completeprompt):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-lighting-" not in sentence.lower()]
if("-shotsize-" in completeprompt):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-shotsize-" not in sentence.lower()]
if("-artmovement-" in completeprompt):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-artmovement-" not in sentence.lower()]
if("-imagetype-" in completeprompt or "-othertype-" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-imagetype-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-othertype-" not in sentence.lower()]
if("-colorcombination-" in completeprompt or "-colorscheme" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-colorcombination-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-colorscheme-" not in sentence.lower()]
if("-mood-" in completeprompt or "-humanexpression" in completeprompt ):
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-mood-" not in sentence.lower()]
dynamictemplatessuffixlist = [sentence for sentence in dynamictemplatessuffixlist if "-humanexpression-" not in sentence.lower()]
chosenstylesuffix = random.choice(dynamictemplatessuffixlist)
completeprompt += " " + chosenstylesuffix
# custom style list
@@ -2746,10 +2878,20 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
completeprompt += ", " + chosenstylesuffixcomplete
if(artifymode == True):
amountofartists = "random"
if(unique_dist(insanitylevel)):
mode = "super remix turbo"
elif(legendary_dist(insanitylevel)):
mode = "remix"
else:
mode = "standard"
completeprompt = artify_prompt(insanitylevel=insanitylevel,prompt=completeprompt, artists=artists, amountofartists=amountofartists, mode=mode, seed=seed)
completeprompt += " -tempnewwords- "
completeprompt += ", "
completeprompt = prefixprompt + ", " + completeprompt
completeprompt += suffixprompt
# and then up the compounding stuff
@@ -2773,7 +2915,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
# In front and the back?
completeprompt = parse_custom_functions(completeprompt, insanitylevel)
if(dynamictemplatesmode == False):
completeprompt = parse_custom_functions(completeprompt, insanitylevel)
# Sometimes change he/she to the actual subject
# Doesnt work if someone puts in a manual subject
@@ -3038,11 +3181,13 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all
"-charactertype-" in completeprompt or
"-objectstohold-" in completeprompt or
"-episodetitle-" in completeprompt or
"-token-" in completeprompt):
"-token-" in completeprompt or
"-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-"]
,"-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]
, 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]
@@ -3243,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)
@@ -3255,6 +3401,12 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender
objecttotallist = objectlist + buildinglist + vehiclelist + foodlist + spacelist + floralist + containerlist
outfitprinttotallist = objecttotallist + locationlist + colorlist + musicgenrelist + seasonlist + animallist + patternlist
styleslist = csv_to_list("styles", antilist,"./csvfiles/templates/",0,"?")
stylessuffix = [item.split('-subject-')[1] for item in styleslist]
breakstylessuffix = [item.split(',') for item in stylessuffix]
allstylessuffixlist = [value for sublist in breakstylessuffix for value in sublist]
allstylessuffixlist = list(set(allstylessuffixlist))
# build artists list
if artists == "wild":
artists = "all (wild)"
@@ -3479,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"):
@@ -3647,6 +3802,9 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender
if lowercase_combination in [x.lower() for x in waterlocationlist] and chance_roll(insanitylevel, "uncommon"):
prompt = prompt.replace(combination," -waterlocation- ")
if lowercase_combination in [x.lower() for x in allstylessuffixlist] and chance_roll(insanitylevel, "uncommon"):
prompt = prompt.replace(combination," -allstylessuffix- ")
runs += 1
# If nothing changed... Lets do at least something
@@ -3784,12 +3942,14 @@ def createpromptvariant(prompt = "", insanitylevel = 5, antivalues = "" , gender
"-setting-" in completeprompt or
"-charactertype-" in completeprompt or
"-objectstohold-" in completeprompt or
"-episodetitle-" in completeprompt
"-episodetitle-" in completeprompt or
"-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-"]
,"-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]
, 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]
@@ -3856,11 +4016,14 @@ def replacewildcard(completeprompt, insanitylevel, wildcard,listname, activatehy
replacementvalue = ""
# override for artist and artiststyle, only for first artist
if(wildcard == "-artist-" and "-artiststyle-" in completeprompt):
if(wildcard == "-artist-" and ("-artiststyle-" in completeprompt or "-artistmedium-" in completeprompt or "-artistdescription-" in completeprompt)):
artiststyles = []
artiststyle = []
chosenartiststyle = ""
artiststyles = artist_category_by_category_csv_to_list("artists_and_category",replacementvalue)
artistscomplete = artist_category_by_category_csv_to_list("artists_and_category",replacementvalue)
artiststyles = artistscomplete[0]
artistmediums = artistscomplete[1]
artistdescriptions = artistscomplete[2]
artiststyle = [x.strip() for x in artiststyles[0].split(",")]
artiststyle = list(filter(lambda x: len(x) > 0, artiststyle)) # remove empty values
@@ -3880,6 +4043,19 @@ def replacewildcard(completeprompt, insanitylevel, wildcard,listname, activatehy
completeprompt = completeprompt.replace("-artiststyle-",chosenartiststyle ,1)
artiststyle.remove(chosenartiststyle)
if("-artistmedium-" in completeprompt):
if(artistmediums[0].lower() not in completeprompt.lower()):
completeprompt = completeprompt.replace("-artistmedium-",artistmediums[0] ,1)
if("-artistdescription-" in completeprompt):
completeprompt = completeprompt.replace("-artistdescription-",artistdescriptions[0] ,1)
while bool(artiststyle) and "-artiststyle-" in completeprompt:
chosenartiststyle = random.choice(artiststyle)
completeprompt = completeprompt.replace("-artiststyle-",chosenartiststyle ,1)
artiststyle.remove(chosenartiststyle)
# Sneaky overrides for "same" wildcards
@@ -4110,6 +4286,152 @@ def enhance_positive(positive_prompt = "", amountofwords = 3):
return addwords
def artify_prompt(insanitylevel = 5, prompt = "", artists = "all", amountofartists = "1", mode="standard", seed = -1):
if(amountofartists=="random"):
intamountofartists = random.randint(1,int((insanitylevel/3) + 1.20))
else:
intamountofartists = int(amountofartists)
# set seed
# For use in ComfyUI (might bring to Automatic1111 as well)
# lets do it when its larger than 0
# Otherwise, just do nothing and it will keep on working based on an earlier set seed
if(seed > 0):
random.seed(seed)
# first build up a complete anti list. Those values are removing during list building
# this uses the antivalues string AND the antilist.csv
emptylist = []
antilist = csv_to_list("antilist",emptylist , "./userfiles/",1)
# clean up antivalue list:
antilist = [s.strip().lower() for s in antilist]
# build artists list
if artists == "wild":
artists = "all (wild)"
# we want to create more cohorence, so we are adding all (wild) mode for the old logic
artisttypes = ["popular", "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", "graffiti", "graphic design", "high contrast", "horror", "impressionism", "installation", "landscape", "light", "line drawing", "low contrast", "luminism", "magical realism", "manga", "melanin", "messy", "monochromatic", "nature", "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"]
artiststyleselector = ""
artiststyleselectormode = "normal"
artiststyleselector = random.choice(artisttypes)
artistlist = []
# create artist list to use in the code, maybe based on category or personal lists
if(artists != "all (wild)" and artists != "all" and artists != "none" and artists.startswith("personal_artists") == False and artists.startswith("personal artists") == False and artists in artisttypes):
artistlist = artist_category_csv_to_list("artists_and_category",artists)
elif(artists.startswith("personal_artists") == True or artists.startswith("personal artists") == True):
artists = artists.replace(" ","_",-1) # add underscores back in
artistlist = csv_to_list(artists,antilist,"./userfiles/")
elif(artists != "none"):
artistlist = csv_to_list("artists",antilist)
# load up the styles list for the other modes
styleslist = csv_to_list("styles", antilist,"./csvfiles/templates/",0,"?")
stylessuffix = [item.split('-subject-')[1] for item in styleslist]
breakstylessuffix = [item.split(',') for item in stylessuffix]
allstylessuffixlist = [value for sublist in breakstylessuffix for value in sublist]
allstylessuffixlist = list(set(allstylessuffixlist))
artistsuffix = artist_descriptions_csv_to_list("artists_and_category")
breakartiststylessuffix = [item.split(',') for item in artistsuffix]
artiststylessuffixlist = [value for sublist in breakartiststylessuffix for value in sublist]
artiststylessuffixlist = list(set(artiststylessuffixlist))
allstylessuffixlist += artiststylessuffixlist
completeprompt = ""
if(common_dist(insanitylevel)):
completeprompt += "-artiststyle- "
completeprompt += "art by "
#Lets go effing artify this MF'er
for i in range(0,intamountofartists):
if(intamountofartists > 1 and i == intamountofartists - 2):
completeprompt += "-artist- and "
else:
completeprompt += "-artist-, "
if(uncommon_dist(insanitylevel)):
completeprompt += "-artistmedium-, "
# now add the prompt in
completeprompt += prompt
if(mode.lower() == "remix"):
for i in range(0,intamountofartists):
completeprompt += ", " + artistsuffix.pop(artistsuffix.index(random.choice(artistsuffix)))
elif(mode.lower() == "super remix turbo"):
for i in range(0,intamountofartists*4):
completeprompt += ", " + allstylessuffixlist.pop(allstylessuffixlist.index(random.choice(allstylessuffixlist)))
else:
# else just go standard
for i in range(0,intamountofartists):
completeprompt += ", -artistdescription-"
while ("-artist-" in completeprompt):
completeprompt = replacewildcard(completeprompt,5,"-artist-", artistlist,"","",artiststyleselector)
return completeprompt
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
# Otherwise, just do nothing and it will keep on working based on an earlier set seed
if(seed > 0):
random.seed(seed)
if(reverse_polarity):
flufferlist = csv_to_list("antifluff") # all negative words
else:
flufferlist = csv_to_list("fluff")
# dynamic = based on prompt length + insanitylevel
minfluff = 4
maxfluff = 6
# short = 4-6
# medium = 5-8
# long = 8-12
if(amountoffluff == "dynamic"):
if(len(prompt) < 150):
amountoffluff = "long"
elif(len(prompt) < 250):
amountoffluff = "medium"
else:
amountoffluff = "short"
if(amountoffluff == "long"):
minfluff = 8
maxfluff = 12
if(amountoffluff == "medium"):
minfluff = 5
maxfluff = 8
for i in range(0,random.randint(minfluff, maxfluff)):
prompt += ", " + flufferlist.pop(flufferlist.index(random.choice(flufferlist)))
return prompt
def replace_match(match):
# Extract the first word from the match
words = match.group(0)[1:-1].split('|')
@@ -4173,6 +4495,8 @@ def cleanup(completeprompt, advancedprompting, insanitylevel = 5):
completeprompt = re.sub(' ,', ',', completeprompt)
completeprompt = re.sub(',\(', ', (', completeprompt)
while " " in completeprompt:
completeprompt = re.sub(' ', ' ', completeprompt)
completeprompt = re.sub('a The', 'The', completeprompt)
@@ -4194,10 +4518,18 @@ def cleanup(completeprompt, advancedprompting, insanitylevel = 5):
completeprompt = re.sub('art art', 'art', completeprompt)
completeprompt = re.sub('Art art', 'art', completeprompt)
completeprompt = re.sub('lighting lighting', 'lighting', completeprompt)
completeprompt = re.sub('Lighting lighting', 'lighting', completeprompt)
completeprompt = re.sub('light lighting', 'light', completeprompt)
completeprompt = re.sub('-artiststyle- art,', '', completeprompt)
completeprompt = re.sub('-artiststyle- art', '', completeprompt)
completeprompt = re.sub('-artiststyle-', '', completeprompt)
completeprompt = re.sub('-artistmedium-', '', completeprompt)
completeprompt = re.sub('-artistdescription-', '', completeprompt)
completeprompt = re.sub('- art ', '', completeprompt)
completeprompt = re.sub('shot shot', 'shot', completeprompt)
completeprompt = re.sub('a his', 'his', completeprompt)
@@ -4243,6 +4575,12 @@ def cleanup(completeprompt, advancedprompting, insanitylevel = 5):
# Move the extracted LoRA's to the end of completeprompt
#completeprompt += " " + " ".join(allLoRA)
completeprompt = completeprompt.replace(' . ', '. ')
completeprompt = completeprompt.replace(', . ', '. ')
completeprompt = completeprompt.replace(',. ', '. ')
completeprompt = completeprompt.replace('., ', '. ')
completeprompt = completeprompt.replace('. . ', '. ')
completeprompt = completeprompt.strip(", ")
return completeprompt
File diff suppressed because it is too large Load Diff
+295 -221
View File
@@ -1,6 +1,6 @@
{
"last_node_id": 223,
"last_link_id": 333,
"last_node_id": 225,
"last_link_id": 337,
"nodes": [
{
"id": 160,
@@ -29,7 +29,9 @@
}
],
"title": "CFG Scale",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
8,
"fixed"
@@ -102,7 +104,9 @@
}
],
"title": "Total Steps (Base + Ref.)",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
30,
"fixed"
@@ -138,9 +142,11 @@
}
],
"title": "Seed",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
604260618514801,
890019860370061,
"randomize"
],
"color": "#432",
@@ -160,7 +166,7 @@
"flags": {
"collapsed": false
},
"order": 13,
"order": 17,
"mode": 0,
"inputs": [
{
@@ -171,7 +177,7 @@
{
"name": "text_g",
"type": "STRING",
"link": 325,
"link": 336,
"widget": {
"name": "text_g"
},
@@ -180,7 +186,7 @@
{
"name": "text_l",
"type": "STRING",
"link": 326,
"link": 337,
"widget": {
"name": "text_l"
},
@@ -225,7 +231,7 @@
"1": 316.8831481933594
},
"flags": {},
"order": 17,
"order": 18,
"mode": 0,
"inputs": [
{
@@ -300,7 +306,7 @@
},
"widgets_values": [
"enable",
604260618514801,
890019860370061,
"fixed",
30,
8,
@@ -341,7 +347,9 @@
}
],
"title": "Steps On Base Model",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
30,
"fixed"
@@ -361,7 +369,7 @@
26
],
"flags": {},
"order": 18,
"order": 19,
"mode": 0,
"inputs": [
{
@@ -397,7 +405,7 @@
"1": 102.28533172607422
},
"flags": {},
"order": 19,
"order": 20,
"mode": 0,
"inputs": [
{
@@ -439,7 +447,7 @@
"1": 596.3757934570312
},
"flags": {},
"order": 20,
"order": 21,
"mode": 0,
"inputs": [
{
@@ -475,13 +483,13 @@
"1": 166
},
"flags": {},
"order": 15,
"order": 16,
"mode": 0,
"inputs": [
{
"name": "positive_prompt",
"type": "STRING",
"link": 324,
"link": 335,
"widget": {
"name": "positive_prompt"
}
@@ -517,56 +525,6 @@
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
-570,
175
],
"size": {
"0": 320.0830383300781,
"1": 101.19705200195312
},
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
281
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
283,
284
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
316
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"sd_xl_base_1.0.safetensors"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 219,
"type": "PrimitiveNode",
@@ -579,7 +537,7 @@
"1": 58
},
"flags": {},
"order": 6,
"order": 5,
"mode": 0,
"outputs": [
{
@@ -596,7 +554,9 @@
}
],
"title": "File Location",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
"%date:yyyy-M-d%/ComfyUI"
],
@@ -615,7 +575,7 @@
"1": 210
},
"flags": {},
"order": 7,
"order": 6,
"mode": 0,
"title": "Note - Empty Latent Image",
"properties": {
@@ -641,7 +601,7 @@
"flags": {
"collapsed": false
},
"order": 16,
"order": 15,
"mode": 0,
"inputs": [
{
@@ -705,7 +665,7 @@
"1": 58
},
"flags": {},
"order": 8,
"order": 7,
"mode": 0,
"properties": {
"text": ""
@@ -730,7 +690,7 @@
"flags": {
"collapsed": false
},
"order": 9,
"order": 8,
"mode": 0,
"outputs": [
{
@@ -746,7 +706,9 @@
}
],
"title": "Overwrite Subject",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
""
],
@@ -767,7 +729,7 @@
"flags": {
"collapsed": false
},
"order": 10,
"order": 9,
"mode": 0,
"outputs": [
{
@@ -783,13 +745,231 @@
}
],
"title": "Overwrite Outfit",
"properties": {},
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
""
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 16,
"type": "PrimitiveNode",
"pos": [
-1242,
-95
],
"size": {
"0": 434.15277099609375,
"1": 152.36099243164062
},
"flags": {},
"order": 10,
"mode": 0,
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [
329
],
"slot_index": 0,
"widget": {
"name": "base_negative"
}
}
],
"title": "Negative Prompt",
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
"text, watermark\n"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 221,
"type": "OneButtonPrompt",
"pos": [
-630,
-548
],
"size": {
"0": 315,
"1": 386
},
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "custom_subject",
"type": "STRING",
"link": 327,
"widget": {
"name": "custom_subject"
}
},
{
"name": "custom_outfit",
"type": "STRING",
"link": 328,
"widget": {
"name": "custom_outfit"
}
}
],
"outputs": [
{
"name": "prompt",
"type": "STRING",
"links": [
333,
334
],
"shape": 3,
"slot_index": 0
},
{
"name": "prompt_g",
"type": "STRING",
"links": null,
"shape": 3
},
{
"name": "prompt_l",
"type": "STRING",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "OneButtonPrompt"
},
"widgets_values": [
5,
"all",
"all",
20,
"all",
"",
"",
"all",
"all",
"all",
"all",
false,
"SDXL",
1054047122686601,
"randomize"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
-570,
175
],
"size": {
"0": 320.0830383300781,
"1": 101.19705200195312
},
"flags": {},
"order": 11,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
281
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
283,
284
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
316
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"dreamshaperXL10_alpha2Xl10.safetensors"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 224,
"type": "OneButtonFlufferize",
"pos": [
-197,
-542
],
"size": {
"0": 325.6371154785156,
"1": 166.23045349121094
},
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "prompt",
"type": "STRING",
"link": 334,
"widget": {
"name": "prompt"
}
}
],
"outputs": [
{
"name": "fluffed_prompt",
"type": "STRING",
"links": [
335,
336,
337
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "OneButtonFlufferize"
},
"widgets_values": [
"",
"dynamic",
false,
921089971232293,
"randomize"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 223,
"type": "AutoNegativePrompt",
@@ -797,12 +977,12 @@
-633,
-113
],
"size": [
327,
170.40017700195312
],
"size": {
"0": 327,
"1": 174
},
"flags": {},
"order": 14,
"order": 13,
"mode": 0,
"inputs": [
{
@@ -843,126 +1023,12 @@
"text, watermark\n",
0,
0,
0,
"SDXL",
209255417752634,
"randomize"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 221,
"type": "OneButtonPrompt",
"pos": [
-630,
-538
],
"size": {
"0": 315,
"1": 370
},
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "custom_subject",
"type": "STRING",
"link": 327,
"widget": {
"name": "custom_subject"
}
},
{
"name": "custom_outfit",
"type": "STRING",
"link": 328,
"widget": {
"name": "custom_outfit"
}
}
],
"outputs": [
{
"name": "prompt",
"type": "STRING",
"links": [
324,
325,
326,
333
],
"shape": 3,
"slot_index": 0
},
{
"name": "prompt_g",
"type": "STRING",
"links": null,
"shape": 3
},
{
"name": "prompt_l",
"type": "STRING",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "OneButtonPrompt"
},
"widgets_values": [
5,
"all",
"all",
20,
"all",
"",
"",
"all",
"all",
"all",
"all",
false,
0,
"randomize"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 16,
"type": "PrimitiveNode",
"pos": [
-1242,
-95
],
"size": {
"0": 434.15277099609375,
"1": 152.36099243164062
},
"flags": {},
"order": 11,
"mode": 0,
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [
329
],
"slot_index": 0,
"widget": {
"name": "text_g"
}
}
],
"title": "Negative Prompt",
"properties": {},
"widgets_values": [
"text, watermark\n"
],
"color": "#322",
"bgcolor": "#533"
}
],
"links": [
@@ -1094,30 +1160,6 @@
1,
"STRING"
],
[
324,
221,
0,
218,
0,
"STRING"
],
[
325,
221,
0,
50,
1,
"STRING"
],
[
326,
221,
0,
50,
2,
"STRING"
],
[
327,
215,
@@ -1173,6 +1215,38 @@
223,
0,
"STRING"
],
[
334,
221,
0,
224,
0,
"STRING"
],
[
335,
224,
0,
218,
0,
"STRING"
],
[
336,
224,
0,
50,
1,
"STRING"
],
[
337,
224,
0,
50,
2,
"STRING"
]
],
"groups": [],
+18 -3
View File
@@ -121,6 +121,8 @@ def csv_to_list(csvfilename, antilist=[], directory="./csvfiles/", lowerandstrip
def artist_category_by_category_csv_to_list(csvfilename,artist):
csvlist = []
mediumlist = []
descriptionlist = []
script_dir = os.path.dirname(os.path.abspath(__file__))
full_path = os.path.join(script_dir, "./csvfiles/" )
with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
@@ -128,7 +130,9 @@ def artist_category_by_category_csv_to_list(csvfilename,artist):
for row in reader:
if(row["Artist"] == artist):
csvlist.append(row["Tags"])
return csvlist
mediumlist.append(row["Medium"])
descriptionlist.append(row["Description"])
return csvlist, mediumlist, descriptionlist
def artist_category_csv_to_list(csvfilename,category):
csvlist = []
@@ -141,6 +145,16 @@ def artist_category_csv_to_list(csvfilename,category):
csvlist.append(row["Artist"])
return csvlist
def artist_descriptions_csv_to_list(csvfilename):
csvlist = []
script_dir = os.path.dirname(os.path.abspath(__file__))
full_path = os.path.join(script_dir, "./csvfiles/" )
with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
reader = csv.DictReader(file, delimiter=",")
for row in reader:
csvlist.append(row["Description"])
return csvlist
def load_config_csv():
csvlist = []
script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -242,5 +256,6 @@ def sort_and_dedupe_csv_file():
# write each item on a new line
fp.write("%s\n" % item)
if __name__ == "__main__":
sort_and_dedupe_csv_file()
# sort_and_dedupe_csv_file()
+2
View File
@@ -2,6 +2,8 @@
-color- dragon
-color- creature
-color- and -color- creature
-food--o-saurus
-conceptsuffix-beast
Animal
Abyssinian Cat
Albatross
1 -material- dragon
2 -color- dragon
3 -color- creature
4 -color- and -color- creature
5 -food--o-saurus
6 -conceptsuffix-beast
7 Animal
8 Abyssinian Cat
9 Albatross
+111
View File
@@ -0,0 +1,111 @@
Amateurish
Amateurish composition
Amateurish creative
Arid
Background uninspired
bad atmosphere
bad quality
bad shadow
Barren
Basic
Basic detail
Basic dull focus
Basic ordinary dim light
Basic straightforward color
Basic straightforward color composition
Blur
Blurry
Blurry focus
Clashing colors
Cloudy
Clumsy
Cropped
Coarse artistic composition
Coarse detail
Common
Contaminated
Copied
Cut off
Dim
Dim illumination
Dim light
Diminished quality
Disenchanted
Disgrace
Draft
Dull
Dull colors
Dull light
Duplicate
Faded colors
Illogical background
Imperfect background
Imperfect composition
Imperfect symmetry
Incoherent
Insecure
Insignificant
Glitch
Grainy
Lacking detail
Losing
Low color focused
Low contrasted
Low enhanced
Low intricate
low quality
Matte
Mediocre aesthetic
Mediocre color
Mediocre composition
Mild
Monochrome
ms paint
Mundane
Mundane atmosphere
Mundane composition
Negative emotional
Not very
Ordinary
Ordinary basic rough coarse detail
Ordinary detail
Ordinary simple low quality color basic
Overexposed
Out of frame
Pale colors
Plain
Plain clumsy
Poorly lit
Profane
Realistic
Rough
Rough polished
Rugged
Simple
Sketchy
Stagnant
Static
Static background
Static boring incomplete lackluster
Static color
Static composition
Static dull atmosphere
Static imperfect background
Static plain composition
Surface
Ugly
Unappealing composition
Unattractive
Unchanged
Unimaginative
Unimpressive
Uninspirational
Uninspired
Unknown
Unknown quality
Unoriginal
Unromantic
Unstylish
Untheatrical
Void
Worst quality
1 Amateurish
2 Amateurish composition
3 Amateurish creative
4 Arid
5 Background uninspired
6 bad atmosphere
7 bad quality
8 bad shadow
9 Barren
10 Basic
11 Basic detail
12 Basic dull focus
13 Basic ordinary dim light
14 Basic straightforward color
15 Basic straightforward color composition
16 Blur
17 Blurry
18 Blurry focus
19 Clashing colors
20 Cloudy
21 Clumsy
22 Cropped
23 Coarse artistic composition
24 Coarse detail
25 Common
26 Contaminated
27 Copied
28 Cut off
29 Dim
30 Dim illumination
31 Dim light
32 Diminished quality
33 Disenchanted
34 Disgrace
35 Draft
36 Dull
37 Dull colors
38 Dull light
39 Duplicate
40 Faded colors
41 Illogical background
42 Imperfect background
43 Imperfect composition
44 Imperfect symmetry
45 Incoherent
46 Insecure
47 Insignificant
48 Glitch
49 Grainy
50 Lacking detail
51 Losing
52 Low color focused
53 Low contrasted
54 Low enhanced
55 Low intricate
56 low quality
57 Matte
58 Mediocre aesthetic
59 Mediocre color
60 Mediocre composition
61 Mild
62 Monochrome
63 ms paint
64 Mundane
65 Mundane atmosphere
66 Mundane composition
67 Negative emotional
68 Not very
69 Ordinary
70 Ordinary basic rough coarse detail
71 Ordinary detail
72 Ordinary simple low quality color basic
73 Overexposed
74 Out of frame
75 Pale colors
76 Plain
77 Plain clumsy
78 Poorly lit
79 Profane
80 Realistic
81 Rough
82 Rough polished
83 Rugged
84 Simple
85 Sketchy
86 Stagnant
87 Static
88 Static background
89 Static boring incomplete lackluster
90 Static color
91 Static composition
92 Static dull atmosphere
93 Static imperfect background
94 Static plain composition
95 Surface
96 Ugly
97 Unappealing composition
98 Unattractive
99 Unchanged
100 Unimaginative
101 Unimpressive
102 Uninspirational
103 Uninspired
104 Unknown
105 Unknown quality
106 Unoriginal
107 Unromantic
108 Unstylish
109 Untheatrical
110 Void
111 Worst quality
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -128,4 +128,5 @@ Charity
Passion
Bliss
Awe
Delight
Delight
Seasons
1 Infinity
128 Passion
129 Bliss
130 Awe
131 Delight
132 Seasons
+2
View File
@@ -213,6 +213,7 @@ Extreme
Fairy-Tale
Fallacious
Familiar
Fae
Fantastical
Fascinating
Fashionable
@@ -519,6 +520,7 @@ Sparkling
Sparse
Spellbinding
Spiritual
Spirit World
Sprawling
Squealing
Stale
1 -space-
213 Fairy-Tale
214 Fallacious
215 Familiar
216 Fae
217 Fantastical
218 Fascinating
219 Fashionable
520 Sparse
521 Spellbinding
522 Spiritual
523 Spirit World
524 Sprawling
525 Squealing
526 Stale
+130
View File
@@ -0,0 +1,130 @@
advanced cinematic perfect light
aesthetic
ambient
ambient atmosphere
ambient background
ambient illumination
ambient light
artistic
atmosphere
background inspired
badge
beautiful
beautiful composition
beautiful detailed
beautiful detailed supreme quality color intricate
beautiful elegant
best
cinematic
cinematic atmosphere
cinematic light
cinematic perfect intricate stunning fine detail
colorful
complex
complex artistic color composition
complimentary colors
confident
contemporary
contemporary fine detail
cool colors
creative
cute
deep aesthetic
deep rich colors
delicate
detailed
dramatic
dynamic
dynamic background
dynamic cinematic color
dynamic cinematic perfect background
dynamic composition
dynamic dramatic atmosphere
dynamic dramatic beautiful full taking
dynamic dramatic composition
elaborate
elegant
enchanted
enhanced quality
epic
epic atmosphere
epic composition
excellent composition
exquisite color
extremely rich detail
extremely stylish
fabulous colors
fantastic aesthetic
fertile
fine artistic composition
fine detail
fine polished
flowing
full color
glossy
glowing
gorgeous
grand illumination
great composition
great light
handsome
highly color focused
highly complex
highly contrasted
highly decorated
highly detail
highly detailed
highly enhanced
highly intricate
holy
illustrious
illustrious quality
imposing
inspired
intense
intricate
intricate artistic color
intricate detail
located artistic
lush
luxurious
luxurious sharp focus
luxury
magic atmosphere
magical
magical atmosphere
magical composition
magnificent
modified
original
perfect background
perfect composition
perfect symmetry
polished
positive emotional
professional creative
professional fine composition
pure
quality
radiant
rich deep colors
rich vivid colors
romantic
set logical ambient background
sharp focus
shiny
striking
stunning
stunning detail
sublime
sunny
surreal
theatrical
unique
very
very coherent
very inspirational
vibrant
vivid colors
warm light
winning
1 advanced cinematic perfect light
2 aesthetic
3 ambient
4 ambient atmosphere
5 ambient background
6 ambient illumination
7 ambient light
8 artistic
9 atmosphere
10 background inspired
11 badge
12 beautiful
13 beautiful composition
14 beautiful detailed
15 beautiful detailed supreme quality color intricate
16 beautiful elegant
17 best
18 cinematic
19 cinematic atmosphere
20 cinematic light
21 cinematic perfect intricate stunning fine detail
22 colorful
23 complex
24 complex artistic color composition
25 complimentary colors
26 confident
27 contemporary
28 contemporary fine detail
29 cool colors
30 creative
31 cute
32 deep aesthetic
33 deep rich colors
34 delicate
35 detailed
36 dramatic
37 dynamic
38 dynamic background
39 dynamic cinematic color
40 dynamic cinematic perfect background
41 dynamic composition
42 dynamic dramatic atmosphere
43 dynamic dramatic beautiful full taking
44 dynamic dramatic composition
45 elaborate
46 elegant
47 enchanted
48 enhanced quality
49 epic
50 epic atmosphere
51 epic composition
52 excellent composition
53 exquisite color
54 extremely rich detail
55 extremely stylish
56 fabulous colors
57 fantastic aesthetic
58 fertile
59 fine artistic composition
60 fine detail
61 fine polished
62 flowing
63 full color
64 glossy
65 glowing
66 gorgeous
67 grand illumination
68 great composition
69 great light
70 handsome
71 highly color focused
72 highly complex
73 highly contrasted
74 highly decorated
75 highly detail
76 highly detailed
77 highly enhanced
78 highly intricate
79 holy
80 illustrious
81 illustrious quality
82 imposing
83 inspired
84 intense
85 intricate
86 intricate artistic color
87 intricate detail
88 located artistic
89 lush
90 luxurious
91 luxurious sharp focus
92 luxury
93 magic atmosphere
94 magical
95 magical atmosphere
96 magical composition
97 magnificent
98 modified
99 original
100 perfect background
101 perfect composition
102 perfect symmetry
103 polished
104 positive emotional
105 professional creative
106 professional fine composition
107 pure
108 quality
109 radiant
110 rich deep colors
111 rich vivid colors
112 romantic
113 set logical ambient background
114 sharp focus
115 shiny
116 striking
117 stunning
118 stunning detail
119 sublime
120 sunny
121 surreal
122 theatrical
123 unique
124 very
125 very coherent
126 very inspirational
127 vibrant
128 vivid colors
129 warm light
130 winning
+2
View File
@@ -82,6 +82,7 @@ Exotic
Expressive
Extraordinary
Fairy-Tale
Fae
Fantastical
Fantasy
Fashionable
@@ -174,6 +175,7 @@ Shabby
Smart
Smiling
Spellbinding
Spiritual
Stressed
Striking
Stunning
1 lowborn
82 Expressive
83 Extraordinary
84 Fairy-Tale
85 Fae
86 Fantastical
87 Fantasy
88 Fashionable
175 Smart
176 Smiling
177 Spellbinding
178 Spiritual
179 Stressed
180 Striking
181 Stunning
+5 -1
View File
@@ -14,4 +14,8 @@ colorful
vibrant
dramatic
artistic
-basicbitchdescriptor-
-basicbitchdescriptor-
candid
amateurish
top-notch
superb
1 professional
14 vibrant
15 dramatic
16 artistic
17 -basicbitchdescriptor-
18 candid
19 amateurish
20 top-notch
21 superb
+2 -1
View File
@@ -35,4 +35,5 @@ Airbrush painting
On pale black paper
On pale -color- paper
Anime
Cinematic still
Cinematic still
OR(;2D;3D;uncommon) Game art
1 RAW photo
35 On pale black paper
36 On pale -color- paper
37 Anime
38 Cinematic still
39 OR(;2D;3D;uncommon) Game art
+1 -1
View File
@@ -1,7 +1,7 @@
RAW photo
Photograph
Digital art
3D Rendering
OR(;2D;3D;uncommon) Game art
Concept art
Portrait
Anime
1 RAW photo
2 Photograph
3 Digital art
4 3D Rendering OR(;2D;3D;uncommon) Game art
5 Concept art
6 Portrait
7 Anime
+2 -1
View File
@@ -14,4 +14,5 @@ Portrait
Raw digital photo
On pale black paper
Anime
Cinematic still
Cinematic still
OR(;2D;3D;uncommon) Game art
1 RAW photo
14 Raw digital photo
15 On pale black paper
16 Anime
17 Cinematic still
18 OR(;2D;3D;uncommon) Game art
+1
View File
@@ -121,6 +121,7 @@ Countess;female
Court jester;both
Cowboy;male
Cowgirl;female
Crone;female
Crusader;both
Cryptographer;both
Curate;both
1 -charactertype- character both
121 Court jester both
122 Cowboy male
123 Cowgirl female
124 Crone female
125 Crusader both
126 Cryptographer both
127 Curate both
+1
View File
@@ -2,6 +2,7 @@
-color- field
-color- nebula
-material- caverns
-object--world
Abbaye aux Dames
Abu Dhabi
Abyss
1 -animal- den
2 -color- field
3 -color- nebula
4 -material- caverns
5 -object--world
6 Abbaye aux Dames
7 Abu Dhabi
8 Abyss
+4 -1
View File
@@ -18,4 +18,7 @@ concept art
Golden ratio
Rule of Thirds
award winning
stylized
stylized
-allstylessuffix-
-artistdescription-
-fluff-
1 behance
18 Golden ratio
19 Rule of Thirds
20 award winning
21 stylized
22 -allstylessuffix-
23 -artistdescription-
24 -fluff-
+2
View File
@@ -11,6 +11,7 @@ Disgusting
Embarrassing
Energetic
Evil
Fae
Fantasy
Fairy-Tale
Fearful
@@ -39,6 +40,7 @@ Satisfying
Sci-Fi
Shameful
Shameless
Spiritual
Suffering
Surprising
Tranquil
1 Amusing
11 Embarrassing
12 Energetic
13 Evil
14 Fae
15 Fantasy
16 Fairy-Tale
17 Fearful
40 Sci-Fi
41 Shameful
42 Shameless
43 Spiritual
44 Suffering
45 Surprising
46 Tranquil
+2
View File
@@ -7,6 +7,7 @@ Dark
Depressing
Energetic
Evil
Fae
Fantasy
Fairy-Tale
Fearful
@@ -29,6 +30,7 @@ Romantic
Sad
Satisfying
Sci-Fi
Spiritual
Suffering
Surprising
Tranquil
1 Amusing
7 Depressing
8 Energetic
9 Evil
10 Fae
11 Fantasy
12 Fairy-Tale
13 Fearful
30 Sad
31 Satisfying
32 Sci-Fi
33 Spiritual
34 Suffering
35 Surprising
36 Tranquil
+3 -1
View File
@@ -75,4 +75,6 @@ frolicking in a -minilocation-
pointe pose
Dancing and looking at camera
Walking towards camera
Walking away from camera
Walking away from camera
peace sign pose
-humanexpression- pose
1 looking up
75 pointe pose
76 Dancing and looking at camera
77 Walking towards camera
78 Walking away from camera
79 peace sign pose
80 -humanexpression- pose
+4 -1
View File
@@ -37,4 +37,7 @@ Concept Art World
contest winner
Flickr
Unsplash
Pixabay
Pixabay
-fluff-
-fluff-, -fluff-
-fluff-, -fluff-, -fluff-
1 8K
37 contest winner
38 Flickr
39 Unsplash
40 Pixabay
41 -fluff-
42 -fluff-
43 -fluff-
+2
View File
@@ -5,6 +5,7 @@ Lord of the Rings
Blade runner
D&D
Cyberpunk
Fae
Fantasy
Dark Fantasy
Corporate
@@ -31,5 +32,6 @@ Matrix
Mad Max
Harry Potter
Shadowrun
Spirit world
Neo-Tokyo
Steampunk
1 Star Wars
5 Blade runner
6 D&D
7 Cyberpunk
8 Fae
9 Fantasy
10 Dark Fantasy
11 Corporate
32 Mad Max
33 Harry Potter
34 Shadowrun
35 Spirit world
36 Neo-Tokyo
37 Steampunk
+2 -1
View File
@@ -6,4 +6,5 @@ unique art mode
massive madness mode
photo fantasy mode
subject only mode
fixed styles mode
fixed styles mode
dynamic templates mode
1 only templates mode
6 massive madness mode
7 photo fantasy mode
8 subject only mode
9 fixed styles mode
10 dynamic templates mode
@@ -0,0 +1,21 @@
a OR(-imagetype-;-artiststyle-;OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))) OR(artwork;art) OR(by;designed by;stylized by;uncommon) -artist-, a OR(-artiststyle-;-imagetypequality-) OR(art;work;artwork) OR(with a OR(touch;splash;hint) of OR(-colorcombination- colors;-color-;-colorscheme-);reminiscent of -artmovement-;inspired by -artmovement-;taking influence from -artmovement-).
a OR(-imagetype-;-artiststyle-;OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))) OR(artwork;art) OR(by;designed by;stylized by;uncommon) -artist-, a OR(-artiststyle-;-imagetypequality-) OR(art;work;artwork)
a OR(;-imagetypequality-;uncommon) a OR(;-imagetype-;uncommon) artwork in OR(;-imagetypequality-;uncommon) -artmovement- style
a OR(;-shotsize- shot;uncommon) -descriptor- -imagetype- artwork inspired by OR(-setting- setting;-culture- setting).
a OR(-colorscheme-;-colorcombination-) OR(;-basicbitchdescriptor-;-imagetypequality-;uncommon) OR(OR(;gradient;uncommon) background;art;artwork;image)
a OR(-imagetype-;-othertype-) OR(artwork;art)
a OR(;-shotsize- shot;uncommon) OR(;-photoaddition-;uncommon) photograph OR(;shot with a -camera-;shot with a -lens- lens;uncommon)
Combining the styles of -artist- OR(;, -artist-;rare) and -artist-, this OR(;-artiststyle-;uncommon) OR(;-imagetypequality-;uncommon) image
OR(Unique;one of a kind;-basicbitchdescriptor-) art in the form of a -othertype-.
Capturing the OR(;feeling of;uncommon) -mood- OR(atmosphere;mood;ambience;energy;vibes), this -direction- OR(work;scene;image;art;artwork)
The very -descriptor- OR(artwork;art;image;scene) is inspired by OR(-imagetype-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))
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-;-fluff- art)
This OR(photograph;artwork;art;sculpture;scene;-imagetype-) is shot in -shotsize- OR(;around -timeperiod-;uncommon)
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-
Art by -artist-, -fluff- defines the -colorscheme- backgroud, drawing inspiration from -greatwork-.
1 a OR(-imagetype-;-artiststyle-;OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))) OR(artwork;art) OR(by;designed by;stylized by;uncommon) -artist-, a OR(-artiststyle-;-imagetypequality-) OR(art;work;artwork) OR(with a OR(touch;splash;hint) of OR(-colorcombination- colors;-color-;-colorscheme-);reminiscent of -artmovement-;inspired by -artmovement-;taking influence from -artmovement-).
2 a OR(-imagetype-;-artiststyle-;OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))) OR(artwork;art) OR(by;designed by;stylized by;uncommon) -artist-, a OR(-artiststyle-;-imagetypequality-) OR(art;work;artwork)
3 a OR(;-imagetypequality-;uncommon) a OR(;-imagetype-;uncommon) artwork in OR(;-imagetypequality-;uncommon) -artmovement- style
4 a OR(;-shotsize- shot;uncommon) -descriptor- -imagetype- artwork inspired by OR(-setting- setting;-culture- setting).
5 a OR(-colorscheme-;-colorcombination-) OR(;-basicbitchdescriptor-;-imagetypequality-;uncommon) OR(OR(;gradient;uncommon) background;art;artwork;image)
6 a OR(-imagetype-;-othertype-) OR(artwork;art)
7 a OR(;-shotsize- shot;uncommon) OR(;-photoaddition-;uncommon) photograph OR(;shot with a -camera-;shot with a -lens- lens;uncommon)
8 Combining the styles of -artist- OR(;, -artist-;rare) and -artist-, this OR(;-artiststyle-;uncommon) OR(;-imagetypequality-;uncommon) image
9 OR(Unique;one of a kind;-basicbitchdescriptor-) art in the form of a -othertype-.
10 Capturing the OR(;feeling of;uncommon) -mood- OR(atmosphere;mood;ambience;energy;vibes), this -direction- OR(work;scene;image;art;artwork)
11 The very -descriptor- OR(artwork;art;image;scene) is inspired by OR(-imagetype-;-othertype-;-artmovement-;OR(-colorscheme-;-colorcombination-))
12 a -allstylessuffix- type of OR(artwork;art;image;scene)
13 From the -age-, this OR(artwork;art;image;scene) OR(;based on OR(-imagetype-;-artiststyle-;-othertype-;-artmovement-);uncommon)
14 In OR(-material-;-materialcombination-;-color-;-colorcombination-;-pattern-;-print-) material, this OR(;-imagetypequality-;uncommon) OR(artwork;art;sculpture;scene)
15 -artist- is expressing OR(an -mood- mood;-imagetypequality- skill;the essence of -basicbitchdescriptor-;-artiststyle-;-fluff- art)
16 This OR(photograph;artwork;art;sculpture;scene;-imagetype-) is shot in -shotsize- OR(;around -timeperiod-;uncommon)
17 In OR(full;-imagetypequality-;-fluff-;uncommon) OR(-artmovement-;-basicbitchdescriptor-;-pattern-;-print-;-animal-;-allstylessuffix-;-rpgclass-) style.
18 On a OR(-imagetypequality-;-basicbitchdescriptor-) OR(OR(;gradient;uncommon) background;art;artwork;image) OR(;in OR(-colorscheme-;-colorcombination-) colors;uncommon)
19 a OR(-imagetypequality-;-basicbitchdescriptor-;-mood-)-style OR(OR(;gradient;uncommon) background;art;artwork;image)
20 -artistdescription-, -artistmedium- by -artist-
21 Art by -artist-, -fluff- defines the -colorscheme- backgroud, drawing inspiration from -greatwork-.
@@ -0,0 +1,23 @@
OR(Describing;Evoking) a sense of OR(-mood-;-descriptor-) OR(under;in;that is) -lighting- lighting. OR(;It is -quality-.;uncommon)
It has OR(-colorcombination- colors;-color-;-colorscheme-) details.
It is OR(evoking;capturing) the feeling of being -mood-.
The quality is OR(;very;uncommon) -imagetypequality-. OR(; OR(The art has a;The artist used a;The image uses a;It has a;Including a) -vomit- type effect.;uncommon)
The OR(artwork;art;image) is OR(by;designed by;stylized by) -artist- OR(;in a -artiststyle- style;uncommon).
The -lighting- OR(art is -basicbitchdescriptor-;art is of -imagetypequality- quality;enhances the image).
The overall style of the image is OR(-artmovement-;inspired by -artmovement-;inspired by -setting-).
The -direction- OR(work;scene;image;art;artwork) OR(exudes;has) OR(-imagetypequality-;-mood-) vibes.
The OR(work;scene;image;art;artwork) is -quality-.
OR(It;The scene) is set on a OR(-color-;-colorscheme-;-colorcombination-) background.
It is OR(captured in;lit by) -lighting- lighting.
The OR(work;scene;image;art;artwork) is very OR(-imagetypequality-;-basicbitchdescriptor-;-descriptor-;-allstylessuffix-).
The artist -artist- is capturing the essence of OR(being -mood-;-basicbitchdescriptor-;-descriptor-;-allstylessuffix-).
The composition is OR(based on the rule of thirds;centered;off-center;-imagetypequality-;-basicbitchdescriptor-).
OR(It;The scene) is set with a OR(dynamic;quality;still;tranquil;-imagetypequality-) composition.
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-.
-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).
Can't render this file because it contains an unexpected character in line 22 and column 120.
+3 -1
View File
@@ -495,4 +495,6 @@ illustration art by rhads, -subject-, cloudscape backgrounds, dark edges, yellow
painting by James jean, abstract art, -subject-, detailed, vibrant, surrealism, fantastical
portrait art by conrad roset, -subject-, blank background, watercolor, surrealism, mixed with natural elements
digital artwork, art by beeple, -subject-, surrealism, futurism, color hue, creative
pop art by Andy Warhol, -subject-, simple and flat, photocopies, vectorized, vibrant
pop art by Andy Warhol, -subject-, simple and flat, photocopies, vectorized, vibrant
beautiful classic japanese anime movie poster, -subject-, facing a giant robot, japanese poster title, vintage
sticker, chibi cute 3d, rendered -subject- ((with a face)), with white perimeter, black background
1 professional 3d model -subject-, octane render, highly detailed, volumetric, dramatic lighting
495 painting by James jean, abstract art, -subject-, detailed, vibrant, surrealism, fantastical
496 portrait art by conrad roset, -subject-, blank background, watercolor, surrealism, mixed with natural elements
497 digital artwork, art by beeple, -subject-, surrealism, futurism, color hue, creative
498 pop art by Andy Warhol, -subject-, simple and flat, photocopies, vectorized, vibrant
499 beautiful classic japanese anime movie poster, -subject-, facing a giant robot, japanese poster title, vintage
500 sticker, chibi cute 3d, rendered -subject- ((with a face)), with white perimeter, black background
+10 -2
View File
@@ -20,7 +20,7 @@
-color- splash
-colorcombination-
-space-
(-color- and -color-:0.7)
-color- and -color-
arcane
Batik
behance
@@ -62,6 +62,7 @@ Encaustic Paint
epic fantasy
ethereal magical atmosphere
expressive brush strokes
fae folkore
fairy tale
Film grain
Floral motifs
@@ -126,6 +127,7 @@ Simplified style
sloppy strokes
Soutache
Spirals
Spirit world
stylized
sunbeam
surreal design
@@ -143,4 +145,10 @@ vignette
vintage
Vitrail
Zentangle
-element- and -element-
-element- and -element-
-allstylessuffix-
-allstylessuffix-, -allstylessuffix-
-allstylessuffix-, -allstylessuffix-, -allstylessuffix-
-artistdescription-
-artistdescription-, -artistdescription-
-artistdescription-, -artistdescription-, -artistdescription-
1 -basicbitchdescriptor-
20 -color- splash
21 -colorcombination-
22 -space-
23 (-color- and -color-:0.7) -color- and -color-
24 arcane
25 Batik
26 behance
62 epic fantasy
63 ethereal magical atmosphere
64 expressive brush strokes
65 fae folkore
66 fairy tale
67 Film grain
68 Floral motifs
127 sloppy strokes
128 Soutache
129 Spirals
130 Spirit world
131 stylized
132 sunbeam
133 surreal design
145 vintage
146 Vitrail
147 Zentangle
148 -element- and -element-
149 -allstylessuffix-
150 -allstylessuffix-
151 -allstylessuffix-
152 -artistdescription-
153 -artistdescription-
154 -artistdescription-
+3 -1
View File
@@ -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
-1
View File
@@ -1,7 +1,6 @@
import json
import os
import shutil
import random
class OneButtonPresets:
+3 -3
View File
@@ -98,14 +98,14 @@ if __name__ == "__main__":
generateprompts(10,5
,"all" # subject
,"all" # artists
,"all" # 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"
,"all" # 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
@@ -116,5 +116,5 @@ if __name__ == "__main__":
, "" #outfit override
, False #prompt_g_and_l
, "Stable Cascade" #base model
, "All (random)..." #preset "All (random)..."
, "" #preset "All (random)..."
)
+37 -19
View File
@@ -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
</font>
"""
)
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 = []
+27 -2
View File
@@ -1,10 +1,11 @@
# ComfyUI integration
One Button Prompt is now also a ComfyUI extension.
There are 4 nodes currently availabe, with One Button Prompt node being the main one.
There are 7 nodes currently availabe, with One Button Prompt node being the main one.
You can slam it in every workflow, where you replace it with the Positive Prompt node.
![image](https://github.com/AIrjen/OneButtonPrompt/assets/130234949/342bd715-9b7e-4e1a-a3ba-ff3b557b89cc)
![image](https://github.com/AIrjen/OneButtonPrompt/assets/130234949/271dc575-dfe7-48dc-bef5-222d0af53344)
## Installing in ComfyUI
@@ -59,6 +60,30 @@ Has a simple prompt output and a preset selector. You can add new presets by man
![image](https://github.com/AIrjen/OneButtonPrompt/assets/130234949/33392e25-d24e-4cc7-a90f-95722e7e8e06)
## One Button Artify
One Button Artify works as an artist mixer for your prompt. Like SDXL styles, but for all artists known in Stable Diffusion.
It works best when adding a simple prompt.
It has the following settings to play with:
- Artist --> Selection of the style of artists to choose from.
- amount_of_artists --> Amount of artists to generate. Select random, for a choice between 1 and 3.
- artify_mode --> __standard__ adds tags according to the chosen artist. __remix__ chooses tags from different than the chosen artist. __super remix turbo__ chooses wildly from a long list of tags.
![image](https://github.com/AIrjen/OneButtonPrompt/assets/130234949/22415117-c457-44a3-bc35-d13629681319)
> vibrant art by Chiho Aoshima, Digital Art, cute norwegian forest cat, Superflat art movement, kawaii aesthetics, fantastical and surreal imagery, blending traditional Japanese motifs with contemporary themes, vibrant colors, otherworldly landscapes, sharp focus, dynamic, contemporary, full color, grand illumination
## One Button Flufferize
One Button Prompts lightweight implementation of Fooocus Prompt Magic. It will enhance the output by adding quality tags at the end of your prompt. See the example above.
It is standardly set to __dynamic__. You can turn it off by choosing __none__.
Choose __short__, __medium__ or __long__ for more direct control.
Don't __reverse the polarity!__
## Create Prompt Variant
You can use the "Create Prompt Variant" node, to create variants based on a prompt you input. The strength of the variant is set with the "insanity level" slider. Simply connect it between the positive prompt and the CLIP encoder module.