V1.3 - CACHE

This commit is contained in:
Leslie Perjes
2023-12-20 19:45:45 +01:00
parent 02c330e4f2
commit 6625bd8165
8 changed files with 6275 additions and 91 deletions
View File
+30 -12
View File
@@ -74,8 +74,12 @@ class PrimereCKPT:
}
def load_ckpt_list(self, base_model):
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(base_model)
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
modelname_only = Path(base_model).stem
model_version = utility.get_value_from_cache('model_version', modelname_only)
if model_version is None:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(base_model)
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
utility.add_value_to_cache('model_version', modelname_only, model_version)
return (base_model, model_version)
@@ -153,27 +157,41 @@ class PrimereCKPTLoader:
"strength_lcm_model": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
"strength_lcm_clip": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
},
"optional": {
"loaded_model": ('MODEL', {"forceInput": True, "default": None}),
"loaded_clip": ('CLIP', {"forceInput": True, "default": None}),
"loaded_vae": ('VAE', {"forceInput": True, "default": None}),
},
}
def load_primere_ckpt(self, ckpt_name, use_yaml, is_lcm, strength_lcm_model, strength_lcm_clip):
def load_primere_ckpt(self, ckpt_name, use_yaml, is_lcm, strength_lcm_model, strength_lcm_clip, loaded_model = None, loaded_clip = None, loaded_vae = None):
path = Path(ckpt_name)
ModelName = path.stem
ModelConfigPath = path.parent.joinpath(ModelName + '.yaml')
ModelConfigFullPath = Path(folder_paths.models_dir).joinpath('checkpoints').joinpath(ModelConfigPath)
if (os.path.isfile(ModelConfigFullPath) and use_yaml == True):
ckpt_path = folder_paths.get_full_path("checkpoints", ckpt_name)
print(ModelName + '.yaml file found and loading...')
try:
LOADED_CHECKPOINT = comfy.sd.load_checkpoint(ModelConfigFullPath, ckpt_path, True, True, None, None, None)
except Exception:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(ckpt_name)
if (loaded_model is not None and loaded_clip is not None and loaded_vae is not None):
LOADED_CHECKPOINT = []
LOADED_CHECKPOINT.insert(0, loaded_model)
LOADED_CHECKPOINT.insert(1, loaded_clip)
LOADED_CHECKPOINT.insert(2, loaded_vae)
else:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(ckpt_name)
if (os.path.isfile(ModelConfigFullPath) and use_yaml == True):
ckpt_path = folder_paths.get_full_path("checkpoints", ckpt_name)
print(ModelName + '.yaml file found and loading...')
try:
LOADED_CHECKPOINT = comfy.sd.load_checkpoint(ModelConfigFullPath, ckpt_path, True, True, None, None, None)
except Exception:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(ckpt_name)
else:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(ckpt_name)
OUTPUT_MODEL = LOADED_CHECKPOINT[0]
OUTPUT_CLIP = LOADED_CHECKPOINT[1]
MODEL_VERSION = utility.getCheckpointVersion(OUTPUT_MODEL)
MODEL_VERSION = utility.get_value_from_cache('model_version', ModelName)
if MODEL_VERSION is None:
MODEL_VERSION = utility.getCheckpointVersion(OUTPUT_MODEL)
utility.add_value_to_cache('model_version', ModelName, MODEL_VERSION)
def lcm(self, model, zsnr=False):
m = model.clone()
+39 -31
View File
@@ -256,8 +256,8 @@ class PrimereVAESelector:
class PrimereMetaRead:
CATEGORY = TREE_INPUTS
RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING", "CHECKPOINT_NAME", comfy.samplers.KSampler.SAMPLERS, comfy.samplers.KSampler.SCHEDULERS, "INT", "INT", "INT", "FLOAT", "INT", "VAE_NAME", "VAE", "TUPLE")
RETURN_NAMES = ("PROMPT+", "PROMPT-", "PROMPT L+", "PROMPT L-", "REFINER+", "REFINER-", "MODEL_NAME", "SAMPLER_NAME", "SCHEDULER_NAME", "SEED", "WIDTH", "HEIGHT", "CFG", "STEPS", "VAE_NAME", "VAE", "METADATA")
RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING", "CHECKPOINT_NAME", comfy.samplers.KSampler.SAMPLERS, comfy.samplers.KSampler.SCHEDULERS, "INT", "INT", "INT", "FLOAT", "INT", "VAE_NAME", "VAE", "CLIP", "MODEL", "TUPLE")
RETURN_NAMES = ("PROMPT+", "PROMPT-", "PROMPT L+", "PROMPT L-", "REFINER+", "REFINER-", "MODEL_NAME", "SAMPLER_NAME", "SCHEDULER_NAME", "SEED", "WIDTH", "HEIGHT", "CFG", "STEPS", "VAE_NAME", "VAE", "CLIP", "MODEL", "METADATA")
FUNCTION = "load_image_meta"
def __init__(self):
@@ -348,7 +348,7 @@ class PrimereMetaRead:
data_json['force_model_vae'] = force_model_vae
data_json['prefered_model'] = prefered_model
data_json['prefered_orientation'] = prefered_orientation
LOADED_CHECKPOINT = None
LOADED_CHECKPOINT = []
is_sdxl = 0
match model_version:
@@ -375,9 +375,10 @@ class PrimereMetaRead:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(model_name)
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.vae_loader.load_vae(data_json['vae_name'])[0]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
return (positive, negative, positive_l, negative_l, positive_r, negative_r, model_name, sampler_name, scheduler_name, seed, width, height, cfg_scale, steps, data_json['vae_name'], realvae, data_json)
return (positive, negative, positive_l, negative_l, positive_r, negative_r, model_name, sampler_name, scheduler_name, seed, width, height, cfg_scale, steps, data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
reader = readerResult.parser
@@ -400,9 +401,10 @@ class PrimereMetaRead:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(model_name)
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.vae_loader.load_vae(data_json['vae_name'])[0]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
return (positive, negative, positive_l, negative_l, positive_r, negative_r, model_name, sampler_name, scheduler_name, seed, width, height, cfg_scale, steps, data_json['vae_name'], realvae, data_json)
return (positive, negative, positive_l, negative_l, positive_r, negative_r, model_name, sampler_name, scheduler_name, seed, width, height, cfg_scale, steps, data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
try:
if use_model == True:
@@ -424,8 +426,13 @@ class PrimereMetaRead:
if (data_json['model_name'] != model_name):
is_sdxl = 0
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
modelname_only = Path((data_json['model_name'])).stem
model_version = utility.get_value_from_cache('model_version', modelname_only)
if model_version is None:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
utility.add_value_to_cache('model_version', modelname_only, model_version)
data_json['model_version'] = model_version
match model_version:
case 'SDXL_2048':
@@ -464,10 +471,11 @@ class PrimereMetaRead:
data_json['vae_name'] = folder_paths.get_filename_list("vae")[0]
if force_model_vae == True:
if LOADED_CHECKPOINT is not None:
if len(LOADED_CHECKPOINT) == 3:
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.chkp_loader.load_checkpoint(data_json['model_name'])[2]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
else:
if use_exif_vae == True:
if 'vae' in reader.parameter:
@@ -501,31 +509,33 @@ class PrimereMetaRead:
data_json['negative'] = reader.parameter['dynamic_negative']
data_json['dynamic_negative'] = reader.parameter['dynamic_negative']
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, data_json)
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
except ValueError as VE:
print(VE)
if (force_model_vae == True):
if LOADED_CHECKPOINT is not None:
if len(LOADED_CHECKPOINT) == 3:
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.chkp_loader.load_checkpoint(data_json['model_name'])[2]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.vae_loader.load_vae(data_json['vae_name'])[0]
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, data_json)
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
else:
print('No source image loaded')
if (force_model_vae == True):
if LOADED_CHECKPOINT is not None:
if len(LOADED_CHECKPOINT) == 3:
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.chkp_loader.load_checkpoint(data_json['model_name'])[2]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.vae_loader.load_vae(data_json['vae_name'])[0]
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, data_json)
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
else:
print('Exif reader off')
@@ -533,8 +543,13 @@ class PrimereMetaRead:
data_json['model_name'] = exif_data_checker.check_model_from_exif("no_hash_data", prefered_model, prefered_model, False)
is_sdxl = 0
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
modelname_only = Path(data_json['model_name']).stem
model_version = utility.get_value_from_cache('model_version', modelname_only)
if model_version is None:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
utility.add_value_to_cache('model_version', modelname_only, model_version)
data_json['model_version'] = model_version
match model_version:
case 'SDXL_2048':
@@ -542,10 +557,11 @@ class PrimereMetaRead:
data_json['is_sdxl'] = is_sdxl
if (force_model_vae == True):
if LOADED_CHECKPOINT is not None:
if len(LOADED_CHECKPOINT) == 3:
realvae = LOADED_CHECKPOINT[2]
else:
realvae = self.chkp_loader.load_checkpoint(data_json['model_name'])[2]
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(data_json['model_name'])
realvae = LOADED_CHECKPOINT[2]
else:
if (is_sdxl == 1):
data_json['vae_name'] = vae_name_sdxl
@@ -557,14 +573,6 @@ class PrimereMetaRead:
data_json['dynamic_negative'] = utility.DynPromptDecoder(self, data_json['negative'], seed)
if prefered_orientation is not None and len(prefered_orientation.strip()) > 0:
# image_sides = sorted([data_json['width'], data_json['height']])
# custom_side_b = round((image_sides[1] / image_sides[0]), 4)
# dimensions = utility.calculate_dimensions(self, "Square [1:1]", prefered_orientation, 1, model_version, True, 1, custom_side_b)
# data_json['width'] = dimensions[0]
# data_json['height'] = dimensions[1]
# width = dimensions[0]
# height = dimensions[1]
if prefered_orientation == 'Vertical' and (data_json['width'] > data_json['height']):
data_json['width'] = height
data_json['height'] = width
@@ -572,7 +580,7 @@ class PrimereMetaRead:
data_json['width'] = height
data_json['height'] = width
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, data_json)
return (data_json['positive'], data_json['negative'], data_json['positive_l'], data_json['negative_l'], data_json['positive_r'], data_json['negative_r'], data_json['model_name'], data_json['sampler_name'], data_json['scheduler_name'], data_json['seed'], data_json['width'], data_json['height'], data_json['cfg_scale'], data_json['steps'], data_json['vae_name'], realvae, LOADED_CHECKPOINT[1], LOADED_CHECKPOINT[0], data_json)
@classmethod
def IS_CHANGED(cls, image):
+6 -2
View File
@@ -35,8 +35,12 @@ class PrimereVisualCKPT:
}
def load_ckpt_visual_list(self, base_model, show_hidden, show_modal):
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(base_model)
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
modelname_only = Path(base_model).stem
model_version = utility.get_value_from_cache('model_version', modelname_only)
if model_version is None:
LOADED_CHECKPOINT = self.chkp_loader.load_checkpoint(base_model)
model_version = utility.getCheckpointVersion(LOADED_CHECKPOINT[0])
utility.add_value_to_cache('model_version', modelname_only, model_version)
return (base_model, model_version)
+45 -45
View File
@@ -541,7 +541,7 @@
"Node name for S&R": "PrimereSeed"
},
"widgets_values": [
246893472308505,
-1,
null,
null,
null
@@ -760,9 +760,9 @@
"Node name for S&R": "PrimereVisualStyle"
},
"widgets_values": [
"SFW Luxury model",
"NSFW Luxury model",
true,
true,
false,
true,
false,
true
@@ -884,7 +884,7 @@
"Node name for S&R": "PrimereVisualCKPT"
},
"widgets_values": [
"SDXL\\HEPHAISTOSSD10XL.safetensors",
"BestAll\\realisticVision_v5.1.safetensors",
true,
true
],
@@ -958,7 +958,7 @@
},
"widgets_values": [
"(beautiful sexy 30 years old ({American black|Australian white|European white|white}:1.4) model woman:1.2), (standing in the {green park|big city street|small village|small city|near friendly house}:1.3), near {blue lake|office building|small village house|big snowy hill|night starry sky}, {half body|full body|portrait|closeup} outdoor color professional model fashion photography, soft natural lights, __jumbo/people/mood__ mood, {open|closed|kissing} mouth, (wear {white|brown|red|green|yellow|rainbow}, {leather|winter|silky|luxury|elegant}, {jacket|coat|winter coat}:1.6), (wear maroon luxury silk underwear:1.6), (wear {leather|jeans} {long|short} {black|white|blue}, trousers:1.6), ({long|short} {black|red|pink|blonde|brown|blue|green|white|rainbow painted} {straight|curly} hair:1.6), {small|large} cleavage, natural tits, snow:0.5, {Winter|Autumn|Spring|dark starry night|daytime}, blury background, bokeh, (film grain:1.6), (detailed face:1.6), (detailed skin:1.6), (luxury beautiful winter cap on her head:0.7)",
"porn, sex, nude, nudity, child, childish, Asian-Less-Neg, FastNegativeEmbedding, negative_hand, draw, illustration, telephoto, earrings, necklace, add_nsfw, bra, lingerie, (duplicate, duplication:1.6), (Christmas, holiday, asian, russian, gray:2), plastic",
"porn, sex, nude, nudity, child, childish, Asian-Less-Neg, FastNegativeEmbedding, negative_hand, draw, illustration, telephoto, earrings, necklace, add_nsfw, bra, lingerie, (duplicate, duplication:1.6), (Christmas, holiday, asian, russian, gray:2), plastic, (underwear, panties, bra:2)",
"",
"None",
"Vertical"
@@ -1278,7 +1278,7 @@
"Vertical",
true,
"BaseModel_1024",
206813675223240,
1061732784333158,
"randomize",
false,
1,
@@ -1593,7 +1593,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old glamour beautiful perfect body woman, photomodel in ({black|red|white|yellow|brown|blue|multicolor} {transparent|fishnet|silk|denim|leather} luxury {elegant|silk|plastic} {lingerie|sexy top}:1.25), ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) ({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3), beautiful natural sexy {middle|small|large|big}-size breasts, {visible|hidden} nipples, ({covered|uncovered} breast:1.2), large erotic necklace, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional} pose, luxury erotic {glamour|fashion|woman|clothes} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II"
"glamour portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old beautiful perfect body sexy nude woman, sex-model in {nude|transparent fishnet lingerie|bra|fishnet panties|transparent panties|full nude}, ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) {({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3)|nude breast:1.2}, beautiful natural sexy {middle|small|large|big}-size breasts, {visible|covered} nipples, ({covered|uncovered|nude} breast:1.2), erotic mood, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional|sex} pose, luxury erotic {nude|sex|porn} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II"
],
"color": "#232",
"bgcolor": "#353"
@@ -1624,7 +1624,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin"
"childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin"
],
"color": "#322",
"bgcolor": "#533"
@@ -1981,7 +1981,7 @@
"BaseModel_1024",
"euler",
"normal",
1342,
28,
"randomize",
65,
895,
@@ -2177,7 +2177,7 @@
},
"widgets_values": [
"",
-1044592921909375,
-676783344722029,
"randomize"
],
"color": "#232",
@@ -2231,7 +2231,7 @@
},
"widgets_values": [
"",
759807190954502,
1099179973363697,
"randomize"
],
"color": "#322",
@@ -2263,7 +2263,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"{\n \"positive\": \"portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old glamour beautiful perfect body woman, photomodel in ({black|red|white|yellow|brown|blue|multicolor} {transparent|fishnet|silk|denim|leather} luxury {elegant|silk|plastic} {lingerie|sexy top}:1.25), ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) ({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3), beautiful natural sexy {middle|small|large|big}-size breasts, {visible|hidden} nipples, ({covered|uncovered} breast:1.2), large erotic necklace, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional} pose, luxury erotic {glamour|fashion|woman|clothes} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\",\n \"negative\": \"nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin\",\n \"positive_l\": \"\",\n \"negative_l\": \"\",\n \"positive_r\": \"\",\n \"negative_r\": \"\",\n \"model_hash\": \"\",\n \"model_name\": \"SDXL\\\\HEPHAISTOSSD10XL.safetensors\",\n \"sampler_name\": \"dpmpp_sde\",\n \"scheduler_name\": \"karras\",\n \"seed\": 246893472308505,\n \"width\": 819,\n \"height\": 1280,\n \"cfg_scale\": 8.0,\n \"steps\": 25,\n \"model_version\": \"SDXL_2048\",\n \"is_lcm\": 0,\n \"vae_name\": \"sdxl_vae.safetensors\",\n \"force_model_vae\": true,\n \"prefered_model\": null,\n \"prefered_orientation\": \"Vertical\",\n \"is_sdxl\": 1,\n \"dynamic_positive\": \"portrait of bokeh (professional sexy 50 year old glamour beautiful perfect body woman, photomodel in (red leather luxury silk lingerie:1.25), (long curly hair) (red luxury leather bra:1.3), beautiful natural sexy middle-size breasts, visible nipples, (covered breast:1.2), large erotic necklace, erotic face, professional pose, luxury erotic woman photography:1.3), (huge striking expensive sparkling white diamond luxury jewellery in her neck:1.2), luxury Paris style beautiful bedroom interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\",\n \"dynamic_negative\": \"nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin\"\n}"
"{\n \"positive\": \"glamour portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old beautiful perfect body sexy nude woman, sex-model in {nude|transparent fishnet lingerie|bra|fishnet panties|transparent panties|full nude}, ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) {({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3)|nude breast:1.2}, beautiful natural sexy {middle|small|large|big}-size breasts, {visible|covered} nipples, ({covered|uncovered|nude} breast:1.2), erotic mood, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional|sex} pose, luxury erotic {nude|sex|porn} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\",\n \"negative\": \"childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin\",\n \"positive_l\": \"\",\n \"negative_l\": \"\",\n \"positive_r\": \"\",\n \"negative_r\": \"\",\n \"model_hash\": \"\",\n \"model_name\": \"BestAll\\\\absolutereality_v181.safetensors\",\n \"sampler_name\": \"dpmpp_sde\",\n \"scheduler_name\": \"karras\",\n \"seed\": 169359929534186,\n \"width\": 614,\n \"height\": 960,\n \"cfg_scale\": 8.0,\n \"steps\": 25,\n \"model_version\": \"BaseModel_768\",\n \"is_lcm\": 0,\n \"vae_name\": \"vae-ft-mse-840000-ema-pruned.ckpt\",\n \"force_model_vae\": true,\n \"prefered_model\": null,\n \"prefered_orientation\": \"Vertical\",\n \"is_sdxl\": 0,\n \"dynamic_positive\": \"glamour portrait of bokeh (professional sexy 28 year old beautiful perfect body sexy nude woman, sex-model in transparent fishnet lingerie, (short straight black hair) nude breast:1.2, beautiful natural sexy large-size breasts, covered nipples, (nude breast:1.2), erotic mood, love face, professional pose, luxury erotic sex photography:1.3), (huge striking expensive sparkling brown diamond luxury jewellery in her neck:1.2), luxury old style style beautiful interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\",\n \"dynamic_negative\": \"childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin\"\n}"
],
"color": "#002c6c",
"bgcolor": "#004080"
@@ -2350,7 +2350,7 @@
1.2,
0.9,
1.3,
387807183161230,
-552336035192073,
"randomize",
false,
"cpu"
@@ -2445,7 +2445,7 @@
"id": 223,
"type": "PrimereVisualEmbedding",
"pos": [
964,
966,
-1189
],
"size": {
@@ -2499,25 +2499,25 @@
"SD",
true,
true,
false,
"Style\\Winter.pt",
true,
"Negative\\BadNegAnatomy.pt",
0.7000000000000001,
false,
false,
true,
true,
"Photo\\kkw-photoreal.bin",
0.4,
0.5,
false,
false,
"Negative\\kkw-photo-neg.bin",
"Photo\\PhotoHelper.pt",
0.6,
false,
true,
"Negative\\light-negative.pt",
0.7000000000000001,
true,
false,
"Age-Gen-Face\\AS-Adult-neg.pt",
0.7000000000000001,
true,
false,
".NSFW\\add_nsfw.pt",
1,
"Negative\\bhands-neg.pt",
0.6,
true,
false,
"Style\\Paintmagic.pt",
@@ -2980,15 +2980,15 @@
"SD",
true,
false,
false,
true,
"Style\\add_detail.safetensors",
0.6,
0.8,
false,
"snowfall.safetensors",
1.2,
0.7000000000000001,
false,
"Style\\frosted-style-richy-v1.safetensors",
0.2,
1,
0.4,
false,
"Style\\add_detail.safetensors",
0.8,
@@ -3598,12 +3598,12 @@
"Any",
true,
true,
true,
"Style\\Cinematic_500SoftEnough.pt",
0.4,
false,
"Character\\MJ_V4_Portraits.pt",
1,
false,
"WaterElemental.pt",
1,
"Character\\matrixGirl02_v10.pt",
0.3,
false,
"Photo\\ladybreBaroqueA_v10.pt",
1,
@@ -3868,11 +3868,11 @@
"",
"",
1.2,
false,
true,
"PHOTO",
1,
"BETTER_IMAGES",
1,
1.2,
true,
"mean",
"comfy++",
@@ -3990,7 +3990,7 @@
"Node name for S&R": "KSampler"
},
"widgets_values": [
225063131318343,
869951925323456,
"randomize",
20,
8,
@@ -4027,7 +4027,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"portrait of bokeh (professional sexy 50 year old glamour beautiful perfect body woman, photomodel in (red leather luxury silk lingerie:1.25), (long curly hair) (red luxury leather bra:1.3), beautiful natural sexy middle-size breasts, visible nipples, (covered breast:1.2), large erotic necklace, erotic face, professional pose, luxury erotic woman photography:1.3), (huge striking expensive sparkling white diamond luxury jewellery in her neck:1.2), luxury Paris style beautiful bedroom interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II"
"(embedding:kkw-photoreal:0.5), glamour portrait of bokeh (professional sexy 28 year old beautiful perfect body sexy nude woman, sex-model in transparent fishnet lingerie, (short straight black hair) nude breast:1.2, beautiful natural sexy large-size breasts, covered nipples, (nude breast:1.2), erotic mood, love face, professional pose, luxury erotic sex photography:1.3), (huge striking expensive sparkling brown diamond luxury jewellery in her neck:1.2), luxury old style style beautiful interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), embedding:add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II, (Photorealistic, Hyperrealistic, Hyperdetailed, analog style, hip cocked, demure, low cut, black lace, detailed skin, matte skin, soft lighting, subsurface scattering, realistic, heavy shadow, masterpiece, best quality, ultra realistic, 8k, golden ratio, Intricate, High Detail, film photography, soft focus), master"
],
"color": "#232",
"bgcolor": "#353"
@@ -4058,7 +4058,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"(embedding:ImgFixerPre0.3:0.8), (nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin:1.20)"
"(embedding:light-negative:0.7000000000000001), (embedding:BadNegAnatomy:0.7000000000000001), (embedding:bhands-neg:0.6), (childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin:1.20), (Amputee, Autograph, Bad anatomy, Bad illustration, Bad proportions, Beyond the borders, Blank background, Blurry, Body out of frame, Boring background, Branding, Cropped, Cut off, Deformed, Disfigured, Dismembered, Disproportioned, Distorted, Draft, Duplicate, Duplicated features, Extra arms, Extra fingers, Extra hands, Extra legs, Extra limbs, Fault, Flaw, Fused fingers, Grains, Grainy, Gross proportions, Hazy, Identifying mark, Improper scale, Incorrect physiology, Incorrect ratio, Indistinct, Kitsch, Logo, Long neck, Low quality, Low resolution, Macabre, Malformed, Mark, Misshapen, Missing arms, Missing fingers, Missing hands, Missing legs, Mistake, Morbid, Mutated hands, Mutation, Mutilated, Off-screen, Out of frame, Outside the picture, Pixelated, Poorly drawn face, Poorly drawn feet, Poorly drawn hands, Printed words, Render, Repellent, Replicate, Reproduce, Revolting dimensions, Script, Shortened, Sign, Signature, Split image, Squint, Storyboard, Text, Tiling, Trimmed, Ugly, Unfocused, Unattractive, Unnatural pose, Unreal engine, Unsightly, Watermark, Written language:1.20)"
],
"color": "#322",
"bgcolor": "#533"
@@ -4089,7 +4089,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"(portrait of bokeh (professional sexy 50 year old glamour beautiful perfect body woman, photomodel in (red leather luxury silk lingerie:1.25), (long curly hair) (red luxury leather bra:1.3), beautiful natural sexy middle-size breasts, visible nipples, (covered breast:1.2), large erotic necklace, erotic face, professional pose, luxury erotic woman photography:1.3), (huge striking expensive sparkling white diamond luxury jewellery in her neck:1.2), luxury Paris style beautiful bedroom interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II)"
""
],
"color": "#232",
"bgcolor": "#353"
@@ -4120,7 +4120,7 @@
"Node name for S&R": "PrimereAnyOutput"
},
"widgets_values": [
"((nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin:1.20))"
""
],
"color": "#322",
"bgcolor": "#533"
@@ -4408,7 +4408,7 @@
},
"widgets_values": [
2.1,
764446697491499,
650364039376858,
"randomize",
7,
6.5,
@@ -4600,7 +4600,7 @@
},
"widgets_values": [
"",
":: Time to save: 2023-12-20 08:43:14\n:: Output file: z:\\AIPICS\\Comfy\\HEPHAISTOSSD10XL\\SFW\\2023-12-Week-51\\Image_20232012_084313_246893472308505_2448x3840_1.jpg\n\n:: PROCESS INFO ::\n------------------\n:: POSITIVE: portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old glamour beautiful perfect body woman, photomodel in ({black|red|white|yellow|brown|blue|multicolor} {transparent|fishnet|silk|denim|leather} luxury {elegant|silk|plastic} {lingerie|sexy top}:1.25), ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) ({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3), beautiful natural sexy {middle|small|large|big}-size breasts, {visible|hidden} nipples, ({covered|uncovered} breast:1.2), large erotic necklace, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional} pose, luxury erotic {glamour|fashion|woman|clothes} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\n:: NEGATIVE: nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin\n:: MODEL_NAME: SDXL\\HEPHAISTOSSD10XL.safetensors\n:: SAMPLER_NAME: dpmpp_sde\n:: SCHEDULER_NAME: karras\n:: SEED: 246893472308505\n:: WIDTH: 819\n:: HEIGHT: 1280\n:: CFG_SCALE: 8.0\n:: STEPS: 25\n:: MODEL_VERSION: SDXL_2048\n:: IS_LCM: 0\n:: VAE_NAME: sdxl_vae.safetensors\n:: FORCE_MODEL_VAE: True\n:: PREFERED_MODEL: None\n:: PREFERED_ORIENTATION: Vertical\n:: IS_SDXL: 1\n:: DYNAMIC_POSITIVE: portrait of bokeh (professional sexy 50 year old glamour beautiful perfect body woman, photomodel in (red leather luxury silk lingerie:1.25), (long curly hair) (red luxury leather bra:1.3), beautiful natural sexy middle-size breasts, visible nipples, (covered breast:1.2), large erotic necklace, erotic face, professional pose, luxury erotic woman photography:1.3), (huge striking expensive sparkling white diamond luxury jewellery in her neck:1.2), luxury Paris style beautiful bedroom interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4) as a ((luxury person)) with ((curtain bangs haircut)) wearing (silk) glamour photography high fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\n:: DYNAMIC_NEGATIVE: nsfw, porn, nude, nudity, child, childish, plastic breast, nude pussy, nude breast, eye-catching makeup, perfect skin\n:: SAVED_IMAGE_WIDTH: 2448\n:: SAVED_IMAGE_HEIGTH: 3840\n:: UPSCALER_RATIO: From: 819x1280 to: 2448x3840 Ratio: 3.0\n"
":: Time to save: 2023-12-20 14:58:20\n:: Output file: z:\\AIPICS\\Comfy\\ABSOLUTEREALITY_V181\\NSFW\\2023-12-Week-51\\Image_20232012_145820_1123708635975825_2432x3840_1.jpg\n\n:: PROCESS INFO ::\n------------------\n:: POSITIVE: glamour portrait of bokeh (professional sexy {26|28|30|32|35|38|40|42|45|48|50|} year old beautiful perfect body sexy nude woman, sex-model in {nude|transparent fishnet lingerie|bra|fishnet panties|transparent panties|full nude}, ({long|short} {straight|curly} {red|blonde|brown|black|multicolored rainbow|} hair) {({red|green|white|yellow|black|blue|multicolor} luxury {transparent|fishnet|leather|denim|expensive} bra:1.3)|nude breast:1.2}, beautiful natural sexy {middle|small|large|big}-size breasts, {visible|covered} nipples, ({covered|uncovered|nude} breast:1.2), erotic mood, {erotic|satisfied|romantic|love} face, {erotic|romantic|professional|sex} pose, luxury erotic {nude|sex|porn} photography:1.3), (huge striking expensive sparkling {red|white|green|glassy|brown|silver|gold} diamond luxury jewellery in her neck:1.2), luxury {Paris|Rome|London|modern|futuristic|minimalist|retro|old style|elegant} style beautiful {bedroom|kitchen|living room|office|} interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\n:: NEGATIVE: childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin\n:: MODEL_NAME: BestAll\\absolutereality_v181.safetensors\n:: SAMPLER_NAME: dpmpp_sde\n:: SCHEDULER_NAME: karras\n:: SEED: 1123708635975825\n:: WIDTH: 614\n:: HEIGHT: 960\n:: CFG_SCALE: 8.0\n:: STEPS: 25\n:: MODEL_VERSION: BaseModel_768\n:: IS_LCM: 0\n:: VAE_NAME: vae-ft-mse-840000-ema-pruned.ckpt\n:: FORCE_MODEL_VAE: True\n:: PREFERED_MODEL: None\n:: PREFERED_ORIENTATION: Vertical\n:: IS_SDXL: 0\n:: DYNAMIC_POSITIVE: glamour portrait of bokeh (professional sexy 32 year old beautiful perfect body sexy nude woman, sex-model in bra, (short curly multicolored rainbow hair) (multicolor luxury leather bra:1.3), beautiful natural sexy middle-size breasts, covered nipples, (nude breast:1.2), erotic mood, romantic face, romantic pose, luxury erotic sex photography:1.3), (huge striking expensive sparkling white diamond luxury jewellery in her neck:1.2), luxury retro style beautiful living room interior with large curtains and expensive leather bed, (less soft makeup, natural skin:1.2), (film grain:1.4), add_nsfw, nudity, porn, sex as a ((luxury person)) with ((curtain bangs haircut)) glamour photography fashion photography shot on Canon EOS 5D Mark IV with Canon EF 24-70mm f-2.8L II\n:: DYNAMIC_NEGATIVE: childish, plastic breast, covered pussy, covered breast, eye-catching makeup, perfect skin\n:: SAVED_IMAGE_WIDTH: 2432\n:: SAVED_IMAGE_HEIGTH: 3840\n:: UPSCALER_RATIO: From: 614x960 to: 2432x3840 Ratio: 3.95\n"
],
"color": "#002c6c",
"bgcolor": "#004080"
File diff suppressed because it is too large Load Diff
+46 -1
View File
@@ -8,6 +8,9 @@ import pandas
import re
from pathlib import Path
import difflib
from ..utils import cache_file
import os
import json
SUPPORTED_FORMATS = [".png", ".jpg", ".jpeg", ".webp"]
STANDARD_SIDES = [64, 80, 96, 128, 144, 160, 192, 256, 320, 368, 400, 480, 512, 560, 640, 704, 768, 832, 896, 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728, 1792, 1856, 1920, 1984, 2048]
@@ -339,4 +342,46 @@ def get_closest_element(value, list):
if len(is_found) >= 1:
return is_found[0]
return is_found
return is_found
def get_value_from_cache(category, key):
ifCacheExist = os.path.isfile(cache_file)
if ifCacheExist == True:
with open(cache_file, 'r') as openfile:
try:
saved_cache = json.load(openfile)
try:
return saved_cache[category][key]
except Exception:
return None
except ValueError as e:
return None
else:
return None
def add_value_to_cache(category, key, value):
cacheData = {category: {key: value}}
json_object = json.dumps(cacheData, indent=4)
ifCacheExist = os.path.isfile(cache_file)
if ifCacheExist == True:
with open(cache_file, 'r') as openfile:
try:
saved_cache = json.load(openfile)
if category in saved_cache:
saved_cache[category][key] = value
else:
saved_cache.update(cacheData)
newJsonObject = json.dumps(saved_cache, indent=4)
with open(cache_file, "w", encoding='utf-8') as outfile:
outfile.write(newJsonObject)
return True
except ValueError as e:
return False
else:
with open(cache_file, "w", encoding='utf-8') as outfile:
outfile.write(json_object)
return True
+3
View File
@@ -1,3 +1,4 @@
import os.path
import sys
from pathlib import Path
@@ -18,6 +19,8 @@ def add_path(path, prepend=False):
here = Path(__file__).parent.absolute()
comfy_dir = here.parent.parent
cache_dir = os.path.join(here, 'Nodes', '.cache')
cache_file = os.path.join(cache_dir, '.cache.json')
add_path(comfy_dir)
add_path((comfy_dir/"custom_nodes"))