Spaces:
Runtime error
Runtime error
| 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(""" | |
| <style> | |
| #MainMenu{visibility: hidden;} | |
| td.css-57lzw8:nth-of-type(4){} | |
| footer, label.css-zyb2jl, img.css-1jhkrss, button.css-bl767a {visibility: hidden;} | |
| .copy-button{color:red;} | |
| </style> | |
| """, 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("<hr>", 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() | |