Воркед

This commit is contained in:
kromskii2 committed 2025-03-15 09:36:28 +07:00
1 parent ac32c55ab9
commit ee94d8e529
1138 files changed
+55771 -77901

No files matched your search

@@ -0,0 +1,71 @@
from enum import Enum, auto
from typing import List, Dict
class NegativePromptCategory(Enum):
"""Категории негативных промптов"""
QUALITY = auto()
ARTIFACTS = auto()
COMPOSITION = auto()
ANATOMY = auto()
STYLE = auto()
class NegativePromptData:
"""Класс для хранения данных о негативном промпте"""
def __init__(self, text: str, description: str = "", weight: float = 1.0):
self.text = text
self.description = description
self.weight = weight
class NegativePromptCategories:
"""Класс для работы с категориями негативных промптов"""
@staticmethod
def get_prompts() -> Dict[NegativePromptCategory, List[NegativePromptData]]:
"""Возвращает словарь с негативными промптами по категориям"""
return {
NegativePromptCategory.QUALITY: [
NegativePromptData("low quality", "Низкое качество"),
NegativePromptData("blurry", "Размытое изображение"),
NegativePromptData("pixelated", "Пикселизация"),
NegativePromptData("jpeg artifacts", "JPEG артефакты"),
NegativePromptData("compression artifacts", "Артефакты сжатия"),
],
NegativePromptCategory.ARTIFACTS: [
NegativePromptData("watermark", "Водяные знаки"),
NegativePromptData("signature", "Подписи"),
NegativePromptData("text", "Текст на изображении"),
NegativePromptData("frame", "Рамки"),
NegativePromptData("duplicate", "Дубликаты элементов"),
],
NegativePromptCategory.COMPOSITION: [
NegativePromptData("bad composition", "Плохая композиция"),
NegativePromptData("unbalanced", "Несбалансированная композиция"),
NegativePromptData("cropped", "Обрезанное изображение"),
NegativePromptData("out of frame", "Выход за пределы кадра"),
],
NegativePromptCategory.ANATOMY: [
NegativePromptData("bad anatomy", "Неправильная анатомия"),
NegativePromptData("extra limbs", "Лишние конечности"),
NegativePromptData("missing limbs", "Отсутствующие конечности"),
NegativePromptData("deformed", "Деформации"),
NegativePromptData("mutated", "Мутации"),
],
NegativePromptCategory.STYLE: [
NegativePromptData("3d render", "3D рендер"),
NegativePromptData("cartoon", "Мультяшный стиль"),
NegativePromptData("painting", "Живопись"),
NegativePromptData("sketch", "Набросок"),
NegativePromptData("anime", "Аниме"),
],
}
@staticmethod
def get_category_name(category: NegativePromptCategory) -> str:
"""Возвращает название категории на русском"""
return {
NegativePromptCategory.QUALITY: "Качество",
NegativePromptCategory.ARTIFACTS: "Артефакты",
NegativePromptCategory.COMPOSITION: "Композиция",
NegativePromptCategory.ANATOMY: "Анатомия",
NegativePromptCategory.STYLE: "Стиль",
}[category]
+86
View File
@@ -0,0 +1,86 @@
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]
+86
View File
@@ -0,0 +1,86 @@
from typing import Dict
class PromptTranslations:
"""Класс для работы с переводами промптов"""
@staticmethod
def get_translations() -> Dict[str, str]:
"""Возвращает словарь с переводами промптов"""
return {
# Стили
"digital art": "цифровое искусство",
"oil painting": "масляная живопись",
"watercolor": "акварель",
"pencil sketch": "карандашный набросок",
"anime style": "аниме стиль",
"photorealistic": "фотореалистичный",
# Освещение
"soft lighting": "мягкое освещение",
"dramatic lighting": "драматическое освещение",
"cinematic lighting": "кинематографическое освещение",
"natural light": "естественное освещение",
"studio lighting": "студийное освещение",
# Композиция
"rule of thirds": "правило третей",
"symmetrical": "симметричный",
"centered composition": "центральная композиция",
"dynamic pose": "динамичная поза",
# Камера
"close-up shot": "крупный план",
"wide angle": "широкий угол",
"bokeh": "боке",
"depth of field": "глубина резкости",
# Цвета
"vibrant colors": "яркие цвета",
"pastel colors": "пастельные цвета",
"monochrome": "монохром",
"high contrast": "высокий контраст",
# Настроение
"peaceful": "умиротворенный",
"mysterious": "таинственный",
"energetic": "энергичный",
"melancholic": "меланхоличный",
# Качество
"highly detailed": "высокая детализация",
"8k uhd": "8k uhd",
"masterpiece": "шедевр",
"best quality": "лучшее качество",
# Негативные промпты
"low quality": "низкое качество",
"blurry": "размытый",
"pixelated": "пикселизированный",
"jpeg artifacts": "jpeg артефакты",
"compression artifacts": "артефакты сжатия",
"watermark": "водяной знак",
"signature": "подпись",
"text": "текст",
"frame": "рамка",
"duplicate": "дубликат",
"bad composition": "плохая композиция",
"unbalanced": "несбалансированный",
"cropped": "обрезанный",
"out of frame": "за пределами кадра",
"bad anatomy": "плохая анатомия",
"extra limbs": "лишние конечности",
"missing limbs": "отсутствующие конечности",
"deformed": "деформированный",
"mutated": "мутированный",
"3d render": "3d рендер",
"cartoon": "мультяшный",
"painting": "живопись",
"sketch": "набросок",
"anime": "аниме",
}
@staticmethod
def translate(text: str) -> str:
"""Переводит промпт на русский язык"""
translations = PromptTranslations.get_translations()
return translations.get(text.lower(), text)