Update app.py
Browse files
app.py
CHANGED
@@ -49,9 +49,6 @@ def crawl_chats(vod_url):
|
|
49 |
|
50 |
# 채팅 데이터를 순차적으로 요청하여 가져오기
|
51 |
status_text = st.empty() # 상태 메시지 출력용
|
52 |
-
timer_text = st.empty() # 경과 시간 표시용
|
53 |
-
start_time = datetime.datetime.now() # 시작 시간 기록
|
54 |
-
|
55 |
while True:
|
56 |
# API 요청 보내기
|
57 |
response = requests.get(url, params=params, headers=headers)
|
@@ -105,9 +102,7 @@ def crawl_chats(vod_url):
|
|
105 |
laugh_counts[minute_key] += 1
|
106 |
|
107 |
total_chats_collected += len(chats)
|
108 |
-
elapsed_time = datetime.datetime.now() - start_time # 경과 시간 계산
|
109 |
status_text.text(f"현재까지 수집된 채팅 메시지 개수: {total_chats_collected}")
|
110 |
-
timer_text.text(f"경과 시간: {elapsed_time.seconds // 60}분 {elapsed_time.seconds % 60}초") # 경과 시간 표시
|
111 |
|
112 |
# 다음 요청을 위해 playerMessageTime 파라미터 업데이트
|
113 |
next_time = data["content"].get("nextPlayerMessageTime")
|
@@ -117,6 +112,12 @@ def crawl_chats(vod_url):
|
|
117 |
|
118 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
# 선택된 시간대를 표시 및 삭제 기능
|
121 |
def display_selected_times():
|
122 |
if st.session_state['selected_times']:
|
@@ -148,7 +149,7 @@ def download_clips():
|
|
148 |
|
149 |
st.write(f"다운로드 중: {start_time_str} ~ {end_time_str} | 파일명: {output_filename}")
|
150 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
151 |
-
ydl.download([vod_url])
|
152 |
|
153 |
# 버튼을 눌렀을 때 채팅 크롤링 시작
|
154 |
if 'chat_logs' not in st.session_state:
|
@@ -218,28 +219,25 @@ if st.session_state['chat_logs']:
|
|
218 |
title="분당 채팅 및 ㅋㅋㅋㅋ 채팅 개수",
|
219 |
xaxis_title="시간",
|
220 |
yaxis_title="채팅 개수",
|
221 |
-
height=600,
|
222 |
xaxis=dict(showticklabels=False), # x축 시간 레이블 숨김
|
223 |
hovermode="x unified", # 마우스를 올렸을 때 해당 x축에서 툴팁 표시
|
224 |
showlegend=True,
|
225 |
-
margin=dict(l=50, r=50, t=100, b=100)
|
|
|
226 |
)
|
227 |
|
228 |
# 그래프 출력
|
229 |
st.plotly_chart(fig, use_container_width=True)
|
230 |
|
231 |
-
#
|
232 |
-
col1, col2 = st.columns(
|
233 |
-
hour = col1.number_input("시간", min_value=0, max_value=23, value=0)
|
234 |
-
minute = col2.number_input("분", min_value=0, max_value=59, value=0)
|
235 |
|
236 |
-
# 시간대 선택 버튼
|
237 |
if st.button("시간대 선택"):
|
238 |
-
|
239 |
-
selected_time = f"{hour:02}:{minute:02}:00" # "HH:MM:SS" 형식
|
240 |
-
st.session_state['selected_times'].append(selected_time)
|
241 |
|
242 |
-
# 선택된 시간대 표시
|
243 |
display_selected_times()
|
244 |
|
245 |
# 다운로드 버튼 표시
|
|
|
49 |
|
50 |
# 채팅 데이터를 순차적으로 요청하여 가져오기
|
51 |
status_text = st.empty() # 상태 메시지 출력용
|
|
|
|
|
|
|
52 |
while True:
|
53 |
# API 요청 보내기
|
54 |
response = requests.get(url, params=params, headers=headers)
|
|
|
102 |
laugh_counts[minute_key] += 1
|
103 |
|
104 |
total_chats_collected += len(chats)
|
|
|
105 |
status_text.text(f"현재까지 수집된 채팅 메시지 개수: {total_chats_collected}")
|
|
|
106 |
|
107 |
# 다음 요청을 위해 playerMessageTime 파라미터 업데이트
|
108 |
next_time = data["content"].get("nextPlayerMessageTime")
|
|
|
112 |
|
113 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
114 |
|
115 |
+
# 선택한 시간대 추가 및 출력
|
116 |
+
def add_selected_time(hour, minute):
|
117 |
+
time_str = f"{int(hour):02}:{int(minute):02}:00" # HH:MM:00 형식
|
118 |
+
if time_str not in st.session_state['selected_times']:
|
119 |
+
st.session_state['selected_times'].append(time_str)
|
120 |
+
|
121 |
# 선택된 시간대를 표시 및 삭제 기능
|
122 |
def display_selected_times():
|
123 |
if st.session_state['selected_times']:
|
|
|
149 |
|
150 |
st.write(f"다운로드 중: {start_time_str} ~ {end_time_str} | 파일명: {output_filename}")
|
151 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
152 |
+
ydl.download([vod_url[:-6]]) # Remove the last 6 characters ('/chats')
|
153 |
|
154 |
# 버튼을 눌렀을 때 채팅 크롤링 시작
|
155 |
if 'chat_logs' not in st.session_state:
|
|
|
219 |
title="분당 채팅 및 ㅋㅋㅋㅋ 채팅 개수",
|
220 |
xaxis_title="시간",
|
221 |
yaxis_title="채팅 개수",
|
|
|
222 |
xaxis=dict(showticklabels=False), # x축 시간 레이블 숨김
|
223 |
hovermode="x unified", # 마우스를 올렸을 때 해당 x축에서 툴팁 표시
|
224 |
showlegend=True,
|
225 |
+
margin=dict(l=50, r=50, t=100, b=100),
|
226 |
+
height=600 # 그래프 높이 설정
|
227 |
)
|
228 |
|
229 |
# 그래프 출력
|
230 |
st.plotly_chart(fig, use_container_width=True)
|
231 |
|
232 |
+
# 시간대 입력 필드
|
233 |
+
col1, col2 = st.columns([1, 1])
|
234 |
+
hour = col1.number_input("시간", min_value=0, max_value=23, format="%d", value=0)
|
235 |
+
minute = col2.number_input("분", min_value=0, max_value=59, format="%d", value=0)
|
236 |
|
|
|
237 |
if st.button("시간대 선택"):
|
238 |
+
add_selected_time(hour, minute)
|
|
|
|
|
239 |
|
240 |
+
# 선택된 시간대 표시
|
241 |
display_selected_times()
|
242 |
|
243 |
# 다운로드 버튼 표시
|