Base assets genned: https://files.catbox.moe/h92c9m.zip
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | import requests
import json
import base64
import os
import time
import re # For sanitizing filenames
API_BASE_URL = "http://127.0.0.1:7860"
TXT2IMG_URL = f"{API_BASE_URL}/sdapi/v1/txt2img"
OUTPUT_DIR = "generated_images"
FILE_EXTENSION = "png"# Changing this here does NOT change what type of file reforge gens, just the saved filename
CHARACTERS = {
"Remilia Scarlet": "1girl, remilia scarlet",# consider adding character traits here if they're inconsistent
"Flandre Scarlet": "1girl, flandre scarlet",
"Sakuya Izayoi": "1girl, izayoi sakuya",
"Hong Meiling": "1girl, hong meiling",
"Patchouli Knowledge": "1girl, patchouli knowledge",
"Koakuma": "1girl, koakuma",
}
EXPRESSIONS = {
"worried": "cowboy shot, hands up, index fingers together, worried, looking at viewer, parted lips, white background",
"thinking": "cowboy shot, hand on own chin, thinking, looking to the side, ?, white background",
"suspicious": "cowboy shot, crossed arms, looking at viewer, pursed lips, raised eyebrow, white background",
"surprised": "cowboy shot, hands up, palms, surprised, !, looking at viewer, white background",
"spacey": "cowboy shot, arms at sides, @_@, mouth drool, looking at viewer, parted lips, white background",
"sniggering": "cowboy shot, covering own mouth, smug, :t, closed mouth, puff of air, laughing, looking at viewer, white background",
"smug": "cowboy shot, smug, smirk, looking at viewer, leaning forward, hand on own chin, white background",
"smiling": "cowboy shot, smile, closed eyes, facing viewer, own hands together, white background",
"sleepy": "cowboy shot, hand over own mouth, arm at side, yawning, one eye closed, looking at viewer, white background",
"shocked": "cowboy shot, hands up, palms, shaded face, wide-eyed, looking at viewer, !, surprised, white background",
"serious": "cowboy shot, crossed arms, jitome, :|, looking at viewer, white background",
"scared": "cowboy shot, hands on own legs, clenched hands, shaded face, scared, wavy mouth, @_@, averting eyes, sweatdrop, white background",
"sad": "cowboy shot, own hands together, tearing up, pout, averting eyes, white background",
"relieved": "cowboy shot, hand on own chest, arm at side, closed eyes, parted lips, puff of air, white background",
"proud": "cowboy shot, hand on own chest, arm at side, closed eyes, smile, smug, head back, blush, white background",
"pouting": "cowboy shot, hand on own hip, arm at side, from behind, facing to the side, looking at viewer, pout, blush, white background",
"pleading": "cowboy shot, leaning forward, palms together, looking at viewer, looking up, tearing up, blush, white background",
"playful winking": "cowboy shot, leaning forward, own hands clasped, one eye closed, smile, blush, embarrassed, looking at viewer, head tilt, white background",
"overwhelmed": "cowboy shot, own hands clasped, @_@, full-face blush, open mouth, steam, looking at viewer, !, white background",
"neutral": "cowboy shot, arms at sides, light smile, looking at viewer, white background",
"nervous": "cowboy shot, arm at side, finger to mouth, open mouth, nervous, averting eyes, blush, flying sweatdrops, white background",
"nervous pouting": "cowboy shot, arms at sides, clenched hands, looking at viewer, pout, blush, white background",
"lustful": "cowboy shot, leaning to the side, arms behind back, head tilt, looking at viewer, smug, smile, blush, heart-shaped pupils",
"lovestruck": "cowboy shot, hand on own chest, arm at side, heartbeat, heart-shaped pupils, open mouth, heavy breathing, looking at viewer, white background",
"looking away shyly": "cowboy shot, own hands clasped, averting eyes, blush, facing viewer, white background",
"joyful": "cowboy shot, hands clasped in delight, looking at viewer, wide-eyed, sparkling eyes, grin, white background",
"jealous": "cowboy shot, arms at sides, jitome, :|, shaded face, looking at viewer, jealous, anger vein, white background",
"indifferent": "cowboy shot, crossed arms, open mouth, upper teeth only, jitome, averting eyes, white background",
"happy tears": "cowboy shot, finger to eye, arm at side, closed eyes, tears, facing viewer, smile, white background",
"happy smiling": "cowboy shot, arms at sides, closed eyes, grin, facing viewer, white background",
"guilty": "cowboy shot, finger to mouth, shaded face, averting eyes, embarrassed, jitome, sweatdrop, white background",
"giggling": "cowboy shot, covering own mouth, arm at side, laughing, closed eyes, puff of air, facing viewer, white background",
"full-face blush": "cowboy shot, leaning back, covering own mouth, full-face blush, @_@, looking at viewer, steam, white background",
"forced smiling": "cowboy shot, arms at sides, closed eyes, facing viewer, awkward, false smile, sweatdrop, white background",
"flustered": "cowboy shot, ><, arms at sides, clenched hands, embarrassed, blush stickers, facing viewer, white background",
"fidgeting shyly": "cowboy shot, leaning forward, fidgeting, index fingers together, blush, looking at viewer, white background",
"exhausted": "cowboy shot, arms at sides, bags under eyes, open mouth, giving up the ghost, looking up, facing viewer, white background",
"excited": "cowboy shot, fist pump, sparkling eyes, looking at viewer, grin, white background",
"evil smiling": "cowboy shot, hand on own arm, hand on own chin, shaded face, looking at viewer, evil smile, white background",
"embarrassed": "cowboy shot, ><, arms at sides, clenched hands, embarrassed, blush stickers, facing viewer, white background",
"disgusted": "cowboy shot, self hug, head back, shaded face, clenched teeth, disgust, looking at viewer, white background",
"disappointed": "cowboy shot, arms at sides, jitome, shaded face, :|, sweatdrop, looking at viewer, disappointed, white background",
"determined": "cowboy shot, arms at sides, narrowed eyes, looking at viewer, looking up, serious, white background",
"depressed": "cowboy shot, arms at sides, looking down, jitome, open mouth, upper teeth only, depressed, sad, white background",
"curious": "cowboy shot, leaning to the side, head tilt, finger to own chin, holding own arm, looking at viewer, curious, parted lips, white background",
"crying with eyes open": "cowboy shot, arms at sides, clenched hands, crying with eyes open, streaming tears, open mouth, looking at viewer, white background",
"crying with eyes closed": "cowboy shot, arms at sides, clenched hands, head back, ><, streaming tears, open mouth, looking at viewer, white background",
"crazy smiling": "cowboy shot, arms behind back, leaning to the side, head tilt, @_@, crazy smile, looking at viewer, white background",
"coughing": "cowboy shot, arm at side, covering own mouth, coughing, closed eyes, facing viewer, white background",
"contemptuous": "cowboy shot, crossed arms, shaded face, jitome, open mouth, upper teeth only, looking at viewer, looking down, white background",
"confused": "cowboy shot, crossed arms, looking at viewer, @_@, open mouth, upper teeth only, blush, confused, ?, white background",
"comforted": "cowboy shot, arms behind head, closed eyes, blush stickers, smile, open mouth, puff of air, white background",
"childlike whining": "cowboy shot, arms at sides, clenched hands, ><, open mouth, :o, tearing up, facing viewer, white background",
"bored": "cowboy shot, hand on own chin, blinking, yawning, facing viewer, white background",
"blushing shyly": "cowboy shot, leaning forward, arms behind back, blush, embarrassed, sweat, open mouth, looking at viewer, white background",
"aroused": "cowboy shot, fidgeting, blush, heart-shaped pupils, looking at viewer, sweat, open mouth, embarrassed, steam, white background",
"annoyed": "cowboy shot, facepalm, jitome, :|, looking at viewer, white background",
"angry": "cowboy shot, arms at sides, clenched hands, angry, anger vein, open mouth, shouting, looking at viewer, white background",
"admiring": "cowboy shot, palms together, looking at viewer, looking up, raised eyebrows, smile, open mouth, white background",
}
PAYLOAD = {
"prompt": "",
"negative_prompt": "worst quality, low quality, old, watermark, signature",
"seed": -1,
"subseed": -1,
"sampler_name": "Euler Ancestral CFG++",
"scheduler": "SGM Uniform",
"batch_size": 1,# do not change
"n_iter": 1,# do not change
"steps": 26,
"cfg_scale": 1.8,
"width": 896,
"height": 1152,
"restore_faces": False,
"tiling": False,
"do_not_save_samples": False,
"do_not_save_grid": True,
"eta": 0,
"denoising_strength": 0.4,
"s_min_uncond": 0,
"s_churn": 0,
"s_tmax": 0,
"s_tmin": 0,
"s_noise": 1,
"override_settings": {},
"override_settings_restore_afterwards": True,
"refiner_checkpoint": "",
"refiner_switch_at": 0,
"disable_extra_networks": False,
"comments": {},
"enable_hr": True,
"hr_scale": 2,
"hr_upscaler": "R-ESRGAN 4x+ Anime6B",
"hr_second_pass_steps": 12,
"hr_cfg": 1.8,
"send_images": True,# do not change
"save_images": False,
"alwayson_scripts": {},
}
def sanitize_filename(name):
"""Removes or replaces characters invalid for filenames."""
name = re.sub(r'[\\/*?:"<>|]', '', name)
return name
def generate_and_save_image(character, expression, current_payload):
print(f"Generating: {character} - {expression}")
prompt = f"hata4564, bollzzalguy, newest, masterpiece, best quality\nBREAK\nsolo, {CHARACTERS[character]}, {EXPRESSIONS[expression]}"
target_filename = f"{sanitize_filename(character)}.{sanitize_filename(expression)}.{FILE_EXTENSION}"
output_path = os.path.join(OUTPUT_DIR, target_filename)
print(f"Output: {output_path}")
current_payload["prompt"] = prompt
print(f"Payload: {json.dumps(current_payload)}")
if os.path.exists(output_path):
print(f"Skipping, file already exists: {output_path}")
return
try:
response = requests.post(url=TXT2IMG_URL, json=current_payload)
response.raise_for_status()
r = response.json()
if 'images' in r and len(r['images']) > 0:
img_data = base64.b64decode(r['images'][0])
with open(output_path, 'wb') as f:
f.write(img_data)
print(f" Successfully saved: {output_path}")
else:
print("Error: No images found in the response.")
print("Response:", r)
except requests.exceptions.RequestException as e:
print(f"Error during API request: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
if __name__ == "__main__":
os.makedirs(OUTPUT_DIR, exist_ok=True)
print(f"Output directory: {os.path.abspath(OUTPUT_DIR)}")
start_time = time.time()
for char in CHARACTERS.keys():
for expr in EXPRESSIONS.keys():
generate_and_save_image(char, expr, PAYLOAD.copy())
print("---")
end_time = time.time()
print(f"\nGeneration finished in {end_time - start_time:.2f} seconds.")
|