Kims12 commited on
Commit
5fc6975
ยท
verified ยท
1 Parent(s): aee5fb9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -26
app.py CHANGED
@@ -127,7 +127,7 @@ def update_thumbnails(video, start_time_str, end_time_str):
127
  return start_thumb, end_thumb
128
 
129
  # -------------------------------
130
- # Custom CSS
131
  # -------------------------------
132
  custom_css = """
133
  /* ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ ํญ์„ 70%๋กœ ์ค„์ž„ */
@@ -136,93 +136,102 @@ custom_css = """
136
  margin: 0 auto;
137
  }
138
 
139
- /* ์ œ๋ชฉ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ ์™ผ์ชฝ ์ •๋ ฌ ๋ฐ ํฌ๊ธฐ ์ฆ๊ฐ€ */
 
 
 
 
 
140
  .custom-title {
141
- font-size: 2.8em;
142
  font-weight: bold;
143
  margin: 20px 0;
144
  color: #2c3e50;
145
  text-align: left;
146
  }
147
  .custom-user-guide {
148
- font-size: 1.2em;
149
  margin-bottom: 20px;
150
  color: #34495e;
151
  text-align: left;
152
  }
153
 
154
- /* ์‚ฌ์šฉ๊ฐ€์ด๋“œ ๋ฐ•์Šค ์Šคํƒ€์ผ */
155
  .guide-box {
156
  border: 2px solid #3498db;
157
  border-radius: 10px;
158
  padding: 15px;
159
- background-color: #d6eaf8;
160
  margin: 20px 0;
161
  text-align: left;
162
  }
163
 
164
- /* ํ”„๋ ˆ์ž„ ์Šคํƒ€์ผ (์ž…๋ ฅ๋ถ€, ์ถœ๋ ฅ๋ถ€, ์ธ๋„ค์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ) */
165
  .frame {
166
  border: 2px solid #888;
167
  border-radius: 20px;
168
  padding: 20px;
169
- background-color: #fff;
170
  margin: 10px;
171
- box-shadow: 3px 3px 10px rgba(0,0,0,0.1);
172
  }
173
 
174
  /* ๊ฐ ํ”„๋ ˆ์ž„ ์ œ๋ชฉ ํฌ๊ฒŒ */
175
- .frame h3 {
176
- font-size: 1.8em;
177
  margin-bottom: 15px;
178
  text-align: left;
179
  }
180
 
181
- /* ํ–‰ ๋ ˆ์ด์•„์›ƒ */
182
  .row-container {
183
  display: flex;
184
  justify-content: space-between;
185
  }
186
-
187
- /* ์ปฌ๋Ÿผ ๋ ˆ์ด์•„์›ƒ */
188
  .column {
189
  flex: 1;
190
  margin: 10px;
191
  }
192
 
193
- /* ๋ฒ„ํŠผ ์—ฌ๋ฐฑ */
194
  .gif-button {
195
  margin-top: 30px;
196
- padding: 10px 20px;
197
- font-size: 1.2em;
 
 
 
 
 
198
  }
199
 
200
- /* ์Šฌ๋ผ์ด๋” ์Šคํƒ€์ผ (๊ธ€์ž์™€ ๋ฐ” ํฌ๊ฒŒ) */
201
  input[type=range] {
202
- height: 20px;
203
  }
204
  input[type=range]::-webkit-slider-thumb {
205
- height: 20px;
206
- width: 20px;
207
  }
208
  .slider-label {
209
- font-size: 1.2em;
210
  margin-bottom: 5px;
211
  }
 
 
 
212
  """
213
 
214
  # -------------------------------
215
  # Gradio UI ๊ตฌ์„ฑ (HTML/CSS ์ปค์Šคํ„ฐ๋งˆ์ด์ง•)
216
  # -------------------------------
217
  with gr.Blocks(css=custom_css, title="์˜์ƒ -> GIF ๋ณ€ํ™˜ ์„œ๋น„์Šค") as demo:
218
- # ์ œ๋ชฉ๊ณผ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(์™ผ์ชฝ ์ •๋ ฌ, ๋ฐ•์Šคํ˜•ํƒœ)
219
  gr.HTML("<div class='custom-title'>๐ŸŽฌ ์˜์ƒ์„ GIF๋ณ€ํ™˜ํ•˜๊ธฐ</div>")
220
  gr.HTML("<div class='guide-box'><strong>์‚ฌ์šฉ๊ฐ€์ด๋“œ:</strong><br>"
221
  "1. ์ขŒ์ธก ์ž…๋ ฅ๋ถ€์—์„œ ์˜์ƒ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์˜ต์…˜์„ ์„ ํƒํ•˜์„ธ์š”.<br>"
222
  "2. ํ•˜๋‹จ ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์ž…๋ ฅํ•ด ์ธ๋„ค์ผ์„ ํ™•์ธํ•˜์„ธ์š”.<br>"
223
  "3. โœจ GIF ์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ GIF๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์šฐ์ธก ์ถœ๋ ฅ๋ถ€์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ๋ฐ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ๐Ÿ˜Š</div>")
224
 
225
- # ์ฒซ๋ฒˆ์งธ ํ–‰: ์ž…๋ ฅ๋ถ€ (์ขŒ์ธก) / ์ถœ๋ ฅ๋ถ€ (์šฐ์ธก)
226
  with gr.Row(elem_classes="row-container"):
227
  with gr.Column(elem_classes="column"):
228
  with gr.Group(elem_classes="frame"):
@@ -247,8 +256,8 @@ with gr.Blocks(css=custom_css, title="์˜์ƒ -> GIF ๋ณ€ํ™˜ ์„œ๋น„์Šค") as demo:
247
  gif_preview_output = gr.Image(label="GIF ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
248
  download_output = gr.File(label="GIF ๋‹ค์šด๋กœ๋“œ")
249
 
250
- # ๋‘๋ฒˆ์งธ ํ–‰: ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ (์ „์ฒด ๋„ˆ๋น„)
251
- with gr.Group(elem_classes="frame full-width"):
252
  gr.Markdown("### ๐Ÿ–ผ๏ธ ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
253
  with gr.Row():
254
  start_time_tb = gr.Textbox(label="์‹œ์ž‘ ์‹œ๊ฐ„ (์˜ˆ: 00:00:05)", value="00:00:00")
 
127
  return start_thumb, end_thumb
128
 
129
  # -------------------------------
130
+ # Custom CSS (HTML/CSS ๊ธฐ๋ฐ˜ ์ƒˆ UI)
131
  # -------------------------------
132
  custom_css = """
133
  /* ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ ํญ์„ 70%๋กœ ์ค„์ž„ */
 
136
  margin: 0 auto;
137
  }
138
 
139
+ /* ๊ธฐ๋ณธ ํฐํŠธ ํฌ๊ธฐ ์ฆ๊ฐ€ */
140
+ body {
141
+ font-size: 1.3em;
142
+ }
143
+
144
+ /* ์ œ๋ชฉ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ ์™ผ์ชฝ ์ •๋ ฌ, ๊ธ€์ž ํฌ๊ฒŒ */
145
  .custom-title {
146
+ font-size: 3em;
147
  font-weight: bold;
148
  margin: 20px 0;
149
  color: #2c3e50;
150
  text-align: left;
151
  }
152
  .custom-user-guide {
153
+ font-size: 1.5em;
154
  margin-bottom: 20px;
155
  color: #34495e;
156
  text-align: left;
157
  }
158
 
159
+ /* ์‚ฌ์šฉ๊ฐ€์ด๋“œ ๋ฐ•์Šค ์Šคํƒ€์ผ (๋ฐฐ๊ฒฝ ์ฑ„์šฐ๊ธฐ ์ œ๊ฑฐํ•˜๊ณ  ํ…Œ๋‘๋ฆฌ๋งŒ) */
160
  .guide-box {
161
  border: 2px solid #3498db;
162
  border-radius: 10px;
163
  padding: 15px;
 
164
  margin: 20px 0;
165
  text-align: left;
166
  }
167
 
168
+ /* ํ”„๋ ˆ์ž„ ์Šคํƒ€์ผ - ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ, ํ…Œ๋‘๋ฆฌ๋งŒ */
169
  .frame {
170
  border: 2px solid #888;
171
  border-radius: 20px;
172
  padding: 20px;
 
173
  margin: 10px;
174
+ background-color: transparent;
175
  }
176
 
177
  /* ๊ฐ ํ”„๋ ˆ์ž„ ์ œ๋ชฉ ํฌ๊ฒŒ */
178
+ .frame h3, .frame > h3 {
179
+ font-size: 2em;
180
  margin-bottom: 15px;
181
  text-align: left;
182
  }
183
 
184
+ /* ํ–‰ ๋ฐ ์—ด ๋ ˆ์ด์•„์›ƒ */
185
  .row-container {
186
  display: flex;
187
  justify-content: space-between;
188
  }
 
 
189
  .column {
190
  flex: 1;
191
  margin: 10px;
192
  }
193
 
194
+ /* GIF ์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ ์Šคํƒ€์ผ (ํฌ์ธํŠธ์ƒ‰ ์ ์šฉ) */
195
  .gif-button {
196
  margin-top: 30px;
197
+ padding: 15px 25px;
198
+ font-size: 1.5em;
199
+ background-color: #e67e22;
200
+ color: #fff;
201
+ border: none;
202
+ border-radius: 10px;
203
+ cursor: pointer;
204
  }
205
 
206
+ /* ์Šฌ๋ผ์ด๋” ๋ฐ ์„ ํƒ ์˜์—ญ ์Šคํƒ€์ผ (๊ธ€์ž์™€ ๋ฐ” ํฌ๊ฒŒ, ๋‘๊ป๊ฒŒ) */
207
  input[type=range] {
208
+ height: 25px;
209
  }
210
  input[type=range]::-webkit-slider-thumb {
211
+ height: 25px;
212
+ width: 25px;
213
  }
214
  .slider-label {
215
+ font-size: 1.5em;
216
  margin-bottom: 5px;
217
  }
218
+ .gradio-radio label {
219
+ font-size: 1.5em !important;
220
+ }
221
  """
222
 
223
  # -------------------------------
224
  # Gradio UI ๊ตฌ์„ฑ (HTML/CSS ์ปค์Šคํ„ฐ๋งˆ์ด์ง•)
225
  # -------------------------------
226
  with gr.Blocks(css=custom_css, title="์˜์ƒ -> GIF ๋ณ€ํ™˜ ์„œ๋น„์Šค") as demo:
227
+ # ์ œ๋ชฉ๊ณผ ์‚ฌ์šฉ๊ฐ€์ด๋“œ (์™ผ์ชฝ ์ •๋ ฌ)
228
  gr.HTML("<div class='custom-title'>๐ŸŽฌ ์˜์ƒ์„ GIF๋ณ€ํ™˜ํ•˜๊ธฐ</div>")
229
  gr.HTML("<div class='guide-box'><strong>์‚ฌ์šฉ๊ฐ€์ด๋“œ:</strong><br>"
230
  "1. ์ขŒ์ธก ์ž…๋ ฅ๋ถ€์—์„œ ์˜์ƒ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์˜ต์…˜์„ ์„ ํƒํ•˜์„ธ์š”.<br>"
231
  "2. ํ•˜๋‹จ ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—์„œ ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์ž…๋ ฅํ•ด ์ธ๋„ค์ผ์„ ํ™•์ธํ•˜์„ธ์š”.<br>"
232
  "3. โœจ GIF ์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ GIF๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์šฐ์ธก ์ถœ๋ ฅ๋ถ€์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ๋ฐ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ๐Ÿ˜Š</div>")
233
 
234
+ # ์ฒซ ๋ฒˆ์งธ ํ–‰: ์ž…๋ ฅ๋ถ€ (์ขŒ์ธก) / ์ถœ๋ ฅ๋ถ€ (์šฐ์ธก)
235
  with gr.Row(elem_classes="row-container"):
236
  with gr.Column(elem_classes="column"):
237
  with gr.Group(elem_classes="frame"):
 
256
  gif_preview_output = gr.Image(label="GIF ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
257
  download_output = gr.File(label="GIF ๋‹ค์šด๋กœ๋“œ")
258
 
259
+ # ๋‘ ๋ฒˆ์งธ ํ–‰: ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ (์ „์ฒด ๋„ˆ๋น„)
260
+ with gr.Group(elem_classes="frame"):
261
  gr.Markdown("### ๐Ÿ–ผ๏ธ ์ž‘์—… ์ธ๋„ค์ผ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
262
  with gr.Row():
263
  start_time_tb = gr.Textbox(label="์‹œ์ž‘ ์‹œ๊ฐ„ (์˜ˆ: 00:00:05)", value="00:00:00")