Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +34 -0
src/streamlit_app.py
CHANGED
|
@@ -91,6 +91,7 @@ for k, v in {
|
|
| 91 |
"token": None,
|
| 92 |
"oauth_state": None,
|
| 93 |
"messages": [],
|
|
|
|
| 94 |
"target_emails": [],
|
| 95 |
"target_emails_df": None,
|
| 96 |
"rj_emails": [],
|
|
@@ -321,6 +322,28 @@ def build_target_emails(messages, sender_filter, target_filter):
|
|
| 321 |
return rows
|
| 322 |
|
| 323 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
def extract_tables(body_html):
|
| 325 |
if not body_html:
|
| 326 |
return []
|
|
@@ -452,6 +475,7 @@ if st.button("βΆ Run", disabled=not st.session_state.token):
|
|
| 452 |
try:
|
| 453 |
raw = get_emails(st.session_state.token, int(top_n))
|
| 454 |
st.session_state.messages = raw
|
|
|
|
| 455 |
except requests.HTTPError as e:
|
| 456 |
if e.response.status_code == 401:
|
| 457 |
st.error("Session expired. Please sign in again.")
|
|
@@ -508,6 +532,16 @@ if st.button("βΆ Run", disabled=not st.session_state.token):
|
|
| 508 |
|
| 509 |
# ββ Results ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 510 |
st.markdown('<div class="step-label">Step 4</div>', unsafe_allow_html=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 511 |
st.markdown('<div class="step-title">Debug: All Emails from A to B</div>', unsafe_allow_html=True)
|
| 512 |
|
| 513 |
debug_df = st.session_state.target_emails_df
|
|
|
|
| 91 |
"token": None,
|
| 92 |
"oauth_state": None,
|
| 93 |
"messages": [],
|
| 94 |
+
"messages_df": None,
|
| 95 |
"target_emails": [],
|
| 96 |
"target_emails_df": None,
|
| 97 |
"rj_emails": [],
|
|
|
|
| 322 |
return rows
|
| 323 |
|
| 324 |
|
| 325 |
+
def build_fetched_emails(messages):
|
| 326 |
+
rows = []
|
| 327 |
+
for i, msg in enumerate(messages, 1):
|
| 328 |
+
info = extract_info(msg)
|
| 329 |
+
forwarded = fwd_headers(info.get("body_html", ""))
|
| 330 |
+
rows.append({
|
| 331 |
+
"email_id": info.get("id") or f"msg_{i}",
|
| 332 |
+
"subject": info.get("subject"),
|
| 333 |
+
"from": info.get("from"),
|
| 334 |
+
"to": ", ".join(info.get("to", [])),
|
| 335 |
+
"cc": ", ".join(info.get("cc", [])),
|
| 336 |
+
"received_time": info.get("received_time"),
|
| 337 |
+
"is_rj_forward": is_rj(info),
|
| 338 |
+
"forwarded_from": forwarded.get("forwarded_from", ""),
|
| 339 |
+
"forwarded_to": forwarded.get("forwarded_to", ""),
|
| 340 |
+
"forwarded_cc": forwarded.get("forwarded_cc", ""),
|
| 341 |
+
"forwarded_subject": forwarded.get("forwarded_subject", ""),
|
| 342 |
+
"body_preview": html_to_text(info.get("body_html", ""))[:300],
|
| 343 |
+
})
|
| 344 |
+
return rows
|
| 345 |
+
|
| 346 |
+
|
| 347 |
def extract_tables(body_html):
|
| 348 |
if not body_html:
|
| 349 |
return []
|
|
|
|
| 475 |
try:
|
| 476 |
raw = get_emails(st.session_state.token, int(top_n))
|
| 477 |
st.session_state.messages = raw
|
| 478 |
+
st.session_state.messages_df = pd.DataFrame(build_fetched_emails(raw)) if raw else pd.DataFrame()
|
| 479 |
except requests.HTTPError as e:
|
| 480 |
if e.response.status_code == 401:
|
| 481 |
st.error("Session expired. Please sign in again.")
|
|
|
|
| 532 |
|
| 533 |
# ββ Results ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 534 |
st.markdown('<div class="step-label">Step 4</div>', unsafe_allow_html=True)
|
| 535 |
+
st.markdown('<div class="step-title">Debug: All Fetched Inbox Emails</div>', unsafe_allow_html=True)
|
| 536 |
+
|
| 537 |
+
fetched_df = st.session_state.messages_df
|
| 538 |
+
if fetched_df is not None:
|
| 539 |
+
if not fetched_df.empty:
|
| 540 |
+
st.dataframe(fetched_df, width="stretch", hide_index=True)
|
| 541 |
+
elif st.session_state.messages == []:
|
| 542 |
+
st.caption("Run the fetch step to inspect all fetched inbox emails.")
|
| 543 |
+
|
| 544 |
+
st.markdown('<div class="step-label">Step 5</div>', unsafe_allow_html=True)
|
| 545 |
st.markdown('<div class="step-title">Debug: All Emails from A to B</div>', unsafe_allow_html=True)
|
| 546 |
|
| 547 |
debug_df = st.session_state.target_emails_df
|