Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -5,7 +5,7 @@ import pykakasi
|
|
5 |
import os
|
6 |
|
7 |
# ๋ฒ์ ์ ๋ณด
|
8 |
-
__version__ = "1.8.
|
9 |
|
10 |
# Kakasi ์ธ์คํด์ค ์์ฑ ๋ฐ ์ค์
|
11 |
kakasi = pykakasi.kakasi()
|
@@ -27,13 +27,19 @@ def convert_text(japanese_text, conversion_type):
|
|
27 |
return converted
|
28 |
|
29 |
def search_and_update_history(keyword, conversion_type):
|
30 |
-
result,
|
31 |
|
32 |
-
if
|
33 |
-
audio_path = generate_audio_file(
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
else:
|
36 |
-
return result, gr.update(visible=False)
|
37 |
|
38 |
def search(keyword, conversion_type):
|
39 |
try:
|
@@ -42,11 +48,9 @@ def search(keyword, conversion_type):
|
|
42 |
|
43 |
converted_keyword = convert_text(japanese_keyword, conversion_type)
|
44 |
|
45 |
-
url = f"https://www.irasutoya.com/search?q={converted_keyword}"
|
46 |
result_text = (
|
47 |
f"**๊ฒ์์ด:** {keyword}\n"
|
48 |
-
f"**์ผ๋ณธ์ด ๋ฒ์ญ ({conversion_type}):** {converted_keyword}\n"
|
49 |
-
f"[๊ฒ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ]({url})\n\n"
|
50 |
f"**์๋ด:** ์ ํํ ๋ณํ ์ ํ์ ๋ฐ๋ผ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค."
|
51 |
)
|
52 |
return result_text, converted_keyword
|
@@ -63,30 +67,64 @@ def generate_audio_file(japanese_text):
|
|
63 |
return None
|
64 |
|
65 |
def clear_inputs():
|
66 |
-
return "", "", gr.update(visible=False)
|
67 |
|
68 |
with gr.Blocks(css="""
|
69 |
#container {
|
70 |
width: 50%;
|
71 |
margin: auto;
|
72 |
}
|
73 |
-
#search_button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
width: 100%;
|
75 |
}
|
|
|
|
|
|
|
76 |
""") as demo:
|
77 |
with gr.Column(elem_id="container"):
|
78 |
gr.Markdown("<h2 style='text-align: center;'>์ด๋ผ์คํ ์ผ ์ผ๋ฌ์คํธ ๊ฒ์๊ธฐ</h2>")
|
79 |
|
80 |
-
keyword_input = gr.Textbox(
|
|
|
|
|
|
|
|
|
81 |
conversion_type = gr.Radio(
|
82 |
label="๋ณํ ์ ํ ์ ํ",
|
83 |
choices=["๊ธฐ๋ณธ", "ํ๋ผ๊ฐ๋", "๊ฐํ์นด๋", "ํ์"],
|
84 |
value="๊ธฐ๋ณธ",
|
85 |
elem_id="conversion_type"
|
86 |
)
|
|
|
87 |
search_button = gr.Button("๊ฒ์", elem_id="search_button")
|
88 |
clear_button = gr.Button("์ง์ฐ๊ธฐ", elem_id="clear_button")
|
89 |
-
|
|
|
90 |
result_output = gr.Markdown()
|
91 |
play_audio = gr.Audio(visible=False, label="์ผ๋ณธ์ด ๋ฐ์ ๋ฃ๊ธฐ")
|
92 |
|
@@ -94,18 +132,18 @@ with gr.Blocks(css="""
|
|
94 |
keyword_input.submit(
|
95 |
fn=search_and_update_history,
|
96 |
inputs=[keyword_input, conversion_type],
|
97 |
-
outputs=[result_output, play_audio],
|
98 |
)
|
99 |
|
100 |
search_button.click(
|
101 |
fn=search_and_update_history,
|
102 |
inputs=[keyword_input, conversion_type],
|
103 |
-
outputs=[result_output, play_audio],
|
104 |
)
|
105 |
|
106 |
clear_button.click(
|
107 |
fn=clear_inputs,
|
108 |
-
outputs=[keyword_input, result_output, play_audio],
|
109 |
)
|
110 |
|
111 |
# ์๋ด ๋ฌธ๊ตฌ๋ฅผ UI ๋ด๋ถ๏ฟฝ๏ฟฝ ์ด๋
|
|
|
5 |
import os
|
6 |
|
7 |
# ๋ฒ์ ์ ๋ณด
|
8 |
+
__version__ = "1.8.23"
|
9 |
|
10 |
# Kakasi ์ธ์คํด์ค ์์ฑ ๋ฐ ์ค์
|
11 |
kakasi = pykakasi.kakasi()
|
|
|
27 |
return converted
|
28 |
|
29 |
def search_and_update_history(keyword, conversion_type):
|
30 |
+
result, converted_keyword = search(keyword, conversion_type)
|
31 |
|
32 |
+
if converted_keyword:
|
33 |
+
audio_path = generate_audio_file(converted_keyword)
|
34 |
+
url = f"https://www.irasutoya.com/search?q={converted_keyword}"
|
35 |
+
result_button_html = f'''
|
36 |
+
<a href="{url}" target="_blank">
|
37 |
+
<button id="result_button" style="background-color: #28a745; color: white; font-size: 16px; padding: 10px; border: none; border-radius: 5px; cursor: pointer; width: 100%;">๊ฒ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ</button>
|
38 |
+
</a>
|
39 |
+
'''
|
40 |
+
return result, gr.update(value=audio_path, visible=True), gr.update(value=result_button_html, visible=True)
|
41 |
else:
|
42 |
+
return result, gr.update(visible=False), gr.update(visible=False)
|
43 |
|
44 |
def search(keyword, conversion_type):
|
45 |
try:
|
|
|
48 |
|
49 |
converted_keyword = convert_text(japanese_keyword, conversion_type)
|
50 |
|
|
|
51 |
result_text = (
|
52 |
f"**๊ฒ์์ด:** {keyword}\n"
|
53 |
+
f"**์ผ๋ณธ์ด ๋ฒ์ญ ({conversion_type}):** {converted_keyword}\n\n"
|
|
|
54 |
f"**์๋ด:** ์ ํํ ๋ณํ ์ ํ์ ๋ฐ๋ผ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค."
|
55 |
)
|
56 |
return result_text, converted_keyword
|
|
|
67 |
return None
|
68 |
|
69 |
def clear_inputs():
|
70 |
+
return "", "", gr.update(visible=False), gr.update(visible(False))
|
71 |
|
72 |
with gr.Blocks(css="""
|
73 |
#container {
|
74 |
width: 50%;
|
75 |
margin: auto;
|
76 |
}
|
77 |
+
button#search_button {
|
78 |
+
background-color: #1E90FF;
|
79 |
+
color: white;
|
80 |
+
font-size: 16px;
|
81 |
+
padding: 10px;
|
82 |
+
border: none;
|
83 |
+
border-radius: 5px;
|
84 |
+
cursor: pointer;
|
85 |
+
}
|
86 |
+
button#clear_button {
|
87 |
+
background-color: #A9A9A9;
|
88 |
+
color: white;
|
89 |
+
font-size: 16px;
|
90 |
+
padding: 10px;
|
91 |
+
border: none;
|
92 |
+
border-radius: 5px;
|
93 |
+
cursor: pointer;
|
94 |
+
}
|
95 |
+
button#result_button {
|
96 |
+
background-color: #28a745;
|
97 |
+
color: white;
|
98 |
+
font-size: 16px;
|
99 |
+
padding: 10px;
|
100 |
+
border: none;
|
101 |
+
border-radius: 5px;
|
102 |
+
cursor: pointer;
|
103 |
width: 100%;
|
104 |
}
|
105 |
+
button:hover {
|
106 |
+
background-color: inherit;
|
107 |
+
}
|
108 |
""") as demo:
|
109 |
with gr.Column(elem_id="container"):
|
110 |
gr.Markdown("<h2 style='text-align: center;'>์ด๋ผ์คํ ์ผ ์ผ๋ฌ์คํธ ๊ฒ์๊ธฐ</h2>")
|
111 |
|
112 |
+
keyword_input = gr.Textbox(
|
113 |
+
label="ํ๊ธ ๊ฒ์์ด ์
๋ ฅ",
|
114 |
+
placeholder="ํ๊ธ๋ก ๊ฒ์์ด๋ฅผ ์
๋ ฅํ์ธ์",
|
115 |
+
elem_id="keyword_input"
|
116 |
+
)
|
117 |
conversion_type = gr.Radio(
|
118 |
label="๋ณํ ์ ํ ์ ํ",
|
119 |
choices=["๊ธฐ๋ณธ", "ํ๋ผ๊ฐ๋", "๊ฐํ์นด๋", "ํ์"],
|
120 |
value="๊ธฐ๋ณธ",
|
121 |
elem_id="conversion_type"
|
122 |
)
|
123 |
+
|
124 |
search_button = gr.Button("๊ฒ์", elem_id="search_button")
|
125 |
clear_button = gr.Button("์ง์ฐ๊ธฐ", elem_id="clear_button")
|
126 |
+
|
127 |
+
result_button = gr.HTML(visible=False) # ๊ฒ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ ๋ฒํผ์ ์ด ์์น๋ก ์ด๋
|
128 |
result_output = gr.Markdown()
|
129 |
play_audio = gr.Audio(visible=False, label="์ผ๋ณธ์ด ๋ฐ์ ๋ฃ๊ธฐ")
|
130 |
|
|
|
132 |
keyword_input.submit(
|
133 |
fn=search_and_update_history,
|
134 |
inputs=[keyword_input, conversion_type],
|
135 |
+
outputs=[result_output, play_audio, result_button],
|
136 |
)
|
137 |
|
138 |
search_button.click(
|
139 |
fn=search_and_update_history,
|
140 |
inputs=[keyword_input, conversion_type],
|
141 |
+
outputs=[result_output, play_audio, result_button],
|
142 |
)
|
143 |
|
144 |
clear_button.click(
|
145 |
fn=clear_inputs,
|
146 |
+
outputs=[keyword_input, result_output, play_audio, result_button],
|
147 |
)
|
148 |
|
149 |
# ์๋ด ๋ฌธ๊ตฌ๋ฅผ UI ๋ด๋ถ๏ฟฝ๏ฟฝ ์ด๋
|