unnastyle commited on
Commit
ae84bfc
ยท
verified ยท
1 Parent(s): 0bb23ae

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -13
app.py CHANGED
@@ -60,17 +60,22 @@ def remove_timeline(script_text, lecture_number):
60
  stripped_line = line.strip()
61
  if stripped_line == "":
62
  continue
 
63
  if re.match(r'^\d+$', stripped_line):
64
  continue
 
65
  if re.match(r'^\d{1,2}:\d{2}(?::\d{2}(?:\.\d{3})?)?\s*-->\s*\d{1,2}:\d{2}(?::\d{2}(?:\.\d{3})?)?$', stripped_line):
66
  continue
67
  valid_lines.append(stripped_line)
68
  cleaned_text = "".join(valid_lines)
 
69
  cleaned_text = re.sub(r'\.(\S)', r'. \1', cleaned_text)
 
70
  cleaned_text = re.sub(r'^WEBVTT\s*', '', cleaned_text)
71
  return cleaned_text
72
 
73
  def get_script_urls(url1, url2, url3):
 
74
  urls = []
75
  for url in [url1, url2, url3]:
76
  if url.strip() == "":
@@ -80,6 +85,7 @@ def get_script_urls(url1, url2, url3):
80
  return urls[0], urls[1], urls[2]
81
 
82
  def get_scripts(script_url1, script_url2, script_url3):
 
83
  scripts = []
84
  for url in [script_url1, script_url2, script_url3]:
85
  if url.strip() == "":
@@ -89,6 +95,7 @@ def get_scripts(script_url1, script_url2, script_url3):
89
  return scripts[0], scripts[1], scripts[2]
90
 
91
  def remove_all_timelines(script1, script2, script3):
 
92
  cleaned = []
93
  for i, script in enumerate([script1, script2, script3], start=1):
94
  if script.strip() == "":
@@ -97,42 +104,67 @@ def remove_all_timelines(script1, script2, script3):
97
  cleaned.append(remove_timeline(script, i))
98
  return cleaned[0], cleaned[1], cleaned[2]
99
 
100
- with gr.Blocks(css="""
101
- .scrollbox textarea {
102
- overflow-y: scroll !important;
103
- height: 300px !important;
104
- }
105
- """) as demo:
 
 
 
 
 
 
106
  gr.Markdown("## ๊ฐ•์˜ ์Šคํฌ๋ฆฝํŠธ ์ฒ˜๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค")
107
  gr.Markdown("โ€ป ๊ฐ ๊ฐ•์˜ URL์„ ์ž…๋ ฅ ํ›„, '์Šคํฌ๋ฆฝํŠธ URL ๋งŒ๋“ค๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ URL์„ ์ƒ์„ฑํ•˜๊ณ , ์ด์–ด์„œ ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.")
108
 
 
109
  with gr.Row():
110
  url1 = gr.Textbox(label="๊ฐ•์˜1 URL")
111
  url2 = gr.Textbox(label="๊ฐ•์˜2 URL")
112
  url3 = gr.Textbox(label="๊ฐ•์˜3 URL")
113
 
 
114
  generate_script_url_button = gr.Button("์Šคํฌ๋ฆฝํŠธ URL ๋งŒ๋“ค๊ธฐ")
115
 
 
116
  with gr.Row():
117
  script_url1 = gr.Textbox(label="๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
118
  script_url2 = gr.Textbox(label="๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
119
  script_url3 = gr.Textbox(label="๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
120
 
 
121
  fetch_script_button = gr.Button("์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ")
122
 
 
123
  with gr.Row():
124
- # interactive=True๋กœ ์‹ค์ œ textarea ์š”์†Œ๊ฐ€ ๋ Œ๋”๋ง๋˜๊ณ , elem_classes="scrollbox"๋กœ CSS๊ฐ€ ์ ์šฉ๋จ.
125
- script1 = gr.Textbox(label="๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ", lines=10, interactive=True, elem_classes="scrollbox")
126
- script2 = gr.Textbox(label="๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ", lines=10, interactive=True, elem_classes="scrollbox")
127
- script3 = gr.Textbox(label="๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ", lines=10, interactive=True, elem_classes="scrollbox")
128
 
 
129
  remove_timeline_button = gr.Button("ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ")
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  with gr.Row():
132
- cleaned1 = gr.Textbox(label="๊ฐ•์˜1 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10, interactive=True, elem_classes="scrollbox")
133
- cleaned2 = gr.Textbox(label="๊ฐ•์˜2 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10, interactive=True, elem_classes="scrollbox")
134
- cleaned3 = gr.Textbox(label="๊ฐ•์˜3 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10, interactive=True, elem_classes="scrollbox")
135
 
 
136
  generate_script_url_button.click(
137
  fn=get_script_urls,
138
  inputs=[url1, url2, url3],
@@ -148,6 +180,9 @@ with gr.Blocks(css="""
148
  inputs=[script1, script2, script3],
149
  outputs=[cleaned1, cleaned2, cleaned3]
150
  )
 
 
 
151
 
152
  gr.Markdown("๋””๋ฒ„๊น… ๋ชจ๋“œ ํ™œ์„ฑํ™”๋จ: ๋กœ๊ทธ๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.")
153
 
 
60
  stripped_line = line.strip()
61
  if stripped_line == "":
62
  continue
63
+ # ๋ฒˆํ˜ธ๋งŒ ์žˆ๋Š” ์ค„ ์ œ๊ฑฐ
64
  if re.match(r'^\d+$', stripped_line):
65
  continue
66
+ # ํƒ€์ž„๋ผ์ธ ํ˜•์‹ ์ œ๊ฑฐ (์˜ˆ: 00:00:00.000 --> 00:00:02.000)
67
  if re.match(r'^\d{1,2}:\d{2}(?::\d{2}(?:\.\d{3})?)?\s*-->\s*\d{1,2}:\d{2}(?::\d{2}(?:\.\d{3})?)?$', stripped_line):
68
  continue
69
  valid_lines.append(stripped_line)
70
  cleaned_text = "".join(valid_lines)
71
+ # ๋งˆ์นจํ‘œ(.) ๋‹ค์Œ์— ์—ฌ๋ฐฑ์ด ์—†์œผ๋ฉด ์—ฌ๋ฐฑ ์ถ”๊ฐ€
72
  cleaned_text = re.sub(r'\.(\S)', r'. \1', cleaned_text)
73
+ # ๊ธ€ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” "WEBVTT" ์ œ๊ฑฐ
74
  cleaned_text = re.sub(r'^WEBVTT\s*', '', cleaned_text)
75
  return cleaned_text
76
 
77
  def get_script_urls(url1, url2, url3):
78
+ """์ž…๋ ฅ๋œ ๊ฐ•์˜ URL ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์Šคํฌ๋ฆฝํŠธ URL์„ ์ƒ์„ฑํ•จ (๋นˆ ์นธ์€ ๋ฌด์‹œ)."""
79
  urls = []
80
  for url in [url1, url2, url3]:
81
  if url.strip() == "":
 
85
  return urls[0], urls[1], urls[2]
86
 
87
  def get_scripts(script_url1, script_url2, script_url3):
88
+ """์ž…๋ ฅ๋œ ์Šคํฌ๋ฆฝํŠธ URL ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ€์ ธ์˜ด (๋นˆ ์นธ์€ ๋ฌด์‹œ)."""
89
  scripts = []
90
  for url in [script_url1, script_url2, script_url3]:
91
  if url.strip() == "":
 
95
  return scripts[0], scripts[1], scripts[2]
96
 
97
  def remove_all_timelines(script1, script2, script3):
98
+ """๊ฐ€์ ธ์˜จ ์Šคํฌ๋ฆฝํŠธ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ (๋นˆ ์นธ์€ ๋ฌด์‹œ)."""
99
  cleaned = []
100
  for i, script in enumerate([script1, script2, script3], start=1):
101
  if script.strip() == "":
 
104
  cleaned.append(remove_timeline(script, i))
105
  return cleaned[0], cleaned[1], cleaned[2]
106
 
107
+ def copy_content(text):
108
+ """
109
+ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ…์ŠคํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌํ•˜๋Š” ๋™์ž‘์„ ๋ชจ๋ฐฉํ•˜๊ณ ,
110
+ ๋ณต์‚ฌ ํ›„ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
111
+ """
112
+ if text.strip() == "":
113
+ return "๋ณต์‚ฌํ•  ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค."
114
+ # ์—ฌ๊ธฐ์„œ ์‹ค์ œ๋กœ ๋ณต์‚ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ,
115
+ # ์„œ๋ฒ„์ธก์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
116
+ return "๋ณต์‚ฌ์™„๋ฃŒ"
117
+
118
+ with gr.Blocks() as demo:
119
  gr.Markdown("## ๊ฐ•์˜ ์Šคํฌ๋ฆฝํŠธ ์ฒ˜๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค")
120
  gr.Markdown("โ€ป ๊ฐ ๊ฐ•์˜ URL์„ ์ž…๋ ฅ ํ›„, '์Šคํฌ๋ฆฝํŠธ URL ๋งŒ๋“ค๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ URL์„ ์ƒ์„ฑํ•˜๊ณ , ์ด์–ด์„œ ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.")
121
 
122
+ # ์ž…๋ ฅ์ฐฝ 3๊ฐœ: ๊ฐ•์˜1 URL, ๊ฐ•์˜2 URL, ๊ฐ•์˜3 URL (๊ฐ€๋กœ๋กœ ๋‚˜์—ด)
123
  with gr.Row():
124
  url1 = gr.Textbox(label="๊ฐ•์˜1 URL")
125
  url2 = gr.Textbox(label="๊ฐ•์˜2 URL")
126
  url3 = gr.Textbox(label="๊ฐ•์˜3 URL")
127
 
128
+ # ๋ฒ„ํŠผ 1๊ฐœ: ์Šคํฌ๋ฆฝํŠธ URL ๋งŒ๋“ค๊ธฐ
129
  generate_script_url_button = gr.Button("์Šคํฌ๋ฆฝํŠธ URL ๋งŒ๋“ค๊ธฐ")
130
 
131
+ # ์ถœ๋ ฅ์ฐฝ 3๊ฐœ: ๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ URL, ๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ URL, ๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ URL (๊ฐ€๋กœ๋กœ ๋‚˜์—ด)
132
  with gr.Row():
133
  script_url1 = gr.Textbox(label="๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
134
  script_url2 = gr.Textbox(label="๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
135
  script_url3 = gr.Textbox(label="๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ URL", interactive=False)
136
 
137
+ # ๋ฒ„ํŠผ 1๊ฐœ: ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
138
  fetch_script_button = gr.Button("์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ")
139
 
140
+ # ์ถœ๋ ฅ์ฐฝ 3๊ฐœ: ๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ, ๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ, ๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ (๊ฐ€๋กœ๋กœ ๋‚˜์—ด)
141
  with gr.Row():
142
+ script1 = gr.Textbox(label="๊ฐ•์˜1 ์Šคํฌ๋ฆฝํŠธ", lines=10)
143
+ script2 = gr.Textbox(label="๊ฐ•์˜2 ์Šคํฌ๋ฆฝํŠธ", lines=10)
144
+ script3 = gr.Textbox(label="๊ฐ•์˜3 ์Šคํฌ๋ฆฝํŠธ", lines=10)
 
145
 
146
+ # ๋ฒ„ํŠผ 1๊ฐœ: ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ
147
  remove_timeline_button = gr.Button("ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ")
148
 
149
+ # ์ถœ๋ ฅ์ฐฝ 3๊ฐœ: ๊ฐ•์˜1 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ, ๊ฐ•์˜2 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ, ๊ฐ•์˜3 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ (๊ฐ€๋กœ๋กœ ๋‚˜์—ด)
150
+ with gr.Row():
151
+ cleaned1 = gr.Textbox(label="๊ฐ•์˜1 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10)
152
+ cleaned2 = gr.Textbox(label="๊ฐ•์˜2 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10)
153
+ cleaned3 = gr.Textbox(label="๊ฐ•์˜3 ํƒ€์ž„๋ผ์ธ ์ œ๊ฑฐ", lines=10)
154
+
155
+ # "๋‚ด์šฉ ๋ณต์‚ฌํ•˜๊ธฐ" ๋ฒ„ํŠผ 3๊ฐœ (๊ฐ ๊ฐ•์˜๋ณ„)
156
+ with gr.Row():
157
+ copy1 = gr.Button("๋‚ด์šฉ ๋ณต์‚ฌํ•˜๊ธฐ")
158
+ copy2 = gr.Button("๋‚ด์šฉ ๋ณต์‚ฌํ•˜๊ธฐ")
159
+ copy3 = gr.Button("๋‚ด์šฉ ๋ณต์‚ฌํ•˜๊ธฐ")
160
+
161
+ # ๋ณต์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•  ์ถœ๋ ฅ์ฐฝ 3๊ฐœ
162
  with gr.Row():
163
+ copy_result1 = gr.Textbox(label="๊ฐ•์˜1 ๋ณต์‚ฌ ๊ฒฐ๊ณผ", interactive=False)
164
+ copy_result2 = gr.Textbox(label="๊ฐ•์˜2 ๋ณต์‚ฌ ๊ฒฐ๊ณผ", interactive=False)
165
+ copy_result3 = gr.Textbox(label="๊ฐ•์˜3 ๋ณต์‚ฌ ๊ฒฐ๊ณผ", interactive=False)
166
 
167
+ # ๊ฐ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
168
  generate_script_url_button.click(
169
  fn=get_script_urls,
170
  inputs=[url1, url2, url3],
 
180
  inputs=[script1, script2, script3],
181
  outputs=[cleaned1, cleaned2, cleaned3]
182
  )
183
+ copy1.click(fn=copy_content, inputs=cleaned1, outputs=copy_result1)
184
+ copy2.click(fn=copy_content, inputs=cleaned2, outputs=copy_result2)
185
+ copy3.click(fn=copy_content, inputs=cleaned3, outputs=copy_result3)
186
 
187
  gr.Markdown("๋””๋ฒ„๊น… ๋ชจ๋“œ ํ™œ์„ฑํ™”๋จ: ๋กœ๊ทธ๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.")
188