Update app.py
Browse files
app.py
CHANGED
@@ -93,10 +93,21 @@ def crawl_chats(vod_url):
|
|
93 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
94 |
|
95 |
# λ²νΌμ λλ μ λ μ±ν
ν¬λ‘€λ§ μμ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
if st.button("ν¬λ‘€λ§ μμ"):
|
97 |
if vod_url:
|
98 |
chat_logs, chat_counts, laugh_counts = crawl_chats(vod_url)
|
99 |
|
|
|
|
|
|
|
|
|
100 |
# νμΌλ‘ μ μ₯
|
101 |
file_name = "chat_logs.txt"
|
102 |
with open(file_name, "w") as file:
|
@@ -110,53 +121,52 @@ if st.button("ν¬λ‘€λ§ μμ"):
|
|
110 |
file_name=file_name,
|
111 |
mime="text/plain"
|
112 |
)
|
113 |
-
|
114 |
-
# κ·Έλν μΆλ ₯
|
115 |
-
if chat_counts and laugh_counts:
|
116 |
-
# λ°μ΄ν°νλ μ μμ±
|
117 |
-
times = [time.strftime('%H:%M:%S') for time in chat_counts.keys()]
|
118 |
-
chat_numbers = list(chat_counts.values())
|
119 |
-
laugh_numbers = [laugh_counts.get(time, 0) for time in chat_counts.keys()]
|
120 |
-
df = pd.DataFrame({'μκ°': times, 'μ 체 μ±ν
κ°μ': chat_numbers, 'γ
γ
γ
γ
μ±ν
κ°μ': laugh_numbers})
|
121 |
-
|
122 |
-
# Plotly μ κ·Έλν 그리기
|
123 |
-
fig = go.Figure()
|
124 |
-
|
125 |
-
# μ 체 μ±ν
κ°μ μ κ·Έλν μΆκ°
|
126 |
-
fig.add_trace(go.Scatter(
|
127 |
-
x=df['μκ°'],
|
128 |
-
y=df['μ 체 μ±ν
κ°μ'],
|
129 |
-
mode='lines', # λ§μ»€ μμ΄ μ λ§ νμ
|
130 |
-
name='μ 체 μ±ν
κ°μ',
|
131 |
-
line=dict(color='blue'),
|
132 |
-
hovertemplate='%{x} - μ 체 μ±ν
κ°μ: %{y}<extra></extra>'
|
133 |
-
))
|
134 |
-
|
135 |
-
# γ
γ
γ
γ
μ±ν
κ°μ μ κ·Έλν μΆκ°
|
136 |
-
fig.add_trace(go.Scatter(
|
137 |
-
x=df['μκ°'],
|
138 |
-
y=df['γ
γ
γ
γ
μ±ν
κ°μ'],
|
139 |
-
mode='lines', # λ§μ»€ μμ΄ μ λ§ νμ
|
140 |
-
name='γ
γ
γ
γ
μ±ν
κ°μ',
|
141 |
-
line=dict(color='red'),
|
142 |
-
hovertemplate='%{x} - γ
γ
γ
γ
μ±ν
κ°μ: %{y}<extra></extra>'
|
143 |
-
))
|
144 |
-
|
145 |
-
# κ·Έλν λ μ΄μμ μ€μ
|
146 |
-
fig.update_layout(
|
147 |
-
title="λΆλΉ μ±ν
λ° γ
γ
γ
γ
μ±ν
κ°μ",
|
148 |
-
xaxis_title="μκ°",
|
149 |
-
yaxis_title="μ±ν
κ°μ",
|
150 |
-
xaxis=dict(
|
151 |
-
showticklabels=True # xμΆ μκ° λ μ΄λΈ νμ
|
152 |
-
),
|
153 |
-
hovermode="x unified", # λ§μ°μ€λ₯Ό μ¬λ Έμ λ ν΄λΉ xμΆμμ ν΄ν νμ
|
154 |
-
showlegend=True, # λ²λ‘ νμ
|
155 |
-
margin=dict(l=50, r=50, t=100, b=100) # κ·Έλν μλμͺ½ μ¬λ°±μ μ‘°μ
|
156 |
-
)
|
157 |
-
|
158 |
-
# κ·Έλν μΆλ ₯
|
159 |
-
st.plotly_chart(fig)
|
160 |
-
|
161 |
else:
|
162 |
-
st.warning("URLμ μ
λ ₯νμΈμ.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
return "\n".join(chat_logs), chat_counts, laugh_counts
|
94 |
|
95 |
# λ²νΌμ λλ μ λ μ±ν
ν¬λ‘€λ§ μμ
|
96 |
+
if 'chat_logs' not in st.session_state:
|
97 |
+
st.session_state['chat_logs'] = None
|
98 |
+
if 'chat_counts' not in st.session_state:
|
99 |
+
st.session_state['chat_counts'] = None
|
100 |
+
if 'laugh_counts' not in st.session_state:
|
101 |
+
st.session_state['laugh_counts'] = None
|
102 |
+
|
103 |
if st.button("ν¬λ‘€λ§ μμ"):
|
104 |
if vod_url:
|
105 |
chat_logs, chat_counts, laugh_counts = crawl_chats(vod_url)
|
106 |
|
107 |
+
st.session_state['chat_logs'] = chat_logs
|
108 |
+
st.session_state['chat_counts'] = chat_counts
|
109 |
+
st.session_state['laugh_counts'] = laugh_counts
|
110 |
+
|
111 |
# νμΌλ‘ μ μ₯
|
112 |
file_name = "chat_logs.txt"
|
113 |
with open(file_name, "w") as file:
|
|
|
121 |
file_name=file_name,
|
122 |
mime="text/plain"
|
123 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
else:
|
125 |
+
st.warning("URLμ μ
λ ₯νμΈμ.")
|
126 |
+
|
127 |
+
# μ΄μ μ ν¬λ‘€λ§ν κ²°κ³Όκ° μμΌλ©΄ κ·Έλνμ λ€μ΄λ‘λ λ²νΌ νμ
|
128 |
+
if st.session_state['chat_logs']:
|
129 |
+
# λ°μ΄ν°νλ μ μμ±
|
130 |
+
times = [time.strftime('%H:%M:%S') for time in st.session_state['chat_counts'].keys()]
|
131 |
+
chat_numbers = list(st.session_state['chat_counts'].values())
|
132 |
+
laugh_numbers = [st.session_state['laugh_counts'].get(time, 0) for time in st.session_state['chat_counts'].keys()]
|
133 |
+
df = pd.DataFrame({'μκ°': times, 'μ 체 μ±ν
κ°μ': chat_numbers, 'γ
γ
γ
γ
μ±ν
κ°μ': laugh_numbers})
|
134 |
+
|
135 |
+
# Plotly μ κ·Έλν 그리기
|
136 |
+
fig = go.Figure()
|
137 |
+
|
138 |
+
# μ 체 μ±ν
κ°μ μ κ·Έλν μΆκ°
|
139 |
+
fig.add_trace(go.Scatter(
|
140 |
+
x=df['μκ°'],
|
141 |
+
y=df['μ 체 μ±ν
κ°μ'],
|
142 |
+
mode='lines', # λ§μ»€ μμ΄ μ λ§ νμ
|
143 |
+
name='μ 체 μ±ν
κ°μ',
|
144 |
+
line=dict(color='blue'),
|
145 |
+
hovertemplate='%{x} - μ 체 μ±ν
κ°μ: %{y}<extra></extra>'
|
146 |
+
))
|
147 |
+
|
148 |
+
# γ
γ
γ
γ
μ±ν
κ°μ μ κ·Έλν μΆκ°
|
149 |
+
fig.add_trace(go.Scatter(
|
150 |
+
x=df['μκ°'],
|
151 |
+
y=df['γ
γ
γ
γ
μ±ν
κ°μ'],
|
152 |
+
mode='lines', # λ§μ»€ μμ΄ μ λ§ νμ
|
153 |
+
name='γ
γ
γ
γ
μ±ν
κ°μ',
|
154 |
+
line=dict(color='red'),
|
155 |
+
hovertemplate='%{x} - γ
γ
γ
γ
μ±ν
κ°μ: %{y}<extra></extra>'
|
156 |
+
))
|
157 |
+
|
158 |
+
# κ·Έλν λ μ΄μμ μ€μ
|
159 |
+
fig.update_layout(
|
160 |
+
title="λΆλΉ μ±ν
λ° γ
γ
γ
γ
μ±ν
κ°μ",
|
161 |
+
xaxis_title="μκ°",
|
162 |
+
yaxis_title="μ±ν
κ°μ",
|
163 |
+
xaxis=dict(
|
164 |
+
showticklabels=True # xμΆ μκ° λ μ΄λΈ νμ
|
165 |
+
),
|
166 |
+
hovermode="x unified", # λ§μ°μ€λ₯Ό μ¬λ Έμ λ ν΄λΉ xμΆμμ ν΄ν νμ
|
167 |
+
showlegend=True, # λ²λ‘ νμ
|
168 |
+
margin=dict(l=50, r=50, t=100, b=100) # κ·Έλν μλμͺ½ μ¬λ°±μ μ‘°μ
|
169 |
+
)
|
170 |
+
|
171 |
+
# κ·Έλν μΆλ ₯
|
172 |
+
st.plotly_chart(fig)
|