import streamlit as st import uuid import boto3 import botocore import streamlit.components.v1 as components from streamlit_autorefresh import st_autorefresh import requests from all_funcs import * from create_table import * AWS_ACCESS_KEY_ID = st.secrets["AWS_ACCESS_KEY"] AWS_SECRET_ACCESS_KEY = st.secrets["AWS_SECRET_ACCESS_KEY"] s3 = boto3.client("s3", region_name='ap-south-1', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY) res = boto3.resource("s3", region_name='ap-south-1', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY) st.markdown(""" """, unsafe_allow_html=True) if "iden" not in st.session_state: st.session_state["iden"] = None st.session_state["sesInBucket"] = None st.session_state['dataInBucket'] = None st.session_state['linksFinal'] = [] st.session_state['editLinks'] = [] st.session_state['chosen'] = "" st.session_state["refresh"] = "" id_place_con = st.sidebar.container() def from_session(): already_in_body = st.session_state.dataInBucket sessions_here = already_in_body.split(",") a = [] indices = [("Comparison "+ str(num)) for num in range(1, len(sessions_here)+1)] comparison_data_con = st.sidebar.container() with comparison_data_con: chosen = st.selectbox("Choose Session:", indices) a = list(set(sessions_here[indices.index(chosen)].split("\n"))) a.remove("") if st.session_state["refresh"] == True: st.session_state.linksFinal = [] if chosen != st.session_state.chosen: st.session_state.chosen = chosen st.session_state["a"] = a st.session_state["linksFinal"] = a return sessions_here def main(): #if "hey" not in st.session_state: count = st_autorefresh(interval=1, limit=2, key="hey") #st.write(st.session_state) id_place_con.text("Comparison ID:") id_place_con.code(st.session_state.iden.replace(".txt", "")) id_place_con.download_button("Download ID", st.session_state.iden.replace(".txt", ""), file_name="Session ID.txt") id_place_con.warning("Keep Comparison ID to access and save your comparisons.") id_place_con.markdown("
", unsafe_allow_html=True) if st.session_state.sesInBucket==True: sessions_here = from_session() else: sessions_here = [] #st.write(st.session_state.linksFinal) if len(st.session_state) > 1: for k in st.session_state: if st.session_state[k] == True and k.isdigit(): st.session_state["linksFinal"].pop(int(k)) with st.sidebar.form(key='my_form'): placeholder = st.empty() s = placeholder.text_input(label='Enter Amazon Product Page URL') submit = st.form_submit_button(label='Submit') if submit: try: check_paste = requests.get(s) if s in st.session_state["linksFinal"] or s.find("amazon.in") == -1: pass else: st.session_state["linksFinal"].append(s) except: st.error('Not a valid URL') conf1, refre1 = st.sidebar.columns([1, 1]) confirm = conf1.button("Compare") refresh = refre1.button("Empty List", key="refresh") if refresh: st.session_state.linksFinal = [] if len(st.session_state.linksFinal) == 0: pass else: exp=st.expander("Expand", expanded=True) with exp: create_vars(st.columns(len(st.session_state.linksFinal))) if confirm: string = create_table(st.session_state.linksFinal) save_data_in_session(string, st.session_state.sesInBucket, sessions_here) #count = st_autorefresh(interval=1, limit=2) if st.session_state.iden != None: main() else: enter_it = st.sidebar.container() lol2 = st.sidebar.container() create_it = st.sidebar.container() with enter_it: textPlace = st.empty() produce_error = st.empty() enter_uni_id = textPlace.text_input("Enter Comparison ID if you have one:") if enter_uni_id == "": pass else: try: check_iden = s3.get_object(Bucket="productreviewsdata", Key="sessions/"+enter_uni_id+".txt") st.session_state.iden = enter_uni_id + ".txt" st.session_state.sesInBucket = True st.session_state.dataInBucket = already_in_body = check_iden["Body"].read().decode() textPlace.empty() produce_error.empty() except Exception as e: produce_error.error("Comparison ID not found!") with lol2: or_thing = st.empty() or_thing.write("OR") with create_it: create_it_button = st.empty() thing = create_it_button.button("Create Comparison ID") if thing == True: iden = str(uuid.uuid4()) st.session_state["iden"] = iden + ".txt" st.session_state.sesInBucket = False if st.session_state.iden != None: textPlace.empty() or_thing.empty() create_it_button.empty() produce_error.empty() main()