zenityx commited on
Commit
bf1efb5
·
verified ·
1 Parent(s): 614b4c7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -26
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
- # 3) ฟังก์ชันสร้าง Prompt
 
 
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
- # แต่ละหมวดมี 2 ช่อง (Dropdown, Textbox) => รวม 12 ค่า
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
- .monster-btn {
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
- .monster-btn:hover {
146
- background-color: #FFD54F;
 
 
 
 
 
 
 
 
 
 
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>ถ้าอยากลุ้นโชค กดปุ่ม <strong>"สุ่มมอนสเตอร์สุดเซอร์ไพรส์!"</strong> ดูสิ!</p>
187
- <p>เมื่อพร้อมแล้ว กด <strong>"สร้างมอนสเตอร์!"</strong> เพื่อดูรายละเอียด (ไทย) และ Prompt (อังกฤษ)</p>
188
- <p>อย่าลืมกด <strong>"Copy Prompt"</strong> (ปุ่มชมพู) เพื่อคัดลอกไป AI เจน��าพอื่นนะจ๊ะ</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
- random_btn = gr.Button("สุ่มมอนสเตอร์สุดเซอร์ไพรส์!", elem_classes="monster-btn")
217
- create_btn = gr.Button("สร้างมอนสเตอร์!", elem_classes="monster-btn")
 
 
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
- # ปุ่มสุ่ม: คืนค่าทั้ง 12 ตัว (6 Dropdown, 6 Textbox)
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
- # ปุ่มสร้าง Prompt
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=[