Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -2,7 +2,9 @@ import gradio as gr
|
|
2 |
from transformers import MarianMTModel, MarianTokenizer
|
3 |
import random
|
4 |
|
|
|
5 |
# 1) โหลดโมเดลแปล (MarianMT)
|
|
|
6 |
model_name = "Helsinki-NLP/opus-mt-th-en"
|
7 |
tokenizer = MarianTokenizer.from_pretrained(model_name)
|
8 |
model = MarianMTModel.from_pretrained(model_name)
|
@@ -16,7 +18,9 @@ def translate_th_to_en(th_text: str) -> str:
|
|
16 |
en_text = tokenizer.decode(translation_tokens[0], skip_special_tokens=True)
|
17 |
return en_text
|
18 |
|
|
|
19 |
# 2) ข้อมูล (ภาษาไทย) สำหรับ Dropdown
|
|
|
20 |
body_shapes_th = [
|
21 |
"ตัวเหนียวขยุกขยิก", "ตัวปุกปุยกลม", "ตัวเต็มไปด้วยหนาม",
|
22 |
"ตัวเล็กเหมือนแมลง", "ตัวโปร่งแสงลอยได้", "ตัวโคลนยืดหยุ่น",
|
@@ -49,7 +53,9 @@ moods_th = [
|
|
49 |
"เศร้าสร้อย", "จริงจัง", "มีความสุข", "ขี้ตกใจ"
|
50 |
]
|
51 |
|
52 |
-
#
|
|
|
|
|
53 |
def generate_monster_lab(
|
54 |
body_dd, body_tb,
|
55 |
head_dd, head_tb,
|
@@ -87,11 +93,11 @@ def generate_monster_lab(
|
|
87 |
|
88 |
return desc_th, prompt_en
|
89 |
|
90 |
-
# 3.1) ฟังก์ชันสุ่มค่าจาก Dropdown
|
91 |
def random_monster():
|
92 |
"""
|
93 |
สุ่มค่า Dropdown ทั้ง 6 หมวด, พร้อมเคลียร์ช่อง Textbox ทั้ง 6
|
94 |
"""
|
|
|
95 |
bd = random.choice(body_shapes_th)
|
96 |
hd = random.choice(heads_th)
|
97 |
ar = random.choice(arms_legs_th)
|
@@ -99,18 +105,11 @@ def random_monster():
|
|
99 |
ab = random.choice(abilities_th)
|
100 |
md = random.choice(moods_th)
|
101 |
|
102 |
-
|
103 |
-
# Dropdown = ค่าที่สุ่มได้, Textbox = ""
|
104 |
-
return (
|
105 |
-
bd, "", # body_dd, body_tb
|
106 |
-
hd, "", # head_dd, head_tb
|
107 |
-
ar, "", # arms_dd, arms_tb
|
108 |
-
sk, "", # skin_dd, skin_tb
|
109 |
-
ab, "", # ability_dd, ability_tb
|
110 |
-
md, "" # mood_dd, mood_tb
|
111 |
-
)
|
112 |
|
|
|
113 |
# 4) สร้าง UI Gradio
|
|
|
114 |
css_code = """
|
115 |
body {
|
116 |
background-color: #FFF7EA;
|
@@ -132,8 +131,9 @@ body {
|
|
132 |
border-radius: 10px;
|
133 |
padding: 15px;
|
134 |
color: #333;
|
|
|
135 |
}
|
136 |
-
.
|
137 |
background-color: #FFC107;
|
138 |
border: 2px solid #FFA000;
|
139 |
font-weight: bold;
|
@@ -142,8 +142,18 @@ body {
|
|
142 |
border-radius: 10px;
|
143 |
margin-right: 10px;
|
144 |
}
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
148 |
#desc-th, #prompt-en {
|
149 |
background-color: #FFFAE6;
|
@@ -155,9 +165,8 @@ body {
|
|
155 |
"""
|
156 |
|
157 |
def initial_text():
|
158 |
-
return "ยังไม่ได้สร้างมอนสเตอร์ ลองเลือกหรือพิมพ์ แล้วกด 'สร้างมอนสเตอร์!'
|
159 |
|
160 |
-
# สร้างปุ่ม Copy ด้วย HTML + JS
|
161 |
copy_button_html = """
|
162 |
<button style="background-color: #F06292; border: 2px solid #E91E63; font-weight: bold;
|
163 |
font-size: 1.1rem; padding: 10px 20px; border-radius: 10px;"
|
@@ -183,10 +192,9 @@ with gr.Blocks(css=css_code) as demo:
|
|
183 |
gr.Markdown("""
|
184 |
<div class="game-desc">
|
185 |
<p>หนูน้อยจ๊ะ เลือกได้ว่าจะใช้ค่าใน <strong>Dropdown</strong> หรือจะ <strong>พิมพ์เอง</strong></p>
|
186 |
-
<p
|
187 |
-
<p>เมื่อพร้อมแล้ว
|
188 |
-
<p
|
189 |
-
<p><strong>ZenityX</strong> ยินดีต้อนรับทุกคนจ้า!</p>
|
190 |
</div>
|
191 |
""")
|
192 |
|
@@ -213,16 +221,17 @@ with gr.Blocks(css=css_code) as demo:
|
|
213 |
mood_tb = gr.Textbox(label="หรือพิมพ์เอง", placeholder="ขี้เล่นเป็นพิเศษ...")
|
214 |
|
215 |
with gr.Row():
|
216 |
-
|
217 |
-
create_btn = gr.Button("สร้างมอนสเตอร์!", elem_classes="
|
|
|
|
|
218 |
|
219 |
monster_desc_th = gr.Textbox(label="รายละเอียด (ภาษาไทย)", interactive=False, elem_id="desc-th")
|
220 |
monster_prompt_en = gr.Textbox(label="Prompt (English)", interactive=False, elem_id="prompt-en")
|
221 |
|
222 |
-
# ปุ่ม Copy Prompt (HTML + JS)
|
223 |
gr.HTML(copy_button_html)
|
224 |
|
225 |
-
#
|
226 |
random_btn.click(
|
227 |
fn=random_monster,
|
228 |
inputs=[],
|
@@ -236,7 +245,7 @@ with gr.Blocks(css=css_code) as demo:
|
|
236 |
]
|
237 |
)
|
238 |
|
239 |
-
#
|
240 |
create_btn.click(
|
241 |
fn=generate_monster_lab,
|
242 |
inputs=[
|
|
|
2 |
from transformers import MarianMTModel, MarianTokenizer
|
3 |
import random
|
4 |
|
5 |
+
# ---------------------------
|
6 |
# 1) โหลดโมเดลแปล (MarianMT)
|
7 |
+
# ---------------------------
|
8 |
model_name = "Helsinki-NLP/opus-mt-th-en"
|
9 |
tokenizer = MarianTokenizer.from_pretrained(model_name)
|
10 |
model = MarianMTModel.from_pretrained(model_name)
|
|
|
18 |
en_text = tokenizer.decode(translation_tokens[0], skip_special_tokens=True)
|
19 |
return en_text
|
20 |
|
21 |
+
# ---------------------------
|
22 |
# 2) ข้อมูล (ภาษาไทย) สำหรับ Dropdown
|
23 |
+
# ---------------------------
|
24 |
body_shapes_th = [
|
25 |
"ตัวเหนียวขยุกขยิก", "ตัวปุกปุยกลม", "ตัวเต็มไปด้วยหนาม",
|
26 |
"ตัวเล็กเหมือนแมลง", "ตัวโปร่งแสงลอยได้", "ตัวโคลนยืดหยุ่น",
|
|
|
53 |
"เศร้าสร้อย", "จริงจัง", "มีความสุข", "ขี้ตกใจ"
|
54 |
]
|
55 |
|
56 |
+
# ---------------------------
|
57 |
+
# 3) ฟังก์ชันหลัก
|
58 |
+
# ---------------------------
|
59 |
def generate_monster_lab(
|
60 |
body_dd, body_tb,
|
61 |
head_dd, head_tb,
|
|
|
93 |
|
94 |
return desc_th, prompt_en
|
95 |
|
|
|
96 |
def random_monster():
|
97 |
"""
|
98 |
สุ่มค่า Dropdown ทั้ง 6 หมวด, พร้อมเคลียร์ช่อง Textbox ทั้ง 6
|
99 |
"""
|
100 |
+
import random
|
101 |
bd = random.choice(body_shapes_th)
|
102 |
hd = random.choice(heads_th)
|
103 |
ar = random.choice(arms_legs_th)
|
|
|
105 |
ab = random.choice(abilities_th)
|
106 |
md = random.choice(moods_th)
|
107 |
|
108 |
+
return (bd, "", hd, "", ar, "", sk, "", ab, "", md, "")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
|
110 |
+
# ---------------------------
|
111 |
# 4) สร้าง UI Gradio
|
112 |
+
# ---------------------------
|
113 |
css_code = """
|
114 |
body {
|
115 |
background-color: #FFF7EA;
|
|
|
131 |
border-radius: 10px;
|
132 |
padding: 15px;
|
133 |
color: #333;
|
134 |
+
margin-bottom: 20px;
|
135 |
}
|
136 |
+
.btn-main {
|
137 |
background-color: #FFC107;
|
138 |
border: 2px solid #FFA000;
|
139 |
font-weight: bold;
|
|
|
142 |
border-radius: 10px;
|
143 |
margin-right: 10px;
|
144 |
}
|
145 |
+
|
146 |
+
.btn-random {
|
147 |
+
/* เล็กกว่า, สีอ่อนลง */
|
148 |
+
background-color: #FFE08E; /* สีเหลืองซอฟต์ */
|
149 |
+
border: 2px solid #FFC107;
|
150 |
+
font-weight: normal;
|
151 |
+
font-size: 0.9rem;
|
152 |
+
padding: 6px 15px;
|
153 |
+
border-radius: 8px;
|
154 |
+
}
|
155 |
+
.btn-random:hover {
|
156 |
+
background-color: #FFF3C4;
|
157 |
}
|
158 |
#desc-th, #prompt-en {
|
159 |
background-color: #FFFAE6;
|
|
|
165 |
"""
|
166 |
|
167 |
def initial_text():
|
168 |
+
return "ยังไม่ได้สร้างมอนสเตอร์ ลองเลือกหรือพิมพ์ แล้วกด 'สร้างมอนสเตอร์!' หรือจะกดสุ่มดูก็ได้จ้า"
|
169 |
|
|
|
170 |
copy_button_html = """
|
171 |
<button style="background-color: #F06292; border: 2px solid #E91E63; font-weight: bold;
|
172 |
font-size: 1.1rem; padding: 10px 20px; border-radius: 10px;"
|
|
|
192 |
gr.Markdown("""
|
193 |
<div class="game-desc">
|
194 |
<p>หนูน้อยจ๊ะ เลือกได้ว่าจะใช้ค่าใน <strong>Dropdown</strong> หรือจะ <strong>พิมพ์เอง</strong></p>
|
195 |
+
<p>หากอยากลุ้นโชค ให้กดปุ่ม <strong>"สุ่มมอนสเตอร์สุดเซอร์ไพรส์!"</strong> (ปุ่มเล็ก)</p>
|
196 |
+
<p>เมื่อพร้อมแล้ว กดปุ่ม <strong>"สร้างมอนสเตอร์!"</strong> (ปุ่มหลักด้านซ้าย) เพื่อดูรายละเอียด (ไทย) และ Prompt (อังกฤษ)</p>
|
197 |
+
<p>กดปุ่ม <strong>"Copy Prompt"</strong> เพื่อคัดลอก Prompt ไปใช้กับ AI สร้างภาพได้เลย!</p>
|
|
|
198 |
</div>
|
199 |
""")
|
200 |
|
|
|
221 |
mood_tb = gr.Textbox(label="หรือพิมพ์เอง", placeholder="ขี้เล่นเป็นพิเศษ...")
|
222 |
|
223 |
with gr.Row():
|
224 |
+
# ปุ่มหลัก (สร้างมอนสเตอร์) -> อยู่ฝั่งซ้าย
|
225 |
+
create_btn = gr.Button("สร้างมอนสเตอร์!", elem_classes="btn-main")
|
226 |
+
# ปุ่มสุ่ม (เล็ก, สีอ่อน) -> อยู่ฝั่งขวา
|
227 |
+
random_btn = gr.Button("สุ่มมอนสเตอร์สุดเซอร์ไพรส์!", elem_classes="btn-random")
|
228 |
|
229 |
monster_desc_th = gr.Textbox(label="รายละเอียด (ภาษาไทย)", interactive=False, elem_id="desc-th")
|
230 |
monster_prompt_en = gr.Textbox(label="Prompt (English)", interactive=False, elem_id="prompt-en")
|
231 |
|
|
|
232 |
gr.HTML(copy_button_html)
|
233 |
|
234 |
+
# กดสุ่ม -> คืน 12 ค่า (6 Dropdown, 6 Textbox)
|
235 |
random_btn.click(
|
236 |
fn=random_monster,
|
237 |
inputs=[],
|
|
|
245 |
]
|
246 |
)
|
247 |
|
248 |
+
# กดสร้าง -> generate_monster_lab
|
249 |
create_btn.click(
|
250 |
fn=generate_monster_lab,
|
251 |
inputs=[
|