import streamlit as st
import streamlit.components.v1 as components
import random
from pathlib import Path
paths_to_html = [Path(filename) for filename in Path("./html_files/").glob("*.html")]
# path_to_html = random.choice(paths_to_html)
# Show in webpage
# written_by = {}
# st.header(f"Judge this email")
# with open(path_to_html, "r") as f:
# html_data = f.read()
# st.components.v1.html(html_data, height=2100)
# written_by[path_to_html.as_posix()] = st.sidebar.radio(
# "Written by a human or generated by AI ?",
# ["Human", "AI"],
# horizontal=True,
# index=None, #random.randint(0, 1),
# key=path_to_html,
# )
# # col1, col2 = st.columns([1,1])
# with col1:
# if st.button(label="Human", key=path_to_html.as_posix()+"human"):
# written_by[path_to_html.as_posix()] = "human"
# with col2:
# if st.button(label="GenAI", key=path_to_html.as_posix()+"ai"):
# written_by[path_to_html.as_posix()] = "ai"
# st.components.v1.html(
# """
"""
# )
# st.stop()
label_to_number = {"Human":0, "AI":1}
if "html_idx" not in st.session_state:
st.session_state.html_idx = 0
if "html_ratings" not in st.session_state:
st.session_state.html_ratings = {}
# Display the image
path_to_html = paths_to_html[st.session_state.html_idx]
with open(path_to_html, "r") as f:
html_data = f.read()
st.components.v1.html(html_data, height=2100)
if st.session_state["html_idx"] in st.session_state.html_ratings:
rating = st.session_state.html_ratings[st.session_state.html_idx]
else:
rating = ""
if rating := st.radio(
"Written by a human or generated by AI ?",
["Human", "AI"],
horizontal=True,
index=None if rating == "" else label_to_number[rating],
key=path_to_html,
):
st.session_state.html_ratings[st.session_state.html_idx] = rating
st.info("Submitted!")
if st.button("Next email", key="next"):
idx = st.session_state.html_idx
idx = (idx + 1) % len(paths_to_html)
st.session_state.html_idx = idx
st.experimental_rerun()
elif st.button("Previous email", key="previous"):
idx = st.session_state.html_idx
idx = (idx - 1) % len(paths_to_html)
st.session_state.html_idx = idx
st.experimental_rerun()
else:
if st.button("Quit", key="quit"):
# send email with data or append to jsonl file
st.success(f"Thank you for rating {len(st.session_state.html_ratings)} emails, you can close the webpage.")
# st.session_state