Whyx-PROmpTea / src /presets.py
ArtShumov's picture
feat(prod): rewrite pipeline + NoobAI + ensemble tagger (3xWD14+DeepDanbooru-ready) + 1000 artists + negative templates + history ext + scoring config
e6404d0
Raw
History Blame
23.3 kB
PRESETS = {
"cinematic": {
"categories": ["lighting", "composition", "effects", "style"],
"label_en": "Cinematic",
"label_ru": "Кино",
"icon": "🎬",
"description_en": "Dramatic lighting, deep composition, film effects",
"description_ru": "Драматическое освещение, глубокая композиция, киноэффекты",
"bundle_tags": ["cinematic lighting", "depth of field", "film grain", "bokeh"],
},
"dreamy": {
"categories": ["atmosphere", "lighting", "colors", "effects"],
"label_en": "Dreamy",
"label_ru": "Мечта",
"icon": "🌸",
"description_en": "Soft atmosphere, pastel colors, dreamy haze",
"description_ru": "Мягкая атмосфера, пастельные цвета, мечтательная дымка",
"bundle_tags": ["dreamy", "soft focus", "pastel colors", "haze"],
},
"vibrant": {
"categories": ["colors", "lighting", "special_fx", "style"],
"label_en": "Vibrant",
"label_ru": "Яркий",
"icon": "✨",
"description_en": "Bold colors, dynamic lighting, magical effects",
"description_ru": "Яркие цвета, динамичное освещение, магические эффекты",
"bundle_tags": ["vibrant colors", "flat color", "thick outlines", "bold"],
},
"natural": {
"categories": ["quality", "background", "pose", "expression"],
"label_en": "Natural",
"label_ru": "Натуральный",
"icon": "🌿",
"description_en": "High quality, natural poses, genuine expressions",
"description_ru": "Высокое качество, естественные позы, живые выражения",
"bundle_tags": ["natural lighting", "realistic", "natural pose"],
},
"dramatic": {
"categories": ["lighting", "effects", "composition", "atmosphere"],
"label_en": "Dramatic",
"label_ru": "Драма",
"icon": "⚡",
"description_en": "High contrast, moody atmosphere, intense effects",
"description_ru": "Высокий контраст, мрачная атмосфера, интенсивные эффекты",
"bundle_tags": ["dramatic lighting", "high contrast", "intense"],
},
"kawaii": {
"categories": ["expression", "clothing", "colors", "special_fx"],
"label_en": "Kawaii",
"label_ru": "Кавай",
"icon": "💖",
"description_en": "Cute expressions, pastel outfits, sparkly effects",
"description_ru": "Милые выражения, пастельные наряды, блестящие эффекты",
"bundle_tags": ["kawaii", "cute", "pastel", "sparkle"],
},
"gothic": {
"categories": ["atmosphere", "lighting", "style", "background"],
"label_en": "Gothic",
"label_ru": "Готика",
"icon": "🦇",
"description_en": "Dark atmosphere, dramatic shadows, gothic architecture",
"description_ru": "Тёмная атмосфера, драматичные тени, готическая архитектура",
"bundle_tags": ["gothic", "dark", "gloom", "cross"],
},
"cyberpunk": {
"categories": ["style", "effects", "lighting", "colors"],
"label_en": "Cyberpunk",
"label_ru": "Киберпанк",
"icon": "🌃",
"description_en": "Neon lights, futuristic city, cyber aesthetics",
"description_ru": "Неоновые огни, футуристический город, кибер эстетика",
"bundle_tags": ["cyberpunk", "neon", "futuristic", "hologram"],
},
"watercolor": {
"categories": ["style", "colors", "atmosphere", "effects"],
"label_en": "Watercolor",
"label_ru": "Акварель",
"icon": "🎨",
"description_en": "Soft watercolor style, flowing colors, artistic feel",
"description_ru": "Мягкий акварельный стиль, плавные цвета, художественное ощущение",
"bundle_tags": ["watercolor", "painting", "soft colors", "artistic"],
},
"portrait": {
"categories": ["quality", "expression", "lighting", "framing"],
"label_en": "Portrait",
"label_ru": "Портрет",
"icon": "🧑",
"description_en": "Detailed face, perfect anatomy, studio lighting",
"description_ru": "Детализированное лицо, идеальная анатомия, студийное освещение",
"bundle_tags": ["portrait", "detailed face", "perfect anatomy", "studio lighting"],
},
"landscape": {
"categories": ["background", "atmosphere", "lighting", "colors"],
"label_en": "Landscape",
"label_ru": "Пейзаж",
"icon": "🏔️",
"description_en": "Beautiful scenery, atmospheric lighting, nature",
"description_ru": "Красивый пейзаж, атмосферное освещение, природа",
"bundle_tags": ["scenery", "wide shot", "landscape", "detailed background"],
},
"mecha": {
"categories": ["style", "effects", "composition", "special_fx"],
"label_en": "Mecha",
"label_ru": "Меха",
"icon": "🤖",
"description_en": "Detailed mecha, dynamic poses, futuristic tech",
"description_ru": "Детализированные меха, динамичные позы, футуристические технологии",
"bundle_tags": ["mecha", "robot", "armor", "futuristic"],
},
"fantasy": {
"categories": ["atmosphere", "special_fx", "clothing", "background", "accessory"],
"label_en": "Fantasy",
"label_ru": "Фэнтези",
"icon": "🧙",
"description_en": "Magical atmosphere, fantasy creatures, enchanted world",
"description_ru": "Магическая атмосфера, фэнтези существа, зачарованный мир",
"bundle_tags": ["magic", "crystal", "glowing"],
},
"noir": {
"categories": ["lighting", "style", "atmosphere", "composition"],
"label_en": "Noir",
"label_ru": "Нуар",
"icon": "🕵️",
"description_en": "Black and white, high contrast, film noir style",
"description_ru": "Чёрно-белое, высокий контраст, стиль нуар",
"bundle_tags": ["noir", "monochrome", "high contrast", "shadow"],
},
"sakura": {
"categories": ["atmosphere", "colors", "background", "expression"],
"label_en": "Sakura",
"label_ru": "Сакура",
"icon": "🌺",
"description_en": "Cherry blossoms, soft pink tones, spring atmosphere",
"description_ru": "Сакура, мягкие розовые тона, весенняя атмосфера",
"bundle_tags": ["sakura", "cherry blossoms", "pink flowers", "petals"],
},
"underwater": {
"categories": ["background", "effects", "atmosphere", "colors"],
"label_en": "Underwater",
"label_ru": "Подводный",
"icon": "🐠",
"description_en": "Underwater scene, light rays, marine atmosphere",
"description_ru": "Подводная сцена, лучи света, морская атмосфера",
"bundle_tags": ["underwater", "bubbles", "light rays", "blue tones"],
},
"space": {
"categories": ["background", "effects", "atmosphere", "special_fx"],
"label_en": "Space",
"label_ru": "Космос",
"icon": "🚀",
"description_en": "Starfield, nebula, cosmic atmosphere",
"description_ru": "Звёздное небо, туманность, космическая атмосфера",
"bundle_tags": ["space", "stars", "nebula", "cosmic"],
},
"detailed_art": {
"categories": ["quality", "style", "effects", "composition"],
"label_en": "Detailed Art",
"label_ru": "Детализированное",
"icon": "🔍",
"description_en": "Maximum detail, intricate patterns, masterful rendering",
"description_ru": "Максимальная детализация, сложные узоры, мастерская отрисовка",
"bundle_tags": ["highres", "absurdres", "incredibly absurdres", "detailed"],
},
"moe_blobs": {
"categories": ["expression", "clothing", "colors", "atmosphere"],
"label_en": "Moe Blobs",
"label_ru": "Моэ",
"icon": "💕",
"description_en": "Extra cute, soft colors, adorable expressions",
"description_ru": "Очаровательно, мягкие цвета, милые выражения",
"bundle_tags": ["moe", "chibi", "big eyes", "soft"],
},
"warrior": {
"categories": ["pose", "lighting", "composition", "clothing", "weapon"],
"label_en": "Warrior",
"label_ru": "Воин",
"icon": "⚔️",
"description_en": "Dynamic action pose, dramatic lighting, battle-ready",
"description_ru": "Динамичная боевая поза, драматичное освещение, готовность к бою",
"bundle_tags": ["armor", "sword", "cape"],
},
"retro": {
"categories": ["style", "effects", "colors", "atmosphere"],
"label_en": "Retro",
"label_ru": "Ретро",
"icon": "📻",
"description_en": "Vintage retro style with film grain and warm nostalgic colors",
"description_ru": "Винтажный ретро-стиль с фильм-грейном и тёплыми ностальгическими цветами",
"bundle_tags": ["retro", "film grain", "vintage", "warm colors"],
},
"steampunk": {
"categories": ["style", "lighting", "background", "special_fx", "accessory"],
"label_en": "Steampunk",
"label_ru": "Стимпанк",
"icon": "⚙️",
"description_en": "Brass gears, steam tech and Victorian sci-fi atmosphere",
"description_ru": "Латунные шестерёнки, паровые технологии и викторианская sci-fi атмосфера",
"bundle_tags": ["goggles", "clockwork", "brass"],
},
"magical_girl": {
"categories": ["special_fx", "clothing", "expression", "colors", "accessory"],
"label_en": "Magical Girl",
"label_ru": "Девочка-волшебница",
"icon": "💫",
"description_en": "Sparkles, magical outfits, transformation effects and cute expressions",
"description_ru": "Блёстки, волшебные наряды, эффекты трансформации и милые выражения",
"bundle_tags": ["sparkle", "magic", "ribbon"],
},
"horror": {
"categories": ["atmosphere", "lighting", "effects", "expression"],
"label_en": "Horror",
"label_ru": "Хоррор",
"icon": "👻",
"description_en": "Dark scary atmosphere, harsh lighting and frightening expressions",
"description_ru": "Тёмная страшная атмосфера, жёсткое освещение и пугающие выражения",
"bundle_tags": ["horror", "dark", "scary", "harsh lighting"],
},
"winter": {
"categories": ["background", "atmosphere", "colors", "clothing"],
"label_en": "Winter",
"label_ru": "Зима",
"icon": "❄️",
"description_en": "Snowy landscapes, cold colors and warm winter clothing",
"description_ru": "Снежные пейзажи, холодные цвета и тёплая зимняя одежда",
"bundle_tags": ["snow", "winter", "cold colors", "winter clothes"],
},
"summer": {
"categories": ["background", "atmosphere", "pose", "colors"],
"label_en": "Summer",
"label_ru": "Лето",
"icon": "☀️",
"description_en": "Bright sunny scenes, beach or meadow backgrounds and vibrant colors",
"description_ru": "Яркие солнечные сцены, пляж или луг на фоне и насыщенные цвета",
"bundle_tags": ["sunlight", "summer", "bright", "beach"],
},
"angelic": {
"categories": ["angelic", "lighting", "atmosphere", "quality"],
"label_en": "Angelic",
"label_ru": "Ангельский",
"icon": "👼",
"description_en": "Holy ethereal glow, soft divine lighting and pure atmosphere",
"description_ru": "Священное эфирное сияние, мягкое божественное освещение и чистая атмосфера",
"bundle_tags": ["angelic", "holy", "glow", "divine light"],
},
"slice_of_life": {
"categories": ["background", "pose", "expression", "atmosphere"],
"label_en": "Slice of Life",
"label_ru": "Повседневность",
"icon": "☕",
"description_en": "Casual everyday scenes with natural poses and warm mood",
"description_ru": "Повседневные сцены с естественными позами и тёплым настроением",
"bundle_tags": ["casual", "everyday", "warm mood", "natural pose"],
},
"action": {
"categories": ["pose", "composition", "special_fx", "effects"],
"label_en": "Action",
"label_ru": "Экшн",
"icon": "💥",
"description_en": "Dynamic movement, speed lines, impact sparks and energetic poses",
"description_ru": "Динамичное движение, линии скорости, искры удара и энергичные позы",
"bundle_tags": ["action", "dynamic pose", "speed lines", "impact"],
},
"romantic": {
"categories": ["atmosphere", "lighting", "expression", "colors"],
"label_en": "Romantic",
"label_ru": "Романтика",
"icon": "💘",
"description_en": "Soft romantic lighting, tender expressions and warm colors",
"description_ru": "Мягкое романтическое освещение, нежные выражения и тёплые цвета",
"bundle_tags": ["romantic", "soft lighting", "warm colors", "tender"],
},
"demon": {
"categories": ["demon", "atmosphere", "lighting", "expression"],
"label_en": "Demon",
"label_ru": "Демон",
"icon": "👿",
"description_en": "Dark infernal aura, fiery effects and menacing expressions",
"description_ru": "Тёмная преисподняя аура, огненные эффекты и угрожающие выражения",
"bundle_tags": ["demon", "dark aura", "fire", "menacing"],
},
"fantasy_creature": {
"categories": ["animal", "atmosphere", "background", "special_fx"],
"label_en": "Fantasy Creature",
"label_ru": "Фэнтези-создание",
"icon": "🐉",
"description_en": "Mythical beasts, magical habitats and creature effects",
"description_ru": "Мифические звери, волшебные места обитания и эффекты существ",
"bundle_tags": ["mythical creature", "magical", "fantasy", "creature"],
},
"pirate": {
"categories": ["clothing", "weapon", "background", "atmosphere", "vehicle", "effects"],
"label_en": "Pirate / Nautical",
"label_ru": "Пират / Море",
"icon": "🏴‍☠️",
"description_en": "Swashbuckling adventure, naval gear, ocean backgrounds",
"description_ru": "Приключения, морская амуниция, океанские фоны",
"bundle_tags": ["bandana", "sword", "ship"],
},
"sci_fi": {
"categories": ["vehicle", "weapon", "clothing", "effects", "style", "lighting"],
"label_en": "Sci-Fi Commander",
"label_ru": "Научная фантастика",
"icon": "🚀",
"description_en": "Futuristic gear, energy weapons, neon and hologram effects",
"description_ru": "Футуристическая экипировка, энергетическое оружие, неон и голограммы",
"bundle_tags": ["neon", "hologram", "suit"],
},
"medieval": {
"categories": ["architecture", "weapon", "clothing", "atmosphere", "style", "lighting"],
"label_en": "Medieval / Renaissance",
"label_ru": "Средневековье",
"icon": "🏰",
"description_en": "Castles, knights, royal attire and torchlit atmosphere",
"description_ru": "Замки, рыцари, королевские одежды и атмосфера факелов",
"bundle_tags": ["armor", "sword", "cape"],
},
"mecha_pilot": {
"categories": ["vehicle", "weapon", "pose", "composition", "effects", "style"],
"label_en": "Mecha Pilot",
"label_ru": "Пилот меха",
"icon": "🤖",
"description_en": "Cockpit view, pilot suits, giant robot controls",
"description_ru": "Вид из кабины, костюмы пилота, управление гигантскими роботами",
"bundle_tags": ["goggles", "suit", "mecha"],
},
"maid_cafe": {
"categories": ["food", "clothing", "expression", "atmosphere", "colors", "accessory"],
"label_en": "Maid Cafe",
"label_ru": "Мейд-кафе",
"icon": "☕",
"description_en": "Maid outfits, cafe setting, sweet treats and warm colors",
"description_ru": "Формы горничных, кафе, десерты и тёплые цвета",
"bundle_tags": ["maid headdress", "apron", "coffee"],
},
"holiday": {
"categories": ["season", "clothing", "atmosphere", "object", "special_fx", "colors"],
"label_en": "Holiday / Christmas",
"label_ru": "Праздник",
"icon": "🎄",
"description_en": "Festive decorations, holiday outfits, seasonal atmosphere",
"description_ru": "Праздничные украшения, наряды, сезонная атмосфера",
"bundle_tags": ["santa hat", "christmas", "snow"],
},
"furry_anthro": {
"categories": ["furry", "animal", "clothing", "expression", "atmosphere", "accessory"],
"label_en": "Furry / Anthro",
"label_ru": "Фурри",
"icon": "🐺",
"description_en": "Anthro characters, animal ears, fluffy tails, feral expressions",
"description_ru": "Антропоморфные персонажи, уши, хвосты, звериные выражения",
"bundle_tags": ["furry", "tail", "animal ears"],
},
"school": {
"categories": ["clothing", "expression", "pose", "background", "atmosphere", "accessory"],
"label_en": "School / Uniform",
"label_ru": "Школа",
"icon": "📚",
"description_en": "School uniforms, classroom settings, youthful expressions",
"description_ru": "Школьная форма, классы, юные выражения",
"bundle_tags": ["school uniform", "book", "ribbon"],
},
}
def get_preset_categories(preset_name: str) -> list[str]:
preset = get_all_presets().get(preset_name)
if isinstance(preset, dict):
return list(preset.get("categories", []))
return []
def get_preset_bundle_tags(preset_name: str) -> list[str]:
preset = get_all_presets().get(preset_name)
if isinstance(preset, list):
return list(preset)
if isinstance(preset, dict) and "bundle_tags" in preset:
return list(preset["bundle_tags"])
return []
def get_preset_names() -> list[str]:
return list(get_all_presets().keys())
PRESET_GROUPS = [
{"key": "style", "icon": "🎨", "label_en": "Style & Art", "label_ru": "Стиль и искусство", "presets": ["cinematic", "dreamy", "vibrant", "natural", "dramatic", "watercolor", "detailed_art", "retro"]},
{"key": "dark", "icon": "🌙", "label_en": "Dark & Moody", "label_ru": "Тёмное настроение", "presets": ["gothic", "noir", "horror", "demon"]},
{"key": "future", "icon": "🚀", "label_en": "Futuristic", "label_ru": "Футуристическое", "presets": ["cyberpunk", "mecha", "sci_fi", "mecha_pilot"]},
{"key": "fantasy", "icon": "🧙", "label_en": "Fantasy & Magic", "label_ru": "Фэнтези и магия", "presets": ["fantasy", "magical_girl", "angelic", "fantasy_creature"]},
{"key": "nature", "icon": "🏞️", "label_en": "Nature & Season", "label_ru": "Природа и сезон", "presets": ["landscape", "winter", "summer", "sakura", "underwater", "space"]},
{"key": "char", "icon": "😊", "label_en": "Character", "label_ru": "Персонаж", "presets": ["kawaii", "portrait", "moe_blobs", "slice_of_life", "romantic"]},
{"key": "action", "icon": "⚔️", "label_en": "Action & Adventure", "label_ru": "Экшн и приключения", "presets": ["warrior", "action", "pirate", "medieval"]},
{"key": "theme", "icon": "🎭", "label_en": "Theme & Culture", "label_ru": "Тема и культура", "presets": ["steampunk", "maid_cafe", "holiday", "furry_anthro", "school"]},
]
import os as _os
import json as _json
_USER_PRESETS_PATH = _os.path.join(_os.path.dirname(_os.path.dirname(_os.path.abspath(__file__))), "data", "user_presets.json")
def load_user_presets() -> dict:
"""Load user-saved named tag bundles (E). Returns {name: [tags]}."""
try:
with open(_USER_PRESETS_PATH, "r", encoding="utf-8") as fh:
data = _json.load(fh)
if isinstance(data, dict):
return {str(k): list(v) for k, v in data.items()}
except (FileNotFoundError, _json.JSONDecodeError, OSError):
pass
return {}
def save_user_presets(data: dict) -> None:
try:
_os.makedirs(_os.path.dirname(_USER_PRESETS_PATH), exist_ok=True)
with open(_USER_PRESETS_PATH, "w", encoding="utf-8") as fh:
_json.dump(data, fh, ensure_ascii=False, indent=2)
except OSError:
pass
def save_user_preset(name: str, tags: list[str]) -> dict:
name = (name or "").strip()
tags = [t.strip() for t in (tags or []) if t and t.strip()]
data = load_user_presets()
if name:
data[name] = tags
save_user_presets(data)
return data
def delete_user_preset(name: str) -> dict:
data = load_user_presets()
data.pop(name, None)
save_user_presets(data)
return data
def get_all_presets() -> dict:
"""Base PRESETS merged with user-saved presets."""
merged = dict(PRESETS)
merged.update(load_user_presets())
return merged
def get_user_preset_names() -> list[str]:
return list(load_user_presets().keys())