Files
art/modules/data/prompt_categories.py
T
2025-03-15 09:36:28 +07:00

86 lines
4.2 KiB
Python

from enum import Enum, auto
from typing import List, Dict
class PromptCategory(Enum):
"""Категории промптов"""
STYLE = auto()
LIGHTING = auto()
COMPOSITION = auto()
CAMERA = auto()
COLORS = auto()
MOOD = auto()
QUALITY = auto()
class PromptData:
"""Класс для хранения данных о промпте"""
def __init__(self, text: str, description: str = "", weight: float = 1.0):
self.text = text
self.description = description
self.weight = weight
class PromptCategories:
"""Класс для работы с категориями промптов"""
@staticmethod
def get_prompts() -> Dict[PromptCategory, List[PromptData]]:
"""Возвращает словарь с промптами по категориям"""
return {
PromptCategory.STYLE: [
PromptData("digital art", "Цифровое искусство"),
PromptData("oil painting", "Масляная живопись"),
PromptData("watercolor", "Акварель"),
PromptData("pencil sketch", "Карандашный набросок"),
PromptData("anime style", "Аниме стиль"),
PromptData("photorealistic", "Фотореалистичный"),
],
PromptCategory.LIGHTING: [
PromptData("soft lighting", "Мягкое освещение"),
PromptData("dramatic lighting", "Драматическое освещение"),
PromptData("cinematic lighting", "Кинематографическое освещение"),
PromptData("natural light", "Естественное освещение"),
PromptData("studio lighting", "Студийное освещение"),
],
PromptCategory.COMPOSITION: [
PromptData("rule of thirds", "Правило третей"),
PromptData("symmetrical", "Симметричная композиция"),
PromptData("centered composition", "Центральная композиция"),
PromptData("dynamic pose", "Динамичная поза"),
],
PromptCategory.CAMERA: [
PromptData("close-up shot", "Крупный план"),
PromptData("wide angle", "Широкий угол"),
PromptData("bokeh", "Боке"),
PromptData("depth of field", "Глубина резкости"),
],
PromptCategory.COLORS: [
PromptData("vibrant colors", "Яркие цвета"),
PromptData("pastel colors", "Пастельные цвета"),
PromptData("monochrome", "Монохром"),
PromptData("high contrast", "Высокий контраст"),
],
PromptCategory.MOOD: [
PromptData("peaceful", "Умиротворенное"),
PromptData("mysterious", "Таинственное"),
PromptData("energetic", "Энергичное"),
PromptData("melancholic", "Меланхоличное"),
],
PromptCategory.QUALITY: [
PromptData("highly detailed", "Высокая детализация"),
PromptData("8k uhd", "Высокое разрешение"),
PromptData("masterpiece", "Шедевр"),
PromptData("best quality", "Лучшее качество"),
],
}
@staticmethod
def get_category_name(category: PromptCategory) -> str:
"""Возвращает название категории на русском"""
return {
PromptCategory.STYLE: "Стили",
PromptCategory.LIGHTING: "Освещение",
PromptCategory.COMPOSITION: "Композиция",
PromptCategory.CAMERA: "Камера",
PromptCategory.COLORS: "Цвета",
PromptCategory.MOOD: "Настроение",
PromptCategory.QUALITY: "Качество",
}[category]