Update app.py
Browse files
app.py
CHANGED
@@ -1,5 +1,3 @@
|
|
1 |
-
import os
|
2 |
-
import time
|
3 |
import streamlit as st
|
4 |
import pandas as pd
|
5 |
import plotly.graph_objects as go
|
@@ -8,6 +6,8 @@ import datetime
|
|
8 |
import re
|
9 |
import requests
|
10 |
import yt_dlp
|
|
|
|
|
11 |
|
12 |
# νμ΄μ§ ꡬμ±μ 'wide'λ‘ μ€μ νμ¬ μ¬λ°± μ΅μν
|
13 |
st.set_page_config(layout="wide")
|
@@ -115,6 +115,11 @@ def crawl_chats(vod_url):
|
|
115 |
|
116 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
117 |
|
|
|
|
|
|
|
|
|
|
|
118 |
# μ νλ μκ°λλ₯Ό νμ λ° μμ κΈ°λ₯
|
119 |
def display_selected_times():
|
120 |
if st.session_state['selected_times']:
|
@@ -140,13 +145,13 @@ def download_clips():
|
|
140 |
# yt-dlp λ€μ΄λ‘λ λͺ
λ Ήμ΄ μ€ν
|
141 |
output_filename = f"clip_{idx + 1}.mp4"
|
142 |
ydl_opts = {
|
143 |
-
'outtmpl':
|
144 |
'download_sections': [f"*{start_time_str}-{end_time_str}"]
|
145 |
}
|
146 |
|
147 |
st.write(f"λ€μ΄λ‘λ μ€: {start_time_str} ~ {end_time_str} | νμΌλͺ
: {output_filename}")
|
148 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
149 |
-
ydl.download([vod_url])
|
150 |
|
151 |
# λ²νΌμ λλ μ λ μ±ν
ν¬λ‘€λ§ μμ
|
152 |
if 'chat_logs' not in st.session_state:
|
@@ -226,24 +231,13 @@ if st.session_state['chat_logs']:
|
|
226 |
# κ·Έλν μΆλ ₯
|
227 |
st.plotly_chart(fig, use_container_width=True)
|
228 |
|
229 |
-
#
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
minute = st.number_input("λΆ", min_value=0, max_value=59, value=0)
|
235 |
-
|
236 |
-
# μ νλ μκ°λ μΆκ° λ²νΌ
|
237 |
-
if st.button("μκ°λ μ ν"):
|
238 |
-
selected_time = f"{hour:02}:{minute:02}:00" # "HH:MM:SS" νμμΌλ‘ λ³ν
|
239 |
-
if selected_time not in st.session_state['selected_times']:
|
240 |
-
st.session_state['selected_times'].append(selected_time)
|
241 |
-
|
242 |
-
# μ
λ ₯ μΉΈ μ΄κΈ°ν
|
243 |
-
hour = 0
|
244 |
-
minute = 0
|
245 |
|
246 |
-
# μ νλ
|
247 |
display_selected_times()
|
248 |
|
249 |
# λ€μ΄λ‘λ λ²νΌ νμ
|
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
import pandas as pd
|
3 |
import plotly.graph_objects as go
|
|
|
6 |
import re
|
7 |
import requests
|
8 |
import yt_dlp
|
9 |
+
import os
|
10 |
+
import time
|
11 |
|
12 |
# νμ΄μ§ ꡬμ±μ 'wide'λ‘ μ€μ νμ¬ μ¬λ°± μ΅μν
|
13 |
st.set_page_config(layout="wide")
|
|
|
115 |
|
116 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
117 |
|
118 |
+
# ν΄λ¦ν μκ°λλ₯Ό μ ν λ° μΆλ ₯
|
119 |
+
def add_selected_time(time):
|
120 |
+
if time not in st.session_state['selected_times']:
|
121 |
+
st.session_state['selected_times'].append(time)
|
122 |
+
|
123 |
# μ νλ μκ°λλ₯Ό νμ λ° μμ κΈ°λ₯
|
124 |
def display_selected_times():
|
125 |
if st.session_state['selected_times']:
|
|
|
145 |
# yt-dlp λ€μ΄λ‘λ λͺ
λ Ήμ΄ μ€ν
|
146 |
output_filename = f"clip_{idx + 1}.mp4"
|
147 |
ydl_opts = {
|
148 |
+
'outtmpl': output_filename,
|
149 |
'download_sections': [f"*{start_time_str}-{end_time_str}"]
|
150 |
}
|
151 |
|
152 |
st.write(f"λ€μ΄λ‘λ μ€: {start_time_str} ~ {end_time_str} | νμΌλͺ
: {output_filename}")
|
153 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
154 |
+
ydl.download([vod_url])
|
155 |
|
156 |
# λ²νΌμ λλ μ λ μ±ν
ν¬λ‘€λ§ μμ
|
157 |
if 'chat_logs' not in st.session_state:
|
|
|
231 |
# κ·Έλν μΆλ ₯
|
232 |
st.plotly_chart(fig, use_container_width=True)
|
233 |
|
234 |
+
# κ·Έλν ν΄λ¦ μ μκ°λ μΆκ°
|
235 |
+
click_data = st.session_state.get('click_data')
|
236 |
+
if click_data:
|
237 |
+
time_selected = click_data['points'][0]['x']
|
238 |
+
add_selected_time(time_selected)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
|
240 |
+
# μ νλ μκ°λ νμ
|
241 |
display_selected_times()
|
242 |
|
243 |
# λ€μ΄λ‘λ λ²νΌ νμ
|