Spaces:
Build error
Build error
| import streamlit as st | |
| import gspread | |
| from google.oauth2.service_account import Credentials | |
| import pandas as pd | |
| def CreatePage(): | |
| st.header("View & Download Results") | |
| if "results" in st.session_state and st.session_state["results"]: | |
| results_df = pd.DataFrame(st.session_state["results"]) | |
| st.write("### Results Preview") | |
| # Display the results preview | |
| if "Extracted Information" in results_df.columns and "Search Results" in results_df.columns: | |
| st.dataframe(results_df.style.map(lambda val: 'background-color: #d3f4ff' if isinstance(val, str) else '', subset=["Extracted Information", "Search Results"])) | |
| else: | |
| st.warning("Required columns are missing in results data.") | |
| # Download options | |
| download_option = st.selectbox( | |
| "Select data to download:", | |
| ["All Results", "Extracted Information", "Web Results"] | |
| ) | |
| if download_option == "All Results": | |
| data_to_download = results_df | |
| elif download_option == "Extracted Information": | |
| data_to_download = results_df[["Entity", "Extracted Information"]] | |
| elif download_option == "Web Results": | |
| data_to_download = results_df[["Entity", "Search Results"]] | |
| st.download_button( | |
| label=f"Download {download_option} as CSV", | |
| data=data_to_download.to_csv(index=False), | |
| file_name=f"{download_option.lower().replace(' ', '_')}.csv", | |
| mime="text/csv" | |
| ) | |
| # Option to update Google Sheets | |
| update_option = st.selectbox( | |
| "Do you want to update Google Sheets?", | |
| ["No", "Yes"] | |
| ) | |
| if update_option == "Yes": | |
| if 'sheet_id' not in st.session_state: | |
| st.session_state.sheet_id = '' | |
| if 'range_name' not in st.session_state: | |
| st.session_state.range_name = '' | |
| # Input fields for Google Sheets ID and Range | |
| sheet_id = st.text_input("Enter Google Sheet ID", value=st.session_state.sheet_id) | |
| range_name = st.text_input("Enter Range (e.g., 'Sheet1!A1')", value=st.session_state.range_name) | |
| if sheet_id and range_name: | |
| st.session_state.sheet_id = sheet_id | |
| st.session_state.range_name = range_name | |
| # Prepare data for update | |
| data_to_update = [results_df.columns.tolist()] + results_df.values.tolist() | |
| # Update Google Sheets button | |
| if st.button("Update Google Sheet"): | |
| try: | |
| if '!' not in range_name: | |
| st.error("Invalid range format. Please use the format 'SheetName!Range'.") | |
| else: | |
| sheet_name, cell_range = range_name.split('!', 1) | |
| scopes = ["https://www.googleapis.com/auth/spreadsheets"] | |
| creds = Credentials.from_service_account_file("/Users/sam22ridhi/Desktop/data/DataScribe/credentials/credentials.json", scopes=scopes) | |
| client = gspread.authorize(creds) | |
| sheet = client.open_by_key(sheet_id).worksheet(sheet_name) | |
| sheet.clear() | |
| sheet.update(f"{cell_range}", data_to_update) | |
| st.success("Data updated in the Google Sheet!") | |
| except Exception as e: | |
| st.error(f"Error updating Google Sheet: {e}") | |
| else: | |
| st.warning("Please enter both the Sheet ID and Range name before updating.") | |
| else: | |
| st.warning("No results available to view. Please run the extraction process.") |