lcjln commited on
Commit
f668ae9
·
verified ·
1 Parent(s): 2e93dfd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -17
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(2)
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
  # 다운로드 버튼 표시