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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -11
app.py CHANGED
@@ -1,7 +1,8 @@
1
  import gradio as gr
2
  from transformers import MarianMTModel, MarianTokenizer
 
3
 
4
- # 1) โหลดโมเดลแปล (MarianMT)
5
  model_name = "Helsinki-NLP/opus-mt-th-en"
6
  tokenizer = MarianTokenizer.from_pretrained(model_name)
7
  model = MarianMTModel.from_pretrained(model_name)
@@ -86,7 +87,30 @@ def generate_monster_lab(
86
 
87
  return desc_th, prompt_en
88
 
89
- # 4) สร้าง UI Gradio (ไม่มีปุ่ม Copy ใน .click() แต่ใช้ HTML ปุ่ม)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  css_code = """
91
  body {
92
  background-color: #FFF7EA;
@@ -131,7 +155,7 @@ body {
131
  """
132
 
133
  def initial_text():
134
- return "ยังไม่ได้สร้างมอนสเตอร์ ลองเลือกหรือพิมพ์ แล้วกด 'สร้างมอนสเตอร์!'"
135
 
136
  # สร้างปุ่ม Copy ด้วย HTML + JS
137
  copy_button_html = """
@@ -140,16 +164,13 @@ copy_button_html = """
140
  onclick="copyPromptText()">
141
  Copy Prompt
142
  </button>
143
-
144
  <script>
145
  function copyPromptText() {
146
- // หยิบ Textbox 'prompt-en' (ภายใน Gradio) โดย id
147
  const promptBox = document.querySelector('#prompt-en textarea');
148
  if (!promptBox) {
149
  alert('ไม่พบข้อความ Prompt!');
150
  return;
151
  }
152
- // Copy
153
  const promptText = promptBox.value;
154
  navigator.clipboard.writeText(promptText);
155
  alert('คัดลอก Prompt แล้ว!');
@@ -162,9 +183,10 @@ with gr.Blocks(css=css_code) as demo:
162
  gr.Markdown("""
163
  <div class="game-desc">
164
  <p>หนูน้อยจ๊ะ เลือกได้ว่าจะใช้ค่าใน <strong>Dropdown</strong> หรือจะ <strong>พิมพ์เอง</strong></p>
165
- <p>เมื่อกด <strong>"สร้างมอนสเตอร์!"</strong> แล้วจะได้ <i>รายละเอียด (ภาษาไทย)</i> และ <i>Prompt ภาษาอังกฤษ</i></p>
166
- <p>ปุ่ม <strong>"Copy Prompt"</strong> ด้านล่าง จะคัดลอกข้อความในช่อง Prompt เพื่อให้ไปวางใน AI อื่นได้ง่าย</p>
167
- <p><strong>สนใจเรียนรู้เพิ่มเติมกับ ZenityX <a href="https://www.facebook.com/zenityXAiStudio" target="_blank">คลิกเลย!</a></strong></p>
 
168
  </div>
169
  """)
170
 
@@ -190,14 +212,31 @@ with gr.Blocks(css=css_code) as demo:
190
  mood_dd = gr.Dropdown(moods_th, label="อารมณ์", value=moods_th[0])
191
  mood_tb = gr.Textbox(label="หรือพิมพ์เอง", placeholder="ขี้เล่นเป็นพิเศษ...")
192
 
193
- create_btn = gr.Button("สร้างมอนสเตอร์!", elem_classes="monster-btn")
 
 
194
 
195
  monster_desc_th = gr.Textbox(label="รายละเอียด (ภาษาไทย)", interactive=False, elem_id="desc-th")
196
  monster_prompt_en = gr.Textbox(label="Prompt (English)", interactive=False, elem_id="prompt-en")
197
 
198
- # แทรกปุ่ม Copy ด้วย HTML
199
  gr.HTML(copy_button_html)
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  create_btn.click(
202
  fn=generate_monster_lab,
203
  inputs=[
 
1
  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)
 
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)
98
+ sk = random.choice(skin_patterns_th)
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;
 
155
  """
156
 
157
  def initial_text():
158
+ return "ยังไม่ได้สร้างมอนสเตอร์ ลองเลือกหรือพิมพ์ แล้วกด 'สร้างมอนสเตอร์!' หรือกดสุ่มดูสิจ๊ะ!"
159
 
160
  # สร้างปุ่ม Copy ด้วย HTML + JS
161
  copy_button_html = """
 
164
  onclick="copyPromptText()">
165
  Copy Prompt
166
  </button>
 
167
  <script>
168
  function copyPromptText() {
 
169
  const promptBox = document.querySelector('#prompt-en textarea');
170
  if (!promptBox) {
171
  alert('ไม่พบข้อความ Prompt!');
172
  return;
173
  }
 
174
  const promptText = promptBox.value;
175
  navigator.clipboard.writeText(promptText);
176
  alert('คัดลอก Prompt แล้ว!');
 
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
 
 
212
  mood_dd = gr.Dropdown(moods_th, label="อารมณ์", value=moods_th[0])
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=[],
229
+ outputs=[
230
+ body_dd, body_tb,
231
+ head_dd, head_tb,
232
+ arms_dd, arms_tb,
233
+ skin_dd, skin_tb,
234
+ ability_dd, ability_tb,
235
+ mood_dd, mood_tb
236
+ ]
237
+ )
238
+
239
+ # ปุ่มสร้าง Prompt
240
  create_btn.click(
241
  fn=generate_monster_lab,
242
  inputs=[