Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
|
| 2 |
import os
|
| 3 |
import io
|
| 4 |
import base64
|
|
@@ -738,15 +737,15 @@ SYNKRIS_LOOK_TEMPLATE = '''
|
|
| 738 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
| 739 |
<style>
|
| 740 |
:root {
|
| 741 |
-
--bg: #
|
| 742 |
-
--card-bg: #
|
| 743 |
--primary: #c8ff00;
|
| 744 |
--primary-hover: #b8e600;
|
| 745 |
--primary-gradient: linear-gradient(45deg, #d4ff33, #aaff00);
|
| 746 |
--text: #f0f0f0;
|
| 747 |
--text-secondary: #a0a0a0;
|
| 748 |
-
--border: #
|
| 749 |
-
--input-bg: #
|
| 750 |
--danger: #ff4d4d;
|
| 751 |
}
|
| 752 |
|
|
@@ -776,7 +775,7 @@ body {
|
|
| 776 |
padding: 30px 35px;
|
| 777 |
border-radius: 24px;
|
| 778 |
border: 1px solid var(--border);
|
| 779 |
-
box-shadow: 0
|
| 780 |
animation: fadeIn 0.6s cubic-bezier(0.25, 1, 0.5, 1);
|
| 781 |
}
|
| 782 |
|
|
@@ -799,7 +798,7 @@ h1 span {
|
|
| 799 |
background: var(--primary-gradient);
|
| 800 |
-webkit-background-clip: text;
|
| 801 |
-webkit-text-fill-color: transparent;
|
| 802 |
-
text-shadow: 0 0 30px rgba(200, 255, 0, 0.
|
| 803 |
}
|
| 804 |
|
| 805 |
p.subtitle {
|
|
@@ -836,7 +835,7 @@ p.subtitle {
|
|
| 836 |
background: var(--primary);
|
| 837 |
color: #000;
|
| 838 |
border-color: var(--primary);
|
| 839 |
-
box-shadow: 0 0 10px rgba(200, 255, 0, 0.
|
| 840 |
}
|
| 841 |
|
| 842 |
.mode-selector {
|
|
@@ -866,7 +865,7 @@ p.subtitle {
|
|
| 866 |
.mode-btn.active {
|
| 867 |
background: var(--primary);
|
| 868 |
color: #000;
|
| 869 |
-
box-shadow: 0
|
| 870 |
transform: translateY(-1px);
|
| 871 |
}
|
| 872 |
|
|
@@ -922,7 +921,7 @@ label {
|
|
| 922 |
select, textarea {
|
| 923 |
padding: 15px;
|
| 924 |
border: 1px solid var(--border);
|
| 925 |
-
border-radius:
|
| 926 |
font-size: 0.95rem;
|
| 927 |
font-weight: 500;
|
| 928 |
background-color: var(--input-bg);
|
|
@@ -949,7 +948,7 @@ select:disabled {
|
|
| 949 |
|
| 950 |
select:focus, textarea:focus {
|
| 951 |
border-color: var(--primary);
|
| 952 |
-
box-shadow: 0 0
|
| 953 |
}
|
| 954 |
|
| 955 |
textarea {
|
|
@@ -1013,7 +1012,7 @@ textarea {
|
|
| 1013 |
}
|
| 1014 |
|
| 1015 |
.style-btn:hover { border-color: var(--primary); color: var(--text); transform: translateY(-2px); }
|
| 1016 |
-
.style-btn.active { background-color: var(--primary); color: #000; border-color: var(--primary); font-weight: 700; transform: translateY(-2px); box-shadow: 0
|
| 1017 |
|
| 1018 |
.aspect-ratio-grid {
|
| 1019 |
display: grid;
|
|
@@ -1040,7 +1039,7 @@ textarea {
|
|
| 1040 |
}
|
| 1041 |
.aspect-ratio-btn .preview { background: #444; border-radius: 4px; transition: background-color 0.3s ease; }
|
| 1042 |
.aspect-ratio-btn:hover { border-color: var(--primary); color: var(--text); transform: translateY(-2px); }
|
| 1043 |
-
.aspect-ratio-btn.active { background-color: var(--primary); color: #000; border-color: var(--primary); transform: translateY(-2px); box-shadow: 0
|
| 1044 |
.aspect-ratio-btn.active .preview { background: #000; }
|
| 1045 |
|
| 1046 |
.checkbox-group {
|
|
@@ -1125,6 +1124,7 @@ textarea {
|
|
| 1125 |
margin-left: 8px;
|
| 1126 |
vertical-align: middle;
|
| 1127 |
display: inline-block;
|
|
|
|
| 1128 |
}
|
| 1129 |
|
| 1130 |
.style-btn .badge-new {
|
|
@@ -1135,6 +1135,8 @@ textarea {
|
|
| 1135 |
font-size: 0.65em;
|
| 1136 |
}
|
| 1137 |
|
|
|
|
|
|
|
| 1138 |
.button-link {
|
| 1139 |
background: none;
|
| 1140 |
border: 1px solid var(--border);
|
|
@@ -1190,50 +1192,6 @@ textarea {
|
|
| 1190 |
opacity: 1;
|
| 1191 |
}
|
| 1192 |
|
| 1193 |
-
#iframeOverlay {
|
| 1194 |
-
display: none;
|
| 1195 |
-
position: fixed;
|
| 1196 |
-
top: 0;
|
| 1197 |
-
left: 0;
|
| 1198 |
-
width: 100%;
|
| 1199 |
-
height: 100%;
|
| 1200 |
-
background-color: var(--bg);
|
| 1201 |
-
z-index: 9999;
|
| 1202 |
-
flex-direction: column;
|
| 1203 |
-
}
|
| 1204 |
-
.iframe-header {
|
| 1205 |
-
display: flex;
|
| 1206 |
-
justify-content: space-between;
|
| 1207 |
-
align-items: center;
|
| 1208 |
-
padding: 15px 20px;
|
| 1209 |
-
background-color: var(--card-bg);
|
| 1210 |
-
border-bottom: 1px solid var(--border);
|
| 1211 |
-
}
|
| 1212 |
-
.iframe-header h3 {
|
| 1213 |
-
margin: 0;
|
| 1214 |
-
color: var(--text);
|
| 1215 |
-
font-size: 1.2rem;
|
| 1216 |
-
}
|
| 1217 |
-
.iframe-header button {
|
| 1218 |
-
background: var(--danger);
|
| 1219 |
-
color: #fff;
|
| 1220 |
-
border: none;
|
| 1221 |
-
padding: 8px 16px;
|
| 1222 |
-
border-radius: 8px;
|
| 1223 |
-
cursor: pointer;
|
| 1224 |
-
font-weight: bold;
|
| 1225 |
-
transition: opacity 0.2s;
|
| 1226 |
-
}
|
| 1227 |
-
.iframe-header button:hover {
|
| 1228 |
-
opacity: 0.8;
|
| 1229 |
-
}
|
| 1230 |
-
#synkrisIframe {
|
| 1231 |
-
flex-grow: 1;
|
| 1232 |
-
width: 100%;
|
| 1233 |
-
border: none;
|
| 1234 |
-
background: #fff;
|
| 1235 |
-
}
|
| 1236 |
-
|
| 1237 |
@media (max-width: 700px) {
|
| 1238 |
body { padding: 10px; }
|
| 1239 |
.container { padding: 20px 15px; }
|
|
@@ -1256,7 +1214,6 @@ textarea {
|
|
| 1256 |
<button id="lang-ru" onclick="setLanguage('ru')">RU</button>
|
| 1257 |
<button id="lang-kz" onclick="setLanguage('kz')">KZ</button>
|
| 1258 |
<button id="lang-kg" onclick="setLanguage('kg')">KG</button>
|
| 1259 |
-
<button id="lang-tr" onclick="setLanguage('tr')">TR</button>
|
| 1260 |
</div>
|
| 1261 |
</div>
|
| 1262 |
<h1><span>Synkris</span></h1>
|
|
@@ -1284,6 +1241,14 @@ textarea {
|
|
| 1284 |
<input type="checkbox" id="celebrityCheck">
|
| 1285 |
<label for="celebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1286 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1287 |
</div>
|
| 1288 |
</div>
|
| 1289 |
|
|
@@ -1524,6 +1489,14 @@ textarea {
|
|
| 1524 |
<input type="checkbox" id="childCelebrityCheck">
|
| 1525 |
<label for="childCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1526 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1527 |
</div>
|
| 1528 |
</div>
|
| 1529 |
<div id="childCelebrityParamsContainer" class="celebrity-grid">
|
|
@@ -1726,6 +1699,14 @@ textarea {
|
|
| 1726 |
<input type="checkbox" id="objectCelebrityCheck">
|
| 1727 |
<label for="objectCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1728 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1729 |
<div class="checkbox-item">
|
| 1730 |
<input type="checkbox" id="objectFurnitureCheck">
|
| 1731 |
<label for="objectFurnitureCheck" data-lang-key="objectFurnitureCheck">Мебель / Ковры</label>
|
|
@@ -1941,6 +1922,14 @@ textarea {
|
|
| 1941 |
<input type="checkbox" id="cosmeticsCelebrityCheck">
|
| 1942 |
<label for="cosmeticsCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1943 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1944 |
</div>
|
| 1945 |
</div>
|
| 1946 |
|
|
@@ -2143,21 +2132,13 @@ textarea {
|
|
| 2143 |
</form>
|
| 2144 |
</div>
|
| 2145 |
|
| 2146 |
-
<div id="iframeOverlay">
|
| 2147 |
-
<div class="iframe-header">
|
| 2148 |
-
<h3>Synkris Platform</h3>
|
| 2149 |
-
<button onclick="document.getElementById('iframeOverlay').style.display='none'; document.getElementById('synkrisIframe').src='';">Закрыть</button>
|
| 2150 |
-
</div>
|
| 2151 |
-
<iframe id="synkrisIframe" src=""></iframe>
|
| 2152 |
-
</div>
|
| 2153 |
-
|
| 2154 |
<script>
|
| 2155 |
let currentMode = 'model';
|
| 2156 |
const envKeyword = {{ keyword|tojson|safe }};
|
| 2157 |
const promptsData = {{ prompts_data|tojson|safe }};
|
| 2158 |
|
| 2159 |
const c_m = {"Adam Driver":"Адам Драйвер","Al Pacino":"Аль Пачино","Anthony Hopkins":"Энтони Хопкинс","Antonio Banderas":"Антонио Бандерас","Arnold Schwarzenegger":"Арнольд Шварценеггер","Bad Bunny":"Bad Bunny","Benedict Cumberbatch":"Бенедикт Камбербэтч","Brad Pitt":"Брэд Питт","Bradley Cooper":"Брэдли Купер","Bruce Willis":"Брюс Уиллис","Channing Tatum":"Ченнинг Татум","Chris Evans":"Крис Эванс","Chris Hemsworth":"Крис Хемсворт","Chris Pratt":"Крис Прэтт","Christian Bale":"Кристиан Бэйл","Cillian Murphy":"Киллиан Мёрфи","Clint Eastwood":"Клинт Иствуд","Colin Farrell":"Колин Фаррелл","Daniel Craig":"Дэниел Крейг","Danny DeVito":"Дэнни ДеВито","Denzel Washington":"Дензел Вашингтон","Donald Trump":"Дональд Трамп","Dwayne Johnson":"Дуэйн Джонсон","Eddie Murphy":"Эдди Мерфи","Elon Musk":"Илон Маск","George Clooney":"Джордж Клуни","Harry Styles":"Гарри Стайлс","Henry Cavill":"Генри Кавилл","Hugh Jackman":"Хью Джекман","Idris Elba":"Идрис Эльба","Jackie Chan":"Джеки Чан","Jake Gyllenhaal":"Джейк Джилленхол","Jason Momoa":"Джейсон Момоа","Jason Statham":"Джейсон Стейтем","Javier Bardem":"Хавьер Бардем","Jeff Goldblum":"Джефф Голдблюм","Joaquin Phoenix":"Хоакин Феникс","Joe Rogan":"Джо Роган","John Travolta":"Джон Траволта","Johnny Depp":"Джонни Депп","Jude Law":"Джуд Лоу","Kanye West":"Канье Уэст","Keanu Reeves":"Киану Ривз","Kevin Hart":"Кевин Харт","Leonardo DiCaprio":"Леонардо Ди Каприо","Liam Neeson":"Лиам Нисон","Mads Mikkelsen":"Мадс Миккельсен","Mark Zuckerberg":"Марк Цукерберг","Matt Damon":"Мэтт Дэймон","Matthew McConaughey":"Мэттью МакКонахи","Mel Gibson":"Мэл Гибсон","Michael B. Jordan":"Майкл Б. Джордан","Morgan Freeman":"Морган Фриман","Nicolas Cage":"Николас Кейдж","Oscar Isaac":"Оскар Айзек","Robert De Niro":"Роберт Де Ниро","Robert Downey Jr.":"Роберт Дауни-младший","Ryan Gosling":"Райан Гослинг","Ryan Reynolds":"Райан Рейнольдс","Samuel L. Jackson":"Сэмюэл Л. Джексон","Sylvester Stallone":"Сильвестр Сталлоне","The Weeknd":"The Weeknd","Timothée Chalamet":"Тимоти Шаламе","Tom Cruise":"Том Круз","Tom Hanks":"Том Хэнкс","Tom Hardy":"Том Харди","Tom Holland":"Том Холланд","Travis Scott":"Трэвис Скотт","Vin Diesel":"Вин Дизель","Will Smith":"Уилл Смит","Willem Dafoe":"Уиллем Дефо","Woody Harrelson":"Вуди Харрельсон","Cristiano Ronaldo":"Криштиану Роналду","Lionel Messi":"Лионель Месси","Neymar Jr.":"Неймар","Conor McGregor":"Конор Макгрегор","Khabib Nurmagomedov":"Хабиб Нурмагомедов","Jon Jones":"Джон Джонс","Israel Adesanya":"Исраэль Адесанья","Kamaru Usman":"Камару Усман","Francis Ngannou":"Фрэнсис Нганну","Islam Makhachev":"Ислам Махачев","Khamzat Chimaev":"Хамзат Чимаев","Sean O'Malley":"Шон О'Мэлли","Shavkat Rakhmonov":"Шавкат Рахмонов","Alex Pereira":"Алекс Перейра","Jorge Masvidal":"Хорхе Масвидаль"};
|
| 2160 |
-
const c_f = {"Adriana Lima":"Адриана Лима","Alexandra Daddario":"Александра Даддарио","Amanda Seyfried":"Аманда Сейфрид","Ana de Armas":"Ана де Армас","Angelina Jolie":"Анджелина Джоли","Anne Hathaway":"Энн Хэтэуэй","Anya Taylor-Joy":"Аня Тейлор-Джой","Ariana Grande":"Ариана Гранде","Bella Hadid":"Белла Хадид","Beyonce":"Бейонсе","Billie Eilish":"Билли Айлиш","Blake Lively":"Блейк Лайвли","Cameron Diaz":"Кэмерон Диаз","Cara Delevingne":"Кара Делевинь","Cate Blanchett":"Кейт Бланшетт","Charlize Theron":"Шарлиз Терон","Christina Hendricks":"Кристина Хендрикс","Dakota Johnson":"Дакота Джонсон","Doja Cat":"Doja Cat","Dua Lipa":"Дуа Липа","Elizabeth Olsen":"Элизабет Олсен","Emily Ratajkowski":"Эмили Ратаковски","Emma Stone":"Эмма Стоун","Emma Watson":"Эмма Уотсон","Eva Green":"Ева Грин","Eva Mendes":"Ева Мендес","Florence Pugh":"Флоренс Пью","Gal Gadot":"Галь Гадот","Gigi Hadid":"Джиджи Хадид","Gisele Bündchen":"Жизель Бюндхен","Hailey Bieber":"Хейли Бибер","Halle Berry":"Хэлли Берри","Irina Shayk":"Ирина
|
| 2161 |
const cc_m = {"Caleb McLaughlin (Stranger Things)":"Калеб Маклафлин","Daniel Radcliffe (Harry Potter)":"Дэниел Рэдклифф","Finn Wolfhard (Stranger Things)":"Финн Вулфхард","Gaten Matarazzo (Stranger Things)":"Гейте�� Матараццо","Iain Armitage (Young Sheldon)":"Иэн Армитидж","Jacob Tremblay":"Джейкоб Трамбле","Jaden Smith":"Джейден Смит","Macaulay Culkin (Home Alone)":"Маколей Калкин","Noah Schnapp (Stranger Things)":"Ноа Шнапп","Walker Scobell (The Adam Project)":"Уокер Скобелл"};
|
| 2162 |
const cc_f = {"Dakota Fanning":"Дакота Фаннинг","Elle Fanning":"Эль Фаннинг","Emma Watson (Harry Potter)":"Эмма Уотсон","Mckenna Grace":"Маккенна Грейс","Millie Bobby Brown (Stranger Things)":"Милли Бобби Браун","North West":"Норт Уэст","Sadie Sink (Stranger Things)":"Сэди Синк","Storm Reid (A Wrinkle in Time)":"Сторм Рид","Suri Cruise":"Сури Круз"};
|
| 2163 |
|
|
@@ -2203,6 +2184,7 @@ const translations = {
|
|
| 2203 |
logoOverlayCheck: "С логотипом", logoOverlayPlaceholder: "Опишите логотип, например: 'белый минималистичный текст Synkris в правом нижнем углу'",
|
| 2204 |
launchBtn: "Launch Synkris", copied_launching: "ПРОМПТ СКОПИРОВАН. ЗАПУСК... 🚀", copy_failed: "Не удалось скопировать. Промпт в консоли разработчика.",
|
| 2205 |
your_prompt: "Ваш промпт:", resetModelSettingsBtn: "Сбросить настройки модели", resetConfirm: "Вы уверены, что хотите сбросить настройки модели до значений по умолчанию?",
|
|
|
|
| 2206 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Селфи в лифте', 'car_interior_lifestyle': 'В салоне авто', 'golden_hour_field': 'Золотой час в поле', 'messy_bedroom_morning': 'Утро в спальне', 'vintage_35mm_film': 'Винтажная пленка', 'paparazzi_street_flash': 'Папарацци-вспышка', 'cafe_window_contemplation': 'У окна в кафе', 'rooftop_party_sunset': 'Вечеринка на крыше', 'bookstore_aisle_cozy': 'Книжный магазин', 'custom_background_fusion': 'Свой фон (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Лес', 'desert_expedition': 'Пустыня', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Дворец', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Рынок', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Дом', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Дождь', 'night_flash': 'Ночь (вспышка)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2207 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Природа', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Всплеск', 'handmade': 'Мастерская', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2208 |
female_body_types: {'standard': 'Стандартное', 'very_slim': 'Очень стройное (модель)', 'slim': 'Стройное (натуральное)', 'slim_busty': 'Стройное с пышной грудью', 'athletic': 'Атлетичное', 'petite': 'Миниатюрное', 'hourglass': 'Песочные часы', 'fit_curvy': 'Спортивное (curvy)', 'plus_size': 'Пышные', 'curvy': 'Мягкое (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Беременная (одежда для беременных)'},
|
|
@@ -2258,6 +2240,7 @@ const translations = {
|
|
| 2258 |
logoOverlayCheck: "Логотиппен", logoOverlayPlaceholder: "Логотипті сипаттаңыз, мысалы: 'оң жақ төменгі бұрыштағы Synkris ақ минималистік мәтіні'",
|
| 2259 |
launchBtn: "Synkris іске қосу", copied_launching: "ПРОМПТ КӨШІРІЛДІ. ІСКЕ ҚОСУ... 🚀", copy_failed: "Көшіру мүмкін болмады. Промпт әзірлеуші консолінде.",
|
| 2260 |
your_prompt: "Сіздің промптыңыз:", resetModelSettingsBtn: "Модель баптауларын қалпына келтіру", resetConfirm: "Модель баптауларын әдепкі мәндерге қайтарғыңыз келетініне сенімдісіз бе?",
|
|
|
|
| 2261 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонында', 'golden_hour_field': 'Алтын сағат', 'messy_bedroom_morning': 'Жатын бөлме', 'vintage_35mm_film': 'Винтаж пленка', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Шатырдағы кеш', 'bookstore_aisle_cozy': 'Кітап дүкені', 'custom_background_fusion': 'Өз фоныңыз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Орман', 'desert_expedition': 'Шөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жаңбыр', 'night_flash': 'Түн (жарқыл)', 'tropical_resort': 'Курорт', 'beach': 'Жағажай', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2262 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Табиғат', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Шашырау', 'handmade': 'Шеберхана', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2263 |
female_body_types: {'standard': 'Стандартты', 'very_slim': 'Өте сымбатты (модель)', 'slim': 'Сымбатты (табиғи)', 'slim_busty': 'Сымбатты, үлкен кеуделі', 'athletic': 'Атлетикалық', 'petite': 'Кішкентай', 'hourglass': 'Құм сағат', 'fit_curvy': 'Спорттық (curvy)', 'plus_size': 'Толық', 'curvy': 'Жұмсақ (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Жүкті (жүкті әйелдерге арналған киім)'},
|
|
@@ -2313,6 +2296,7 @@ const translations = {
|
|
| 2313 |
logoOverlayCheck: "Логотип менен", logoOverlayPlaceholder: "Логотипти сүрөттөп бериңиз, мисалы: 'оң жак төмөнкү бурчтагы Synkris ак минималисттик тексти'",
|
| 2314 |
launchBtn: "Synkris ишке киргизүү", copied_launching: "ПРОМПТ КӨЧҮРҮЛДҮ. ИШКЕ КИРГИЗҮҮ... 🚀", copy_failed: "Көчүрүү мүмкүн болбоду. Промпт иштеп чыгуучунун консолунда.",
|
| 2315 |
your_prompt: "Сиздин промптуңуз:", resetModelSettingsBtn: "Моделдин жөндөөлөрүн баштапкы абалга келтирүү", resetConfirm: "Моделдин жөндөөлөрүн баштапкы абалга келтирүүнү каалайсызбы?",
|
|
|
|
| 2316 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонунда', 'golden_hour_field': 'Алтын саат', 'messy_bedroom_morning': 'Уктоочу бөлмө', 'vintage_35mm_film': 'Винтаж пленкасы', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Чатырдагы кече', 'bookstore_aisle_cozy': 'Китеп дүкөнү', 'custom_background_fusion': 'Өз фонуңуз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Токой', 'desert_expedition': 'Чөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жамгыр', 'night_flash': 'Түн (жарк)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2317 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Жаратылыш', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Чачыроо', 'handmade': 'Устакана', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2318 |
female_body_types: {'standard': 'Стандарттуу', 'very_slim': 'Абдан сымбаттуу (модель)', 'slim': 'Сымбаттуу (табигый)', 'slim_busty': 'Сымбаттуу, чоң төштүү', 'athletic': 'Атлетикалык', 'petite': 'Кичинекей', 'hourglass': 'Кум саат', 'fit_curvy': 'Спорттук (curvy)', 'plus_size': 'Толук', 'curvy': 'Жумшак (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Кош бойлуу (кош бойлуулар үчүн кийим)'},
|
|
@@ -2326,76 +2310,21 @@ const translations = {
|
|
| 2326 |
tattoo_styles: {"Scandinavian": "Скандинавиялык", "Polynesian": "Полинезиялык", "Japanese (Irezumi)": "Япон (Ирэдзуми)", "American Traditional": "Америкалык салттуу", "Blackwork": "Блэкворк", "Geometric": "Геометриялык", "Fine-line": "Ичке сызык", "Surrealism": "Сюрреализм", "Neo-Traditional": "Нео-салттуу"},
|
| 2327 |
tattoo_coverages: {"a few small tattoos": "Бир нече кичинекей", "sleeve on one arm": "Бир колдогу жең", "full sleeves on both arms": "Эки колдогу жеңдер", "chest piece": "Көкүрөктө", "back piece": "Аркада", "heavily tattooed": "Көп чийилген", "fully covered": "Толугу менен капталган"},
|
| 2328 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2329 |
-
},
|
| 2330 |
-
tr: {
|
| 2331 |
-
subtitle: "PROMPT OLUŞTURUCU VE BAŞLATICI", modeModel: "Model Üzerinde Fotoğraf", modeChildren: "Çocuklar", modeObject: "Nesne", modeCosmetics: "Kozmetik",
|
| 2332 |
-
section1Title: "Model Parametreleri", section2Title: "Sahne ve Stil", section3Title: "Kompozisyon ve Detaylar", section1ObjectTitle: "Nesne Parametreleri",
|
| 2333 |
-
section2ObjectTitle: "Sahne ve Stil", section1CosmeticsTitle: "Ürün ve Model", ownModelCheck: "Kendi modeliniz (2 fotoğraf kullanır: kıyafet + model)",
|
| 2334 |
-
objectWithModelCheck: "Model ile", objectOnMannequinCheck: "Manken üzerinde", celebrityCheck: "Ünlüler", marketplaceCheck: "Pazaryeri modu",
|
| 2335 |
-
celebrityName: "Ünlü", gender: "Cinsiyet", gender_female: "Kadın", gender_male: "Erkek", age: "Yaş", age_teen: "14-18 yaş",
|
| 2336 |
-
age_20_25: "20-25 yaş", age_25_30: "25-30 yaş", age_30_40: "30-40 yaş", age_40_50: "40-50 yaş", nationality: "Görünüm/Etnik köken",
|
| 2337 |
-
nat_eastern_european: "Doğu Avrupa", nat_northern_european: "İskandinav", nat_mediterranean: "Akdeniz", nat_asian: "Asya",
|
| 2338 |
-
nat_central_asian: "Orta Asya", nat_south_asian: "Güney Asya (Hindistan)", nat_middle_eastern: "Orta Doğu", nat_caucasian: "Kafkas",
|
| 2339 |
-
nat_african: "Afrika", nat_latin_american: "Latin Amerika", nat_indigenous: "Yerli Amerikan", nat_polynesian: "Polinezya",
|
| 2340 |
-
nat_mixed: "Melez", bodyType: "Vücut Tipi", hairColor: "Saç Rengi", hair_black: "Siyah", hair_brown: "Kahverengi", hair_blonde: "Sarı",
|
| 2341 |
-
hair_red: "Kızıl", hair_light_brown: "Açık Kahverengi", hairstyle: "Saç Stili", eyeColor: "Göz Rengi", eyes_brown: "Kahverengi", eyes_blue: "Mavi",
|
| 2342 |
-
eyes_green: "Yeşil", eyes_gray: "Gri", tattoos: "Dövmeler", enableTattoos: "Dövme ekle", tattooStyle: "Stil", tattooCoverage: "Kapsama",
|
| 2343 |
-
beard: "Sakal", enableBeard: "Sakal ekle", beardStyle: "Sakal Tipi", shotType: "Açı/Plan", shot_full: "Tam boy, dinamik açı",
|
| 2344 |
-
shot_medium: "Belden yukarı, doğal", shot_cowboy: "'Kovboy' planı, dergi stili", shot_portrait: "Portre, etkileyici", shot_closeup: "Yakın plan (üründe)",
|
| 2345 |
-
shot_shoes: "Ayakkabı için yakın plan (yüz yok)", objectFurnitureCheck: "Mobilya / Halılar",
|
| 2346 |
-
viewAngle: "Görünüm", view_front: "Önden", view_back: "Arkadan", view_side: "Yandan", view_three_quarter: "Üç çeyrek", pose: "Poz",
|
| 2347 |
-
pose_fashion: "Dinamik, sıra dışı moda pozu", pose_confident: "Kendinden emin duruş, kameraya bakış", pose_walking: "Dinamik yürüyüş, hafif hareket bulanıklığı",
|
| 2348 |
-
pose_sitting_chair: "Sandalyede rahat oturuş", pose_leaning: "Duvara rahatça yaslanma", pose_contrapposto: "Kontraposto güçlü poz",
|
| 2349 |
-
pose_laughing: "İçten gülüş veya tebessüm", pose_profile: "Düşünceli profil, kameradan uzağa bakış", pose_jumping: "Zıplama veya hareket halinde",
|
| 2350 |
-
pose_reclining: "Yüzeyde zarifçe uzanma", styleLocation: "Stil / Mekan", aspectRatio: "En Boy Oranı",
|
| 2351 |
-
modelDetailsLabel: "Kıyafet ve Detaylar (Kumaşı ve kesimi açıklayın!)", modelDetailsPlaceholder: "Kumaşı ve detayları belirtin. Örnek: Kalın dokulu siyah deri trençkot, belirgin dikişler, ağır metal aksesuarlar, ipek atkı",
|
| 2352 |
-
additionalDirectives: "Ek direktifler", additionalDirectivesPlaceholderModel: "Örnek: Karede en son model bir telefon görünüyor, ıslak saç efekti...",
|
| 2353 |
-
child_gender_girl: "Kız", child_gender_boy: "Erkek", child_age_infant: "6-12 aylık", child_age_toddler: "2-4 yaş", child_age_child: "5-8 yaş",
|
| 2354 |
-
child_age_preteen: "9-12 yaş", child_shot_full: "Tam boy", child_shot_medium: "Belden yukarı", child_shot_portrait: "Portre",
|
| 2355 |
-
childPoseAction: "Poz/Eylem", child_pose_running: "Tarlada neşeyle koşuyor", child_pose_playing: "Oyuncaklarla oynuyor", child_pose_reading: "Kitap okuyarak oturuyor",
|
| 2356 |
-
child_pose_posing: "Fotoğraf için poz veriyor", child_pose_jumping: "Yatakta zıplıyor", childDetailsLabel: "Kıyafet ve Detaylar",
|
| 2357 |
-
childDetailsPlaceholder: "Örnek: Yıpranmış kot tulum ve metal düğmeler, fitilli kadife gömlek",
|
| 2358 |
-
additionalDirectivesPlaceholderChild: "Örnek: 'organic cotton' yazan infografik ekle", objectNameLabel: "Ürün Adı/Açıklaması",
|
| 2359 |
-
objectNamePlaceholder: "Örnek: 'Noir' parfüm şişesi, 'CyberRun' spor ayakkabı, 'Classic Timepiece' saat", cosmeticsNameLabel: "Kozmetik Adı/Açıklaması",
|
| 2360 |
-
cosmeticsNamePlaceholder: "Örnek: Kırmızı 'Ruby' ruj, 'Glow' fondöten, far paleti", styleBackground: "Stil / Arka Plan",
|
| 2361 |
-
additionalDirectivesPlaceholderObject: "Örnek: 'new collection' infografiği ekle, ürün havada asılı duruyor (levitasyon)",
|
| 2362 |
-
additionalDirectivesPlaceholderCosmetics: "Örnek: Cilt ışıltısına vurgu, dudakların makro çekimi", detailsVariations: "Detaylar ve Varyasyonlar",
|
| 2363 |
-
detailsCollage: "Büyütülmüş detaylarla kolaj (kumaş, aksesuarlar)", detailsCollageObject: "Büyütülmüş detaylarla kolaj (malzeme, doku)",
|
| 2364 |
-
detailsCollageCosmetics: "Büyütülmüş detaylarla kolaj (ürün dokusu, fırça darbeleri)", anglesCollage: "Farklı açılardan kolaj (önden, arkadan, yandan)",
|
| 2365 |
-
anglesCollageObject: "Farklı açılardan kolaj (önden, arkadan, yandan)", variantsCollage: "Farklı varyasyonlar/renkler (karede birkaç model)",
|
| 2366 |
-
variantsCollageObject: "Ürünün farklı varyasyonları/renkleri", variantsCollageCosmetics: "Farklı tonlar/renkler (birkaç model)",
|
| 2367 |
-
textOverlayCheck: "Metin Ekleme", textOverlayPlaceholder: "Virgülle ayrılmış anahtar kelimeler, örnek: New Collection, 100% Cotton",
|
| 2368 |
-
logoOverlayCheck: "Logolu", logoOverlayPlaceholder: "Logoyu açıklayın, örnek: 'Sağ alt köşede beyaz minimalist Synkris metni'",
|
| 2369 |
-
launchBtn: "Synkris Başlat", copied_launching: "PROMPT KOPYALANDI. BAŞLATILIYOR... 🚀", copy_failed: "Kopyalanamadı. Prompt geliştirici konsolunda.",
|
| 2370 |
-
your_prompt: "Promptunuz:", resetModelSettingsBtn: "Model ayarlarını sıfırla", resetConfirm: "Model ayarlarını varsayılana sıfırlamak istediğinize emin misiniz?",
|
| 2371 |
-
flagship_styles: {'studio': 'Stüdyo (lüks)', 'product_focus_light': 'Pazaryeri', 'street': 'Sokak stili', 'lookbook': 'Lookbook', 'minimalism': 'Minimalizm', 'urban_loft_lifestyle': 'Loft', 'elevator_mirror_selfie': 'Asansörde selfie', 'car_interior_lifestyle': 'Araç içi', 'golden_hour_field': 'Tarlada altın saat', 'messy_bedroom_morning': 'Yatak odası', 'vintage_35mm_film': 'Vintage film', 'paparazzi_street_flash': 'Paparazzi', 'cafe_window_contemplation': 'Kafede', 'rooftop_party_sunset': 'Çatıda parti', 'bookstore_aisle_cozy': 'Kitapçı', 'custom_background_fusion': 'Özel arka plan (pro)', 'polaroid_snapshot': 'Polaroid', 'creative': 'Yaratıcı', 'retro': 'Retro', 'boho': 'Boho', 'forest_nymph': 'Orman', 'desert_expedition': 'Çöl', 'gothic': 'Gotik', 'editorial': 'Editoryal', 'film_noir': 'Kara film', 'cottagecore': 'Cottagecore', 'royalcore': 'Saray', 'solarpunk': 'Solarpunk', 'skater': 'Kaykaycı', 'vibrant_market': 'Pazar', 'cyberpunk': 'Siberpunk', 'fantasy': 'Fantezi', 'surreal_dreamscape': 'Sürrealizm', 'techwear': 'Techwear', 'home_casual': 'Ev', 'backstage': 'Kulis', 'road_trip': 'Yolculuk', 'rainy_day': 'Yağmur', 'night_flash': 'Gece (flaşlı)', 'tropical_resort': 'Tatil köyü', 'beach': 'Plaj', 'alaska_winter': 'Alaska (kış)', 'football_field': 'Futbol sahası', 'volcanic_ash_desert': 'Volkan (İzlanda)', 'salt_flats_mirage': 'Tuz gölü (Bolivya)', 'highlands_majesty': 'Dağlık bölge (İskoçya)'},
|
| 2372 |
-
object_styles: {'studio': 'Stüdyo', 'minimalism': 'Minimalizm', 'nature': 'Doğa', 'luxe': 'Lüks', 'dark': 'Dram', 'geometric': 'Geometri', 'floating': 'Levitasyon', 'lifestyle': 'Yaşam tarzı', 'splash': 'Sıçrama', 'handmade': 'Atölye', 'alaska_winter': 'Alaska (kış)', 'football_field': 'Futbol sahası', 'volcanic_ash_desert': 'Volkan (İzlanda)', 'salt_flats_mirage': 'Tuz gölü (Bolivya)', 'highlands_majesty': 'Dağlık bölge (İskoçya)'},
|
| 2373 |
-
female_body_types: {'standard': 'Standart', 'very_slim': 'Çok ince (model)', 'slim': 'İnce (doğal)', 'slim_busty': 'İnce ve dolgun göğüslü', 'athletic': 'Atletik', 'petite': 'Minyon', 'hourglass': 'Kum saati', 'fit_curvy': 'Sportif (kıvrımlı)', 'plus_size': 'Büyük beden', 'curvy': 'Yumuşak (kıvrımlı)', 'full_figured': 'Balık etli', 'pregnant': 'Hamile (hamile kıyafetleri için)'},
|
| 2374 |
-
male_body_types: {'athletic': 'Atletik', 'lean and toned': 'İnce ve formda', 'muscular build': 'Kaslı', 'broad build': 'Geniş yapılı', 'slim build': 'Zayıf'},
|
| 2375 |
-
female_hairstyles: {'long wavy hair': 'Uzun dalgalı', 'short bob cut': 'Kısa küt', 'elegant updo': 'Zarif topuz', 'straight shoulder-length hair': 'Omuz hizasında düz', 'pixie cut': 'Pixie', 'messy bun': 'Dağınık topuz', 'high ponytail': 'Yüksek at kuyruğu', 'braids': 'Örgüler', 'curly afro': 'Kıvırcık afro', 'bangs': 'Kaküllü', 'layered haircut': 'Katlı kesim', 'wearing a hijab': 'Başörtülü'},
|
| 2376 |
-
male_hairstyles: {'short classic cut': 'Kısa klasik', 'fade haircut': 'Fade', 'slicked back hair': 'Arkaya taranmış', 'textured crop': 'Dokulu kısa kesim', 'quiff': 'Quiff', 'man bun': 'Erkek topuzu', 'buzz cut': 'Sıfır numara', 'medium-length wavy hair': 'Orta uzunlukta dalgalı', 'side part': 'Yandan ayrılmış', 'undercut': 'Altı kazınmış'},
|
| 2377 |
-
child_hairstyles_infant: {'wispy fine hair': 'Seyrek ince saç', 'soft baby curls': 'Yumuşak bebek bukleleri', 'almost bald': 'Neredeyse kel'},
|
| 2378 |
-
child_hairstyles_girl: {'long wavy hair': 'Uzun dalgalı', 'two pigtails': 'İki kuyruk', 'braids': 'Örgüler', 'bob cut': 'Küt kesim', 'high ponytail': 'Yüksek at kuyruğu'},
|
| 2379 |
-
child_hairstyles_boy: {'short neat cut': 'Kısa düzenli', 'slightly messy hair': 'Hafif dağınık', 'side part': 'Yandan ayrılmış', 'textured crop': 'Dokulu kısa kesim'},
|
| 2380 |
-
beard_styles: {"light stubble": "Hafif kirli sakal", "heavy stubble": "Yoğun kirli sakal", "short boxed beard": "Kısa kutu sakal", "full beard": "Tam sakal", "goatee": "Keçi sakalı", "van dyke": "Van Dyke", "anchor beard": "Çapa sakal"},
|
| 2381 |
-
tattoo_styles: {"Scandinavian": "İskandinav", "Polynesian": "Polinezya", "Japanese (Irezumi)": "Japon (Irezumi)", "American Traditional": "Amerikan Geleneksel", "Blackwork": "Blackwork", "Geometric": "Geometrik", "Fine-line": "İnce çizgi", "Surrealism": "Sürrealizm", "Neo-Geleneksel": "Neo-Geleneksel"},
|
| 2382 |
-
tattoo_coverages: {"a few small tattoos": "Birkaç küçük dövme", "sleeve on one arm": "Tek kolda kaplama", "full sleeves on both arms": "Her iki kolda kaplama", "chest piece": "Göğüs bölgesinde", "back piece": "Sırtta", "heavily tattooed": "Yoğun dövmeli", "fully covered": "Tamamen kaplı"},
|
| 2383 |
-
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
| 2384 |
}
|
| 2385 |
};
|
| 2386 |
|
| 2387 |
const fieldsToPersist = [
|
| 2388 |
'gender', 'age', 'nationality', 'bodyType', 'hairColor', 'hairstyle', 'eyeColor',
|
| 2389 |
'hasBeard_model', 'beardStyle_model', 'hasTattoos_model', 'tattooStyle_model', 'tattooCoverage_model',
|
| 2390 |
-
'shotType', 'viewAngle', 'pose',
|
| 2391 |
'child_gender', 'child_age', 'child_nationality', 'child_hairColor', 'child_hairstyle', 'child_eyeColor',
|
| 2392 |
-
'child_shotType', 'child_viewAngle', 'child_pose',
|
| 2393 |
'object_gender', 'object_age', 'object_nationality', 'object_bodyType', 'object_hairColor', 'object_hairstyle', 'object_eyeColor',
|
| 2394 |
'hasBeard_object', 'beardStyle_object', 'hasTattoos_object', 'tattooStyle_object', 'tattooCoverage_object',
|
| 2395 |
-
'object_shotType', 'objectFurnitureCheck',
|
| 2396 |
'cosmetics_gender', 'cosmetics_age', 'cosmetics_nationality', 'cosmetics_bodyType', 'cosmetics_hairColor', 'cosmetics_hairstyle', 'cosmetics_eyeColor',
|
| 2397 |
'hasBeard_cosmetics', 'beardStyle_cosmetics', 'hasTattoos_cosmetics', 'tattooStyle_cosmetics', 'tattooCoverage_cosmetics',
|
| 2398 |
-
'cosmetics_shotType'
|
| 2399 |
];
|
| 2400 |
|
| 2401 |
function saveSettings() {
|
|
@@ -2705,9 +2634,66 @@ function getPrompt() {
|
|
| 2705 |
const isOwnModel = document.getElementById('ownModelCheck').checked;
|
| 2706 |
const isCelebrity = document.getElementById('celebrityCheck').checked;
|
| 2707 |
const wantsMarketplace = document.getElementById('marketplaceCheck_model').checked;
|
|
|
|
| 2708 |
const styleKey = document.querySelector('#styleSelector .style-btn.active').dataset.value;
|
| 2709 |
aspectRatio = document.querySelector('#aspectRatioSelectorModel .aspect-ratio-btn.active').dataset.value;
|
| 2710 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2711 |
prompt = isOwnModel ? promptsData.base_prompts.model_base_own_model : promptsData.base_prompts.model_base;
|
| 2712 |
const stylePrompt = promptsData.flagship_styles[styleKey];
|
| 2713 |
const shotType = document.getElementById('shotType').value;
|
|
@@ -2777,9 +2763,58 @@ function getPrompt() {
|
|
| 2777 |
} else if (currentMode === 'children') {
|
| 2778 |
const isChildCelebrity = document.getElementById('childCelebrityCheck').checked;
|
| 2779 |
const wantsMarketplace = document.getElementById('marketplaceCheck_children').checked;
|
|
|
|
| 2780 |
const styleKey = document.querySelector('#childStyleSelector .style-btn.active').dataset.value;
|
| 2781 |
aspectRatio = document.querySelector('#aspectRatioSelectorChildren .aspect-ratio-btn.active').dataset.value;
|
| 2782 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2783 |
prompt = promptsData.base_prompts.children_base;
|
| 2784 |
const stylePrompt = promptsData.flagship_styles[styleKey];
|
| 2785 |
const clothingDetails = document.getElementById('child_details').value || "the provided clothing";
|
|
@@ -2840,11 +2875,69 @@ function getPrompt() {
|
|
| 2840 |
const wantsMarketplace = document.getElementById('marketplaceCheck_object').checked;
|
| 2841 |
const isFurniture = document.getElementById('objectFurnitureCheck') && document.getElementById('objectFurnitureCheck').checked;
|
| 2842 |
const objectName = document.getElementById('object_name').value || "the product";
|
|
|
|
| 2843 |
const styleKey = document.querySelector('#objectStyleSelector .style-btn.active').dataset.value;
|
| 2844 |
const stylePrompt = promptsData.object_styles[styleKey];
|
| 2845 |
additionalPrompt = document.getElementById('object_additional_prompt').value;
|
| 2846 |
aspectRatio = document.querySelector('#aspectRatioSelectorObject .aspect-ratio-btn.active').dataset.value;
|
| 2847 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2848 |
if (withModel) {
|
| 2849 |
prompt = promptsData.base_prompts.model_base;
|
| 2850 |
const isCelebrity = document.getElementById('objectCelebrityCheck').checked;
|
|
@@ -2930,12 +3023,49 @@ function getPrompt() {
|
|
| 2930 |
|
| 2931 |
} else if (currentMode === 'cosmetics') {
|
| 2932 |
const wantsMarketplace = document.getElementById('marketplaceCheck_cosmetics').checked;
|
|
|
|
| 2933 |
const cosmeticsName = document.getElementById('cosmetics_name').value || "the cosmetic product";
|
| 2934 |
const styleKey = document.querySelector('#cosmeticsStyleSelector .style-btn.active').dataset.value;
|
| 2935 |
const stylePrompt = promptsData.object_styles[styleKey];
|
| 2936 |
additionalPrompt = document.getElementById('cosmetics_additional_prompt').value;
|
| 2937 |
aspectRatio = document.querySelector('#aspectRatioSelectorCosmetics .aspect-ratio-btn.active').dataset.value;
|
| 2938 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2939 |
prompt = promptsData.base_prompts.cosmetics_base;
|
| 2940 |
const isCelebrity = document.getElementById('cosmeticsCelebrityCheck').checked;
|
| 2941 |
|
|
@@ -3001,8 +3131,6 @@ function getPrompt() {
|
|
| 3001 |
if (additionalPrompt) {
|
| 3002 |
prompt += `\\n\\n**ADDITIONAL ARTISTIC DIRECTIVES:** ${additionalPrompt}`;
|
| 3003 |
}
|
| 3004 |
-
|
| 3005 |
-
prompt += `\\n\\n**QUALITY BOOST:** Ensure final image is in pristine 4K resolution, ultra-detailed, masterpiece, highly optimized texture rendering.`;
|
| 3006 |
|
| 3007 |
return `${prompt} ${aspectRatio}`.trim();
|
| 3008 |
}
|
|
@@ -3025,9 +3153,8 @@ async function processAndOpen() {
|
|
| 3025 |
btn.querySelector('span[data-lang-key]').innerHTML = langData.copied_launching;
|
| 3026 |
|
| 3027 |
setTimeout(() => {
|
| 3028 |
-
let targetUrl = 'https://
|
| 3029 |
-
|
| 3030 |
-
document.getElementById('iframeOverlay').style.display = 'flex';
|
| 3031 |
setTimeout(() => {
|
| 3032 |
btn.style.background = "";
|
| 3033 |
btn.querySelector('span[data-lang-key]').innerHTML = originalText;
|
|
@@ -3036,7 +3163,7 @@ async function processAndOpen() {
|
|
| 3036 |
} catch (err) {
|
| 3037 |
console.error('Failed to copy: ', err);
|
| 3038 |
alert(langData.copy_failed);
|
| 3039 |
-
console.log(`${langData.your_prompt}\n`, cleanPrompt);
|
| 3040 |
}
|
| 3041 |
}
|
| 3042 |
|
|
@@ -3437,4 +3564,4 @@ if __name__ == '__main__':
|
|
| 3437 |
backup_thread = threading.Thread(target=periodic_backup, daemon=True)
|
| 3438 |
backup_thread.start()
|
| 3439 |
port = int(os.environ.get('PORT', 7860))
|
| 3440 |
-
app.run(debug=False, host='0.0.0.0', port=port)
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
import io
|
| 3 |
import base64
|
|
|
|
| 737 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
| 738 |
<style>
|
| 739 |
:root {
|
| 740 |
+
--bg: #121212;
|
| 741 |
+
--card-bg: #1E1E1E;
|
| 742 |
--primary: #c8ff00;
|
| 743 |
--primary-hover: #b8e600;
|
| 744 |
--primary-gradient: linear-gradient(45deg, #d4ff33, #aaff00);
|
| 745 |
--text: #f0f0f0;
|
| 746 |
--text-secondary: #a0a0a0;
|
| 747 |
+
--border: #333333;
|
| 748 |
+
--input-bg: #2a2a2a;
|
| 749 |
--danger: #ff4d4d;
|
| 750 |
}
|
| 751 |
|
|
|
|
| 775 |
padding: 30px 35px;
|
| 776 |
border-radius: 24px;
|
| 777 |
border: 1px solid var(--border);
|
| 778 |
+
box-shadow: 0 20px 60px -15px rgba(200, 255, 0, 0.08);
|
| 779 |
animation: fadeIn 0.6s cubic-bezier(0.25, 1, 0.5, 1);
|
| 780 |
}
|
| 781 |
|
|
|
|
| 798 |
background: var(--primary-gradient);
|
| 799 |
-webkit-background-clip: text;
|
| 800 |
-webkit-text-fill-color: transparent;
|
| 801 |
+
text-shadow: 0 0 30px rgba(200, 255, 0, 0.3);
|
| 802 |
}
|
| 803 |
|
| 804 |
p.subtitle {
|
|
|
|
| 835 |
background: var(--primary);
|
| 836 |
color: #000;
|
| 837 |
border-color: var(--primary);
|
| 838 |
+
box-shadow: 0 0 10px rgba(200, 255, 0, 0.3);
|
| 839 |
}
|
| 840 |
|
| 841 |
.mode-selector {
|
|
|
|
| 865 |
.mode-btn.active {
|
| 866 |
background: var(--primary);
|
| 867 |
color: #000;
|
| 868 |
+
box-shadow: 0 5px 20px -5px rgba(200, 255, 0, 0.4);
|
| 869 |
transform: translateY(-1px);
|
| 870 |
}
|
| 871 |
|
|
|
|
| 921 |
select, textarea {
|
| 922 |
padding: 15px;
|
| 923 |
border: 1px solid var(--border);
|
| 924 |
+
border-radius: 10px;
|
| 925 |
font-size: 0.95rem;
|
| 926 |
font-weight: 500;
|
| 927 |
background-color: var(--input-bg);
|
|
|
|
| 948 |
|
| 949 |
select:focus, textarea:focus {
|
| 950 |
border-color: var(--primary);
|
| 951 |
+
box-shadow: 0 0 15px rgba(200, 255, 0, 0.2);
|
| 952 |
}
|
| 953 |
|
| 954 |
textarea {
|
|
|
|
| 1012 |
}
|
| 1013 |
|
| 1014 |
.style-btn:hover { border-color: var(--primary); color: var(--text); transform: translateY(-2px); }
|
| 1015 |
+
.style-btn.active { background-color: var(--primary); color: #000; border-color: var(--primary); font-weight: 700; transform: translateY(-2px); box-shadow: 0 0 10px rgba(200, 255, 0, 0.2); }
|
| 1016 |
|
| 1017 |
.aspect-ratio-grid {
|
| 1018 |
display: grid;
|
|
|
|
| 1039 |
}
|
| 1040 |
.aspect-ratio-btn .preview { background: #444; border-radius: 4px; transition: background-color 0.3s ease; }
|
| 1041 |
.aspect-ratio-btn:hover { border-color: var(--primary); color: var(--text); transform: translateY(-2px); }
|
| 1042 |
+
.aspect-ratio-btn.active { background-color: var(--primary); color: #000; border-color: var(--primary); transform: translateY(-2px); box-shadow: 0 0 10px rgba(200, 255, 0, 0.2); }
|
| 1043 |
.aspect-ratio-btn.active .preview { background: #000; }
|
| 1044 |
|
| 1045 |
.checkbox-group {
|
|
|
|
| 1124 |
margin-left: 8px;
|
| 1125 |
vertical-align: middle;
|
| 1126 |
display: inline-block;
|
| 1127 |
+
animation: pulse 1.5s infinite;
|
| 1128 |
}
|
| 1129 |
|
| 1130 |
.style-btn .badge-new {
|
|
|
|
| 1135 |
font-size: 0.65em;
|
| 1136 |
}
|
| 1137 |
|
| 1138 |
+
@keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.7; } 100% { opacity: 1; } }
|
| 1139 |
+
|
| 1140 |
.button-link {
|
| 1141 |
background: none;
|
| 1142 |
border: 1px solid var(--border);
|
|
|
|
| 1192 |
opacity: 1;
|
| 1193 |
}
|
| 1194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1195 |
@media (max-width: 700px) {
|
| 1196 |
body { padding: 10px; }
|
| 1197 |
.container { padding: 20px 15px; }
|
|
|
|
| 1214 |
<button id="lang-ru" onclick="setLanguage('ru')">RU</button>
|
| 1215 |
<button id="lang-kz" onclick="setLanguage('kz')">KZ</button>
|
| 1216 |
<button id="lang-kg" onclick="setLanguage('kg')">KG</button>
|
|
|
|
| 1217 |
</div>
|
| 1218 |
</div>
|
| 1219 |
<h1><span>Synkris</span></h1>
|
|
|
|
| 1241 |
<input type="checkbox" id="celebrityCheck">
|
| 1242 |
<label for="celebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1243 |
</div>
|
| 1244 |
+
<div class="checkbox-item">
|
| 1245 |
+
<input type="checkbox" id="wan27Check_model">
|
| 1246 |
+
<label for="wan27Check_model" data-lang-key="wan27Check">Wan 2.7 (Короткий промпт)</label>
|
| 1247 |
+
<span class="tooltip-container">
|
| 1248 |
+
<i class="fas fa-question-circle"></i>
|
| 1249 |
+
<span class="tooltip-text" data-lang-key="wan27Tooltip">вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro</span>
|
| 1250 |
+
</span>
|
| 1251 |
+
</div>
|
| 1252 |
</div>
|
| 1253 |
</div>
|
| 1254 |
|
|
|
|
| 1489 |
<input type="checkbox" id="childCelebrityCheck">
|
| 1490 |
<label for="childCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1491 |
</div>
|
| 1492 |
+
<div class="checkbox-item">
|
| 1493 |
+
<input type="checkbox" id="wan27Check_children">
|
| 1494 |
+
<label for="wan27Check_children" data-lang-key="wan27Check">Wan 2.7 (Короткий промпт)</label>
|
| 1495 |
+
<span class="tooltip-container">
|
| 1496 |
+
<i class="fas fa-question-circle"></i>
|
| 1497 |
+
<span class="tooltip-text" data-lang-key="wan27Tooltip">вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro</span>
|
| 1498 |
+
</span>
|
| 1499 |
+
</div>
|
| 1500 |
</div>
|
| 1501 |
</div>
|
| 1502 |
<div id="childCelebrityParamsContainer" class="celebrity-grid">
|
|
|
|
| 1699 |
<input type="checkbox" id="objectCelebrityCheck">
|
| 1700 |
<label for="objectCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1701 |
</div>
|
| 1702 |
+
<div class="checkbox-item">
|
| 1703 |
+
<input type="checkbox" id="wan27Check_object">
|
| 1704 |
+
<label for="wan27Check_object" data-lang-key="wan27Check">Wan 2.7 (Короткий промпт)</label>
|
| 1705 |
+
<span class="tooltip-container">
|
| 1706 |
+
<i class="fas fa-question-circle"></i>
|
| 1707 |
+
<span class="tooltip-text" data-lang-key="wan27Tooltip">вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro</span>
|
| 1708 |
+
</span>
|
| 1709 |
+
</div>
|
| 1710 |
<div class="checkbox-item">
|
| 1711 |
<input type="checkbox" id="objectFurnitureCheck">
|
| 1712 |
<label for="objectFurnitureCheck" data-lang-key="objectFurnitureCheck">Мебель / Ковры</label>
|
|
|
|
| 1922 |
<input type="checkbox" id="cosmeticsCelebrityCheck">
|
| 1923 |
<label for="cosmeticsCelebrityCheck" data-lang-key="celebrityCheck">Знаменитости</label>
|
| 1924 |
</div>
|
| 1925 |
+
<div class="checkbox-item">
|
| 1926 |
+
<input type="checkbox" id="wan27Check_cosmetics">
|
| 1927 |
+
<label for="wan27Check_cosmetics" data-lang-key="wan27Check">Wan 2.7 (Короткий промпт)</label>
|
| 1928 |
+
<span class="tooltip-container">
|
| 1929 |
+
<i class="fas fa-question-circle"></i>
|
| 1930 |
+
<span class="tooltip-text" data-lang-key="wan27Tooltip">вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro</span>
|
| 1931 |
+
</span>
|
| 1932 |
+
</div>
|
| 1933 |
</div>
|
| 1934 |
</div>
|
| 1935 |
|
|
|
|
| 2132 |
</form>
|
| 2133 |
</div>
|
| 2134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2135 |
<script>
|
| 2136 |
let currentMode = 'model';
|
| 2137 |
const envKeyword = {{ keyword|tojson|safe }};
|
| 2138 |
const promptsData = {{ prompts_data|tojson|safe }};
|
| 2139 |
|
| 2140 |
const c_m = {"Adam Driver":"Адам Драйвер","Al Pacino":"Аль Пачино","Anthony Hopkins":"Энтони Хопкинс","Antonio Banderas":"Антонио Бандерас","Arnold Schwarzenegger":"Арнольд Шварценеггер","Bad Bunny":"Bad Bunny","Benedict Cumberbatch":"Бенедикт Камбербэтч","Brad Pitt":"Брэд Питт","Bradley Cooper":"Брэдли Купер","Bruce Willis":"Брюс Уиллис","Channing Tatum":"Ченнинг Татум","Chris Evans":"Крис Эванс","Chris Hemsworth":"Крис Хемсворт","Chris Pratt":"Крис Прэтт","Christian Bale":"Кристиан Бэйл","Cillian Murphy":"Киллиан Мёрфи","Clint Eastwood":"Клинт Иствуд","Colin Farrell":"Колин Фаррелл","Daniel Craig":"Дэниел Крейг","Danny DeVito":"Дэнни ДеВито","Denzel Washington":"Дензел Вашингтон","Donald Trump":"Дональд Трамп","Dwayne Johnson":"Дуэйн Джонсон","Eddie Murphy":"Эдди Мерфи","Elon Musk":"Илон Маск","George Clooney":"Джордж Клуни","Harry Styles":"Гарри Стайлс","Henry Cavill":"Генри Кавилл","Hugh Jackman":"Хью Джекман","Idris Elba":"Идрис Эльба","Jackie Chan":"Джеки Чан","Jake Gyllenhaal":"Джейк Джилленхол","Jason Momoa":"Джейсон Момоа","Jason Statham":"Джейсон Стейтем","Javier Bardem":"Хавьер Бардем","Jeff Goldblum":"Джефф Голдблюм","Joaquin Phoenix":"Хоакин Феникс","Joe Rogan":"Джо Роган","John Travolta":"Джон Траволта","Johnny Depp":"Джонни Депп","Jude Law":"Джуд Лоу","Kanye West":"Канье Уэст","Keanu Reeves":"Киану Ривз","Kevin Hart":"Кевин Харт","Leonardo DiCaprio":"Леонардо Ди Каприо","Liam Neeson":"Лиам Нисон","Mads Mikkelsen":"Мадс Миккельсен","Mark Zuckerberg":"Марк Цукерберг","Matt Damon":"Мэтт Дэймон","Matthew McConaughey":"Мэттью МакКонахи","Mel Gibson":"Мэл Гибсон","Michael B. Jordan":"Майкл Б. Джордан","Morgan Freeman":"Морган Фриман","Nicolas Cage":"Николас Кейдж","Oscar Isaac":"Оскар Айзек","Robert De Niro":"Роберт Де Ниро","Robert Downey Jr.":"Роберт Дауни-младший","Ryan Gosling":"Райан Гослинг","Ryan Reynolds":"Райан Рейнольдс","Samuel L. Jackson":"Сэмюэл Л. Джексон","Sylvester Stallone":"Сильвестр Сталлоне","The Weeknd":"The Weeknd","Timothée Chalamet":"Тимоти Шаламе","Tom Cruise":"Том Круз","Tom Hanks":"Том Хэнкс","Tom Hardy":"Том Харди","Tom Holland":"Том Холланд","Travis Scott":"Трэвис Скотт","Vin Diesel":"Вин Дизель","Will Smith":"Уилл Смит","Willem Dafoe":"Уиллем Дефо","Woody Harrelson":"Вуди Харрельсон","Cristiano Ronaldo":"Криштиану Роналду","Lionel Messi":"Лионель Месси","Neymar Jr.":"Неймар","Conor McGregor":"Конор Макгрегор","Khabib Nurmagomedov":"Хабиб Нурмагомедов","Jon Jones":"Джон Джонс","Israel Adesanya":"Исраэль Адесанья","Kamaru Usman":"Камару Усман","Francis Ngannou":"Фрэнсис Нганну","Islam Makhachev":"Ислам Махачев","Khamzat Chimaev":"Хамзат Чимаев","Sean O'Malley":"Шон О'Мэлли","Shavkat Rakhmonov":"Шавкат Рахмонов","Alex Pereira":"Алекс Перейра","Jorge Masvidal":"Хорхе Масвидаль"};
|
| 2141 |
+
const c_f = {"Adriana Lima":"Адриана Лима","Alexandra Daddario":"Александра Даддарио","Amanda Seyfried":"Аманда Сейфрид","Ana de Armas":"Ана де Армас","Angelina Jolie":"Анджелина Джоли","Anne Hathaway":"Энн Хэтэуэй","Anya Taylor-Joy":"Аня Тейлор-Джой","Ariana Grande":"Ариана Гранде","Bella Hadid":"Белла Хадид","Beyonce":"Бейонсе","Billie Eilish":"Билли Айлиш","Blake Lively":"Блейк Лайвли","Cameron Diaz":"Кэмерон Диаз","Cara Delevingne":"Кара Делевинь","Cate Blanchett":"Кейт Бланшетт","Charlize Theron":"Шарлиз Терон","Christina Hendricks":"Кристина Хендрикс","Dakota Johnson":"Дакота Джонсон","Doja Cat":"Doja Cat","Dua Lipa":"Дуа Липа","Elizabeth Olsen":"Элизабет Олсен","Emily Ratajkowski":"Эмили Ратаковски","Emma Stone":"Эмма Стоун","Emma Watson":"Эмма Уотсон","Eva Green":"Ева Грин","Eva Mendes":"Ева Мендес","Florence Pugh":"Флоренс Пью","Gal Gadot":"Галь Гадот","Gigi Hadid":"Джиджи Хадид","Gisele Bündchen":"Жизель Бюндхен","Hailey Bieber":"Хейли Бибер","Halle Berry":"Хэлли Берри","Irina Shayk":"Ирина Шейк","Jenna Ortega":"Дженна Ортега","Jennifer Aniston":"Дженнифер Энистон","Jennifer Connelly":"Дженнифер Коннелли","Jennifer Lawrence":"Дженнифер Лоуренс","Jennifer Lopez":"Дженнифер Лопес","Jessica Alba":"Джессика Альба","Jessica Chastain":"Джессика Честейн","Julia Roberts":"Джулия Робертс","Kate Beckinsale":"Кейт Бекинсейл","Keira Knightley":"Кира Найтли","Kendall Jenner":"Кендалл Дженнер","Kim Kardashian":"Ким Кардашьян","Kristen Stewart":"Кристен Стюарт","Kylie Jenner":"Кайли Дженнер","Lady Gaga":"Леди Гага","Margot Robbie":"Марго Робби","Megan Fox":"Меган Фокс","Mila Kunis":"Мила Кунис","Monica Bellucci":"Моника Беллуччи","Natalie Portman":"Натали Портман","Nicole Kidman":"Николь Кидман","Olivia Wilde":"Оливия Уайлд","Penélope Cruz":"Пенелопа Крус","Rihanna":"Рианна","Salma Hayek":"Сальма Хайек","Scarlett Johansson":"Скарлетт Йоханссон","Selena Gomez":"Селена Гомес","Shakira":"Шакира","Sydney Sweeney":"Сидни Суини","Taylor Swift":"Тейлор Свифт","Zendaya":"Зендая","Zoe Kravitz":"Зои Кравиц","Zoe Saldana":"Зои Салдана"};
|
| 2142 |
const cc_m = {"Caleb McLaughlin (Stranger Things)":"Калеб Маклафлин","Daniel Radcliffe (Harry Potter)":"Дэниел Рэдклифф","Finn Wolfhard (Stranger Things)":"Финн Вулфхард","Gaten Matarazzo (Stranger Things)":"Гейте�� Матараццо","Iain Armitage (Young Sheldon)":"Иэн Армитидж","Jacob Tremblay":"Джейкоб Трамбле","Jaden Smith":"Джейден Смит","Macaulay Culkin (Home Alone)":"Маколей Калкин","Noah Schnapp (Stranger Things)":"Ноа Шнапп","Walker Scobell (The Adam Project)":"Уокер Скобелл"};
|
| 2143 |
const cc_f = {"Dakota Fanning":"Дакота Фаннинг","Elle Fanning":"Эль Фаннинг","Emma Watson (Harry Potter)":"Эмма Уотсон","Mckenna Grace":"Маккенна Грейс","Millie Bobby Brown (Stranger Things)":"Милли Бобби Браун","North West":"Норт Уэст","Sadie Sink (Stranger Things)":"Сэди Синк","Storm Reid (A Wrinkle in Time)":"Сторм Рид","Suri Cruise":"Сури Круз"};
|
| 2144 |
|
|
|
|
| 2184 |
logoOverlayCheck: "С логотипом", logoOverlayPlaceholder: "Опишите логотип, например: 'белый минималистичный текст Synkris в правом нижнем углу'",
|
| 2185 |
launchBtn: "Launch Synkris", copied_launching: "ПРОМПТ СКОПИРОВАН. ЗАПУСК... 🚀", copy_failed: "Не удалось скопировать. Промпт в консоли разработчика.",
|
| 2186 |
your_prompt: "Ваш промпт:", resetModelSettingsBtn: "Сбросить настройки модели", resetConfirm: "Вы уверены, что хотите сбросить настройки модели до значений по умолчанию?",
|
| 2187 |
+
wan27Check: "Wan 2.7 (Короткий промпт)", wan27Tooltip: 'вы можете отметить этот параметр и пользоваться новым видом качества , в поле выбора качества в поиске напишите "27" и у вас выйдет wan 2.7 image pro',
|
| 2188 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Селфи в лифте', 'car_interior_lifestyle': 'В салоне авто', 'golden_hour_field': 'Золотой час в поле', 'messy_bedroom_morning': 'Утро в спальне', 'vintage_35mm_film': 'Винтажная пленка', 'paparazzi_street_flash': 'Папарацци-вспышка', 'cafe_window_contemplation': 'У окна в кафе', 'rooftop_party_sunset': 'Вечеринка на крыше', 'bookstore_aisle_cozy': 'Книжный магазин', 'custom_background_fusion': 'Свой фон (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Лес', 'desert_expedition': 'Пустыня', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Дворец', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Рынок', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Дом', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Дождь', 'night_flash': 'Ночь (вспышка)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2189 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Природа', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Всплеск', 'handmade': 'Мастерская', 'alaska_winter': 'Аляска (зима)', 'football_field': 'Футбольное поле', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Солончак (Боливия)', 'highlands_majesty': 'Нагорье (Шотландия)'},
|
| 2190 |
female_body_types: {'standard': 'Стандартное', 'very_slim': 'Очень стройное (модель)', 'slim': 'Стройное (натуральное)', 'slim_busty': 'Стройное с пышной грудью', 'athletic': 'Атлетичное', 'petite': 'Миниатюрное', 'hourglass': 'Песочные часы', 'fit_curvy': 'Спортивное (curvy)', 'plus_size': 'Пышные', 'curvy': 'Мягкое (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Беременная (одежда для беременных)'},
|
|
|
|
| 2240 |
logoOverlayCheck: "Логотиппен", logoOverlayPlaceholder: "Логотипті сипаттаңыз, мысалы: 'оң жақ төменгі бұрыштағы Synkris ақ минималистік мәтіні'",
|
| 2241 |
launchBtn: "Synkris іске қосу", copied_launching: "ПРОМПТ КӨШІРІЛДІ. ІСКЕ ҚОСУ... 🚀", copy_failed: "Көшіру мүмкін болмады. Промпт әзірлеуші консолінде.",
|
| 2242 |
your_prompt: "Сіздің промптыңыз:", resetModelSettingsBtn: "Модель баптауларын қалпына келтіру", resetConfirm: "Модель баптауларын әдепкі мәндерге қайтарғыңыз келетініне сенімдісіз бе?",
|
| 2243 |
+
wan27Check: "Wan 2.7 (Қысқа промпт)", wan27Tooltip: 'Бұл параметрді белгілеп, жаңа сапа түрін пайдалана аласыз, іздеу жолағына "27" деп жазыңыз, сонда wan 2.7 image pro шығады',
|
| 2244 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонында', 'golden_hour_field': 'Алтын сағат', 'messy_bedroom_morning': 'Жатын бөлме', 'vintage_35mm_film': 'Винтаж пленка', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Шатырдағы кеш', 'bookstore_aisle_cozy': 'Кітап дүкені', 'custom_background_fusion': 'Өз фоныңыз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Орман', 'desert_expedition': 'Шөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жаңбыр', 'night_flash': 'Түн (жарқыл)', 'tropical_resort': 'Курорт', 'beach': 'Жағажай', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2245 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Табиғат', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Шашырау', 'handmade': 'Шеберхана', 'alaska_winter': 'Аляска (қыс)', 'football_field': 'Футбол алаңы', 'volcanic_ash_desert': 'Жанартау (Исландия)', 'salt_flats_mirage': 'Тұзды алқап (Боливия)', 'highlands_majesty': 'Таулы аймақ (Шотландия)'},
|
| 2246 |
female_body_types: {'standard': 'Стандартты', 'very_slim': 'Өте сымбатты (модель)', 'slim': 'Сымбатты (табиғи)', 'slim_busty': 'Сымбатты, үлкен кеуделі', 'athletic': 'Атлетикалық', 'petite': 'Кішкентай', 'hourglass': 'Құм сағат', 'fit_curvy': 'Спорттық (curvy)', 'plus_size': 'Толық', 'curvy': 'Жұмсақ (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Жүкті (жүкті әйелдерге арналған киім)'},
|
|
|
|
| 2296 |
logoOverlayCheck: "Логотип менен", logoOverlayPlaceholder: "Логотипти сүрөттөп бериңиз, мисалы: 'оң жак төмөнкү бурчтагы Synkris ак минималисттик тексти'",
|
| 2297 |
launchBtn: "Synkris ишке киргизүү", copied_launching: "ПРОМПТ КӨЧҮРҮЛДҮ. ИШКЕ КИРГИЗҮҮ... 🚀", copy_failed: "Көчүрүү мүмкүн болбоду. Промпт иштеп чыгуучунун консолунда.",
|
| 2298 |
your_prompt: "Сиздин промптуңуз:", resetModelSettingsBtn: "Моделдин жөндөөлөрүн баштапкы абалга келтирүү", resetConfirm: "Моделдин жөндөөлөрүн баштапкы абалга келтирүүнү каалайсызбы?",
|
| 2299 |
+
wan27Check: "Wan 2.7 (Кыска промпт)", wan27Tooltip: 'Бул параметрди белгилеп, жаңы сапат түрүн колдоно аласыз, издөө тилкесине "27" деп жазыңыз, ошондо wan 2.7 image pro чыгат',
|
| 2300 |
flagship_styles: {'studio': 'Студия (люкс)', 'product_focus_light': 'Маркетплейс', 'street': 'Стрит-стайл', 'lookbook': 'Лукбук', 'minimalism': 'Минимализм', 'urban_loft_lifestyle': 'Лофт', 'elevator_mirror_selfie': 'Лифттегі селфи', 'car_interior_lifestyle': 'Авто салонунда', 'golden_hour_field': 'Алтын саат', 'messy_bedroom_morning': 'Уктоочу бөлмө', 'vintage_35mm_film': 'Винтаж пленкасы', 'paparazzi_street_flash': 'Папарацци', 'cafe_window_contemplation': 'Кафеде', 'rooftop_party_sunset': 'Чатырдагы кече', 'bookstore_aisle_cozy': 'Китеп дүкөнү', 'custom_background_fusion': 'Өз фонуңуз (профи)', 'polaroid_snapshot': 'Полароид', 'creative': 'Креатив', 'retro': 'Ретро', 'boho': 'Бохо', 'forest_nymph': 'Токой', 'desert_expedition': 'Чөл', 'gothic': 'Готика', 'editorial': 'Эдиториал', 'film_noir': 'Нуар', 'cottagecore': 'Коттеджкор', 'royalcore': 'Сарай', 'solarpunk': 'Соларпанк', 'skater': 'Скейтер', 'vibrant_market': 'Базар', 'cyberpunk': 'Киберпанк', 'fantasy': 'Фэнтези', 'surreal_dreamscape': 'Сюрреализм', 'techwear': 'Techwear', 'home_casual': 'Үй', 'backstage': 'Бэкстейдж', 'road_trip': 'Роуд-трип', 'rainy_day': 'Жамгыр', 'night_flash': 'Түн (жарк)', 'tropical_resort': 'Курорт', 'beach': 'Пляж', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2301 |
object_styles: {'studio': 'Студия', 'minimalism': 'Минимализм', 'nature': 'Жаратылыш', 'luxe': 'Люкс', 'dark': 'Драма', 'geometric': 'Геометрия', 'floating': 'Левитация', 'lifestyle': 'Лайфстайл', 'splash': 'Чачыроо', 'handmade': 'Устакана', 'alaska_winter': 'Аляска (кыш)', 'football_field': 'Футбол талаасы', 'volcanic_ash_desert': 'Вулкан (Исландия)', 'salt_flats_mirage': 'Туздуу түздүк (Боливия)', 'highlands_majesty': 'Тоолуу аймак (Шотландия)'},
|
| 2302 |
female_body_types: {'standard': 'Стандарттуу', 'very_slim': 'Абдан сымбаттуу (модель)', 'slim': 'Сымбаттуу (табигый)', 'slim_busty': 'Сымбаттуу, чоң төштүү', 'athletic': 'Атлетикалык', 'petite': 'Кичинекей', 'hourglass': 'Кум саат', 'fit_curvy': 'Спорттук (curvy)', 'plus_size': 'Толук', 'curvy': 'Жумшак (curvy)', 'full_figured': 'Плюс-сайз', 'pregnant': 'Кош бойлуу (кош бойлуулар үчүн кийим)'},
|
|
|
|
| 2310 |
tattoo_styles: {"Scandinavian": "Скандинавиялык", "Polynesian": "Полинезиялык", "Japanese (Irezumi)": "Япон (Ирэдзуми)", "American Traditional": "Америкалык салттуу", "Blackwork": "Блэкворк", "Geometric": "Геометриялык", "Fine-line": "Ичке сызык", "Surrealism": "Сюрреализм", "Neo-Traditional": "Нео-салттуу"},
|
| 2311 |
tattoo_coverages: {"a few small tattoos": "Бир нече кичинекей", "sleeve on one arm": "Бир колдогу жең", "full sleeves on both arms": "Эки колдогу жеңдер", "chest piece": "Көкүрөктө", "back piece": "Аркада", "heavily tattooed": "Көп чийилген", "fully covered": "Толугу менен капталган"},
|
| 2312 |
celebrities_male: c_m, celebrities_female: c_f, child_celebrities_male: cc_m, child_celebrities_female: cc_f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2313 |
}
|
| 2314 |
};
|
| 2315 |
|
| 2316 |
const fieldsToPersist = [
|
| 2317 |
'gender', 'age', 'nationality', 'bodyType', 'hairColor', 'hairstyle', 'eyeColor',
|
| 2318 |
'hasBeard_model', 'beardStyle_model', 'hasTattoos_model', 'tattooStyle_model', 'tattooCoverage_model',
|
| 2319 |
+
'shotType', 'viewAngle', 'pose', 'wan27Check_model',
|
| 2320 |
'child_gender', 'child_age', 'child_nationality', 'child_hairColor', 'child_hairstyle', 'child_eyeColor',
|
| 2321 |
+
'child_shotType', 'child_viewAngle', 'child_pose', 'wan27Check_children',
|
| 2322 |
'object_gender', 'object_age', 'object_nationality', 'object_bodyType', 'object_hairColor', 'object_hairstyle', 'object_eyeColor',
|
| 2323 |
'hasBeard_object', 'beardStyle_object', 'hasTattoos_object', 'tattooStyle_object', 'tattooCoverage_object',
|
| 2324 |
+
'object_shotType', 'wan27Check_object', 'objectFurnitureCheck',
|
| 2325 |
'cosmetics_gender', 'cosmetics_age', 'cosmetics_nationality', 'cosmetics_bodyType', 'cosmetics_hairColor', 'cosmetics_hairstyle', 'cosmetics_eyeColor',
|
| 2326 |
'hasBeard_cosmetics', 'beardStyle_cosmetics', 'hasTattoos_cosmetics', 'tattooStyle_cosmetics', 'tattooCoverage_cosmetics',
|
| 2327 |
+
'cosmetics_shotType', 'wan27Check_cosmetics'
|
| 2328 |
];
|
| 2329 |
|
| 2330 |
function saveSettings() {
|
|
|
|
| 2634 |
const isOwnModel = document.getElementById('ownModelCheck').checked;
|
| 2635 |
const isCelebrity = document.getElementById('celebrityCheck').checked;
|
| 2636 |
const wantsMarketplace = document.getElementById('marketplaceCheck_model').checked;
|
| 2637 |
+
const isWan27 = document.getElementById('wan27Check_model') && document.getElementById('wan27Check_model').checked;
|
| 2638 |
const styleKey = document.querySelector('#styleSelector .style-btn.active').dataset.value;
|
| 2639 |
aspectRatio = document.querySelector('#aspectRatioSelectorModel .aspect-ratio-btn.active').dataset.value;
|
| 2640 |
|
| 2641 |
+
if (isWan27) {
|
| 2642 |
+
const clothingDetails = document.getElementById('model_details').value || "highly detailed clothing";
|
| 2643 |
+
const additionalPromptWan = document.getElementById('additional_prompt').value;
|
| 2644 |
+
const pose = document.getElementById('pose').value;
|
| 2645 |
+
const shotType = document.getElementById('shotType').value;
|
| 2646 |
+
const viewAngle = document.getElementById('viewAngle').value;
|
| 2647 |
+
|
| 2648 |
+
let shortPrompt = "High-end fashion editorial photography. ";
|
| 2649 |
+
|
| 2650 |
+
if (isCelebrity) {
|
| 2651 |
+
shortPrompt += "Model: flawless lookalike of " + document.getElementById('celebrityName').value + ". ";
|
| 2652 |
+
} else if (!isOwnModel) {
|
| 2653 |
+
const age = document.getElementById('age').value;
|
| 2654 |
+
const gender = document.getElementById('gender').value;
|
| 2655 |
+
const nationality = document.getElementById('nationality').value.toLowerCase();
|
| 2656 |
+
const bodyType = document.getElementById('bodyType').value;
|
| 2657 |
+
const hairColor = document.getElementById('hairColor').value;
|
| 2658 |
+
const hairstyle = document.getElementById('hairstyle').value;
|
| 2659 |
+
const eyeColor = document.getElementById('eyeColor').value;
|
| 2660 |
+
|
| 2661 |
+
shortPrompt += `Model: ${age} ${nationality} ${gender}, ${bodyType} body, ${hairColor} ${hairstyle}, ${eyeColor}. `;
|
| 2662 |
+
if (document.getElementById('bodyType').value === 'pregnant') shortPrompt += "(pregnant) ";
|
| 2663 |
+
if (gender === 'male' && document.getElementById('hasBeard_model').checked) shortPrompt += "With a " + document.getElementById('beardStyle_model').value + ". ";
|
| 2664 |
+
if (document.getElementById('hasTattoos_model').checked) shortPrompt += "With tattoos (" + document.getElementById('tattooCoverage_model').value + ", " + document.getElementById('tattooStyle_model').value + " style). ";
|
| 2665 |
+
} else {
|
| 2666 |
+
shortPrompt += "Model: Human model. ";
|
| 2667 |
+
}
|
| 2668 |
+
|
| 2669 |
+
shortPrompt += `Wearing: ${clothingDetails}. `;
|
| 2670 |
+
shortPrompt += `Shot as ${shotType}, from ${viewAngle}, posing: ${pose}. `;
|
| 2671 |
+
shortPrompt += `Setting: ${styleKey.replace(/_/g, ' ')} environment. Cinematic studio lighting, ultra-detailed masterpiece. FLAWLESS ANATOMY: Perfect human body, exactly two arms, two legs, perfect hands and fingers, no deformations. `;
|
| 2672 |
+
|
| 2673 |
+
if (aspectRatio.includes("9:16")) shortPrompt += "Strictly vertical 9:16 composition, perfectly framed for vertical portrait format. ";
|
| 2674 |
+
else if (aspectRatio.includes("16:9")) shortPrompt += "Cinematic horizontal 16:9 composition perfectly framed. ";
|
| 2675 |
+
else if (aspectRatio.includes("1:1")) shortPrompt += "Square 1:1 format perfectly framed. ";
|
| 2676 |
+
else if (aspectRatio.includes("3:4")) shortPrompt += "Vertical 3:4 portrait orientation perfectly framed. ";
|
| 2677 |
+
|
| 2678 |
+
let addOns = [];
|
| 2679 |
+
if (additionalPromptWan) addOns.push(additionalPromptWan);
|
| 2680 |
+
if (document.getElementById('detailsCollage').checked) addOns.push("formatted as a split-screen collage with close-up macro shots of clothing details");
|
| 2681 |
+
if (document.getElementById('anglesCollage').checked) addOns.push("formatted as a multi-panel collage showing different angles (front, back, side)");
|
| 2682 |
+
if (document.getElementById('variantsCollage').checked) addOns.push("formatted as a collage showing all color variants explicitly present in the reference image (strictly no duplicates, no omissions, and no hallucinated colors)");
|
| 2683 |
+
|
| 2684 |
+
const wantsTextOverlay = document.getElementById('textOverlayCheck').checked;
|
| 2685 |
+
const textToOverlay = document.getElementById('textOverlayInput').value.trim();
|
| 2686 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_model').checked;
|
| 2687 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_model').value.trim();
|
| 2688 |
+
|
| 2689 |
+
if (wantsTextOverlay && textToOverlay) addOns.push(`incorporating stylish text overlay that says "${textToOverlay}"`);
|
| 2690 |
+
if (wantsLogoOverlay && logoToOverlay) addOns.push(`incorporating a logo (${logoToOverlay})`);
|
| 2691 |
+
|
| 2692 |
+
if (addOns.length > 0) shortPrompt += " " + addOns.join(", ") + ". ";
|
| 2693 |
+
shortPrompt += aspectRatio;
|
| 2694 |
+
return `${shortPrompt.replace(/\s+/g, ' ').trim()}`;
|
| 2695 |
+
}
|
| 2696 |
+
|
| 2697 |
prompt = isOwnModel ? promptsData.base_prompts.model_base_own_model : promptsData.base_prompts.model_base;
|
| 2698 |
const stylePrompt = promptsData.flagship_styles[styleKey];
|
| 2699 |
const shotType = document.getElementById('shotType').value;
|
|
|
|
| 2763 |
} else if (currentMode === 'children') {
|
| 2764 |
const isChildCelebrity = document.getElementById('childCelebrityCheck').checked;
|
| 2765 |
const wantsMarketplace = document.getElementById('marketplaceCheck_children').checked;
|
| 2766 |
+
const isWan27 = document.getElementById('wan27Check_children') && document.getElementById('wan27Check_children').checked;
|
| 2767 |
const styleKey = document.querySelector('#childStyleSelector .style-btn.active').dataset.value;
|
| 2768 |
aspectRatio = document.querySelector('#aspectRatioSelectorChildren .aspect-ratio-btn.active').dataset.value;
|
| 2769 |
|
| 2770 |
+
if (isWan27) {
|
| 2771 |
+
const additionalPromptWan = document.getElementById('child_additional_prompt').value;
|
| 2772 |
+
let shortPrompt = "High-end child fashion photography. ";
|
| 2773 |
+
const pose = document.getElementById('child_pose').value;
|
| 2774 |
+
const shotType = document.getElementById('child_shotType').value;
|
| 2775 |
+
const viewAngle = document.getElementById('child_viewAngle').value;
|
| 2776 |
+
const clothingDetails = document.getElementById('child_details').value || "highly detailed clothing";
|
| 2777 |
+
|
| 2778 |
+
if (isChildCelebrity) {
|
| 2779 |
+
shortPrompt += "Model: flawless lookalike of " + document.getElementById('childCelebrityName').value + ". ";
|
| 2780 |
+
} else {
|
| 2781 |
+
const age = document.getElementById('child_age').value;
|
| 2782 |
+
const gender = document.getElementById('child_gender').value;
|
| 2783 |
+
const nationality = document.getElementById('child_nationality').value.toLowerCase();
|
| 2784 |
+
const hairColor = document.getElementById('child_hairColor').value;
|
| 2785 |
+
const hairstyle = document.getElementById('child_hairstyle').value;
|
| 2786 |
+
const eyeColor = document.getElementById('child_eyeColor').value;
|
| 2787 |
+
shortPrompt += `Model: ${age} ${nationality} ${gender} child, ${hairColor} ${hairstyle}, ${eyeColor}. `;
|
| 2788 |
+
}
|
| 2789 |
+
|
| 2790 |
+
shortPrompt += `Wearing: ${clothingDetails}. `;
|
| 2791 |
+
shortPrompt += `Shot as ${shotType}, from ${viewAngle}, action: ${pose}. `;
|
| 2792 |
+
shortPrompt += `Setting: ${styleKey.replace(/_/g, ' ')} environment. Joyful and beautiful atmosphere, cinematic lighting, ultra-detailed masterpiece. FLAWLESS ANATOMY: Perfect human body, exactly two arms, two legs, perfect hands and fingers, no deformations. `;
|
| 2793 |
+
|
| 2794 |
+
if (aspectRatio.includes("9:16")) shortPrompt += "Strictly vertical 9:16 composition perfectly framed. ";
|
| 2795 |
+
else if (aspectRatio.includes("16:9")) shortPrompt += "Cinematic horizontal 16:9 composition perfectly framed. ";
|
| 2796 |
+
else if (aspectRatio.includes("1:1")) shortPrompt += "Square 1:1 format perfectly framed. ";
|
| 2797 |
+
else if (aspectRatio.includes("3:4")) shortPrompt += "Vertical 3:4 portrait orientation perfectly framed. ";
|
| 2798 |
+
|
| 2799 |
+
let addOns = [];
|
| 2800 |
+
if (additionalPromptWan) addOns.push(additionalPromptWan);
|
| 2801 |
+
if (document.getElementById('child_detailsCollage').checked) addOns.push("formatted as a split-screen collage with close-up macro shots of clothing details");
|
| 2802 |
+
if (document.getElementById('child_anglesCollage').checked) addOns.push("formatted as a multi-panel collage showing different angles (front, back, side)");
|
| 2803 |
+
if (document.getElementById('child_variantsCollage').checked) addOns.push("formatted as a collage showing all color variants explicitly present in the reference image (strictly no duplicates, no omissions, and no hallucinated colors)");
|
| 2804 |
+
|
| 2805 |
+
const wantsTextOverlay = document.getElementById('child_textOverlayCheck').checked;
|
| 2806 |
+
const textToOverlay = document.getElementById('child_textOverlayInput').value.trim();
|
| 2807 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_children').checked;
|
| 2808 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_children').value.trim();
|
| 2809 |
+
|
| 2810 |
+
if (wantsTextOverlay && textToOverlay) addOns.push(`incorporating stylish text overlay that says "${textToOverlay}"`);
|
| 2811 |
+
if (wantsLogoOverlay && logoToOverlay) addOns.push(`incorporating a logo (${logoToOverlay})`);
|
| 2812 |
+
|
| 2813 |
+
if (addOns.length > 0) shortPrompt += " " + addOns.join(", ") + ". ";
|
| 2814 |
+
shortPrompt += aspectRatio;
|
| 2815 |
+
return `${shortPrompt.replace(/\s+/g, ' ').trim()}`;
|
| 2816 |
+
}
|
| 2817 |
+
|
| 2818 |
prompt = promptsData.base_prompts.children_base;
|
| 2819 |
const stylePrompt = promptsData.flagship_styles[styleKey];
|
| 2820 |
const clothingDetails = document.getElementById('child_details').value || "the provided clothing";
|
|
|
|
| 2875 |
const wantsMarketplace = document.getElementById('marketplaceCheck_object').checked;
|
| 2876 |
const isFurniture = document.getElementById('objectFurnitureCheck') && document.getElementById('objectFurnitureCheck').checked;
|
| 2877 |
const objectName = document.getElementById('object_name').value || "the product";
|
| 2878 |
+
const isWan27 = document.getElementById('wan27Check_object') && document.getElementById('wan27Check_object').checked;
|
| 2879 |
const styleKey = document.querySelector('#objectStyleSelector .style-btn.active').dataset.value;
|
| 2880 |
const stylePrompt = promptsData.object_styles[styleKey];
|
| 2881 |
additionalPrompt = document.getElementById('object_additional_prompt').value;
|
| 2882 |
aspectRatio = document.querySelector('#aspectRatioSelectorObject .aspect-ratio-btn.active').dataset.value;
|
| 2883 |
|
| 2884 |
+
if (isWan27) {
|
| 2885 |
+
const additionalPromptWan = document.getElementById('object_additional_prompt').value;
|
| 2886 |
+
let shortPrompt = "Award-winning commercial product photography, extremely beautiful, highly aesthetic and visually striking. ";
|
| 2887 |
+
|
| 2888 |
+
if (isFurniture) {
|
| 2889 |
+
shortPrompt += "Product is interior furniture or a rug, shown in full accurate real-world dimensions. ";
|
| 2890 |
+
}
|
| 2891 |
+
|
| 2892 |
+
if (withModel) {
|
| 2893 |
+
const shotType = document.getElementById('object_shotType').value;
|
| 2894 |
+
if (isFurniture) {
|
| 2895 |
+
shortPrompt += `Model is interacting with the furniture/rug (${objectName}). `;
|
| 2896 |
+
} else {
|
| 2897 |
+
shortPrompt += `Model holding the product (${objectName}). `;
|
| 2898 |
+
}
|
| 2899 |
+
if (document.getElementById('objectCelebrityCheck').checked) {
|
| 2900 |
+
shortPrompt += `Model is a flawless ${document.getElementById('objectCelebrityName').value} lookalike. `;
|
| 2901 |
+
}
|
| 2902 |
+
shortPrompt += `Shot as ${shotType}. `;
|
| 2903 |
+
if (isFurniture) {
|
| 2904 |
+
shortPrompt += "Model is sitting, standing, or lounging naturally on the furniture. Perfect real-world scale and full dimensions. ";
|
| 2905 |
+
} else {
|
| 2906 |
+
shortPrompt += "Hands perfectly placed, natural interaction. ";
|
| 2907 |
+
}
|
| 2908 |
+
shortPrompt += "FLAWLESS ANATOMY: Perfect human body, exactly two arms, two legs, perfect hands and fingers, no deformations. ";
|
| 2909 |
+
} else if (onMannequin) {
|
| 2910 |
+
shortPrompt += `Product: ${objectName}, displayed beautifully on a high-end headless mannequin. `;
|
| 2911 |
+
} else {
|
| 2912 |
+
shortPrompt += `Product: ${objectName}. Masterfully positioned in the center of the frame, perfect angles. `;
|
| 2913 |
+
}
|
| 2914 |
+
|
| 2915 |
+
shortPrompt += `Setting: ${styleKey.replace(/_/g, ' ')} environment. Professional cinematic lighting, stunning reflections, sharp focus, masterpiece, 8k resolution. `;
|
| 2916 |
+
|
| 2917 |
+
if (aspectRatio.includes("9:16")) shortPrompt += "Strictly vertical 9:16 composition, perfectly centered. ";
|
| 2918 |
+
else if (aspectRatio.includes("16:9")) shortPrompt += "Cinematic horizontal 16:9 composition perfectly framed. ";
|
| 2919 |
+
else if (aspectRatio.includes("1:1")) shortPrompt += "Square 1:1 format perfectly framed. ";
|
| 2920 |
+
else if (aspectRatio.includes("3:4")) shortPrompt += "Vertical 3:4 portrait orientation perfectly framed. ";
|
| 2921 |
+
|
| 2922 |
+
let addOns = [];
|
| 2923 |
+
if (additionalPromptWan) addOns.push(additionalPromptWan);
|
| 2924 |
+
if (document.getElementById('object_detailsCollage').checked) addOns.push("formatted as a split-screen collage with close-up macro shots of material details");
|
| 2925 |
+
if (document.getElementById('object_anglesCollage').checked) addOns.push("formatted as a multi-panel collage showing different angles (front, back, side)");
|
| 2926 |
+
if (document.getElementById('object_variantsCollage').checked) addOns.push("formatted as a collage showing all product color variants explicitly present in the reference image (strictly no duplicates, no omissions, and no hallucinated colors)");
|
| 2927 |
+
|
| 2928 |
+
const wantsTextOverlay = document.getElementById('object_textOverlayCheck').checked;
|
| 2929 |
+
const textToOverlay = document.getElementById('object_textOverlayInput').value.trim();
|
| 2930 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_object').checked;
|
| 2931 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_object').value.trim();
|
| 2932 |
+
|
| 2933 |
+
if (wantsTextOverlay && textToOverlay) addOns.push(`incorporating stylish text overlay that says "${textToOverlay}"`);
|
| 2934 |
+
if (wantsLogoOverlay && logoToOverlay) addOns.push(`incorporating a logo (${logoToOverlay})`);
|
| 2935 |
+
|
| 2936 |
+
if (addOns.length > 0) shortPrompt += " " + addOns.join(", ") + ". ";
|
| 2937 |
+
shortPrompt += aspectRatio;
|
| 2938 |
+
return `${shortPrompt.replace(/\s+/g, ' ').trim()}`;
|
| 2939 |
+
}
|
| 2940 |
+
|
| 2941 |
if (withModel) {
|
| 2942 |
prompt = promptsData.base_prompts.model_base;
|
| 2943 |
const isCelebrity = document.getElementById('objectCelebrityCheck').checked;
|
|
|
|
| 3023 |
|
| 3024 |
} else if (currentMode === 'cosmetics') {
|
| 3025 |
const wantsMarketplace = document.getElementById('marketplaceCheck_cosmetics').checked;
|
| 3026 |
+
const isWan27 = document.getElementById('wan27Check_cosmetics') && document.getElementById('wan27Check_cosmetics').checked;
|
| 3027 |
const cosmeticsName = document.getElementById('cosmetics_name').value || "the cosmetic product";
|
| 3028 |
const styleKey = document.querySelector('#cosmeticsStyleSelector .style-btn.active').dataset.value;
|
| 3029 |
const stylePrompt = promptsData.object_styles[styleKey];
|
| 3030 |
additionalPrompt = document.getElementById('cosmetics_additional_prompt').value;
|
| 3031 |
aspectRatio = document.querySelector('#aspectRatioSelectorCosmetics .aspect-ratio-btn.active').dataset.value;
|
| 3032 |
|
| 3033 |
+
if (isWan27) {
|
| 3034 |
+
const additionalPromptWan = document.getElementById('cosmetics_additional_prompt').value;
|
| 3035 |
+
let shortPrompt = "High-end cosmetics beauty campaign photography. ";
|
| 3036 |
+
const shotType = document.getElementById('cosmetics_shotType').value;
|
| 3037 |
+
|
| 3038 |
+
shortPrompt += `Product: ${cosmeticsName}. `;
|
| 3039 |
+
shortPrompt += `Model applying the product, shot as ${shotType}. `;
|
| 3040 |
+
if (document.getElementById('cosmeticsCelebrityCheck').checked) {
|
| 3041 |
+
shortPrompt += `Model is a flawless ${document.getElementById('cosmeticsCelebrityName').value} lookalike. `;
|
| 3042 |
+
}
|
| 3043 |
+
shortPrompt += `Setting: ${styleKey.replace(/_/g, ' ')} environment. Soft beauty lighting, highly aesthetic, masterpiece, 8k resolution. FLAWLESS ANATOMY: Perfect human body, exactly two arms, two legs, perfect hands and fingers, no deformations. `;
|
| 3044 |
+
|
| 3045 |
+
if (aspectRatio.includes("9:16")) shortPrompt += "Strictly vertical 9:16 portrait composition, perfect framing. ";
|
| 3046 |
+
else if (aspectRatio.includes("16:9")) shortPrompt += "Cinematic horizontal 16:9 composition perfectly framed. ";
|
| 3047 |
+
else if (aspectRatio.includes("1:1")) shortPrompt += "Square 1:1 format perfectly framed. ";
|
| 3048 |
+
else if (aspectRatio.includes("3:4")) shortPrompt += "Vertical 3:4 portrait orientation perfectly framed. ";
|
| 3049 |
+
|
| 3050 |
+
let addOns = [];
|
| 3051 |
+
if (additionalPromptWan) addOns.push(additionalPromptWan);
|
| 3052 |
+
if (document.getElementById('cosmetics_detailsCollage').checked) addOns.push("formatted as a split-screen collage with close-up macro shots of product texture and smears");
|
| 3053 |
+
if (document.getElementById('cosmetics_anglesCollage').checked) addOns.push("formatted as a multi-panel collage showing different angles");
|
| 3054 |
+
if (document.getElementById('cosmetics_variantsCollage').checked) addOns.push("formatted as a collage showing all shade variants explicitly present in the reference image (strictly no duplicates, no omissions, andno hallucinated colors)");
|
| 3055 |
+
|
| 3056 |
+
const wantsTextOverlay = document.getElementById('cosmetics_textOverlayCheck').checked;
|
| 3057 |
+
const textToOverlay = document.getElementById('cosmetics_textOverlayInput').value.trim();
|
| 3058 |
+
const wantsLogoOverlay = document.getElementById('logoOverlayCheck_cosmetics').checked;
|
| 3059 |
+
const logoToOverlay = document.getElementById('logoOverlayInput_cosmetics').value.trim();
|
| 3060 |
+
|
| 3061 |
+
if (wantsTextOverlay && textToOverlay) addOns.push(`incorporating stylish text overlay that says "${textToOverlay}"`);
|
| 3062 |
+
if (wantsLogoOverlay && logoToOverlay) addOns.push(`incorporating a logo (${logoToOverlay})`);
|
| 3063 |
+
|
| 3064 |
+
if (addOns.length > 0) shortPrompt += " " + addOns.join(", ") + ". ";
|
| 3065 |
+
shortPrompt += aspectRatio;
|
| 3066 |
+
return `${shortPrompt.replace(/\s+/g, ' ').trim()}`;
|
| 3067 |
+
}
|
| 3068 |
+
|
| 3069 |
prompt = promptsData.base_prompts.cosmetics_base;
|
| 3070 |
const isCelebrity = document.getElementById('cosmeticsCelebrityCheck').checked;
|
| 3071 |
|
|
|
|
| 3131 |
if (additionalPrompt) {
|
| 3132 |
prompt += `\\n\\n**ADDITIONAL ARTISTIC DIRECTIVES:** ${additionalPrompt}`;
|
| 3133 |
}
|
|
|
|
|
|
|
| 3134 |
|
| 3135 |
return `${prompt} ${aspectRatio}`.trim();
|
| 3136 |
}
|
|
|
|
| 3153 |
btn.querySelector('span[data-lang-key]').innerHTML = langData.copied_launching;
|
| 3154 |
|
| 3155 |
setTimeout(() => {
|
| 3156 |
+
let targetUrl = 'https://arena.ai/ru/c/new?mode=direct&chat-modality=image';
|
| 3157 |
+
window.open(targetUrl, '_blank');
|
|
|
|
| 3158 |
setTimeout(() => {
|
| 3159 |
btn.style.background = "";
|
| 3160 |
btn.querySelector('span[data-lang-key]').innerHTML = originalText;
|
|
|
|
| 3163 |
} catch (err) {
|
| 3164 |
console.error('Failed to copy: ', err);
|
| 3165 |
alert(langData.copy_failed);
|
| 3166 |
+
console.log(`${langData.your_prompt}\\n`, cleanPrompt);
|
| 3167 |
}
|
| 3168 |
}
|
| 3169 |
|
|
|
|
| 3564 |
backup_thread = threading.Thread(target=periodic_backup, daemon=True)
|
| 3565 |
backup_thread.start()
|
| 3566 |
port = int(os.environ.get('PORT', 7860))
|
| 3567 |
+
app.run(debug=False, host='0.0.0.0', port=port)
|