yashraizada's picture
Create app.py
b087c4c
import streamlit as st
from data import *
from utils import *
from images import *
# Setting Page Config
set_page_config()
# Load datasets
business_dataset = get_business_data()
top_reviews_dataset = get_top_reviews_per_business()
user_dataset = get_users_data()
business_names = get_business_names(business_dataset)
# Define Search Buttons
_, select_business_col, select_location_col, _ = st.columns([1, 1, 1, 1])
with select_business_col:
selected_business = st.selectbox(label="Select a business", options=business_names, placeholder="Search for a business...", index=None, label_visibility="hidden")
with select_location_col:
if selected_business:
options = get_business_locations(business_dataset, selected_business)
index_value = 0
else:
options = ["Select a business to see locations"]
index_value = None
selected_location = st.selectbox(label="Select a location", options=options, placeholder="in United States of America", index=index_value, label_visibility="hidden")
# Adding space after the search buttons
draw_space()
# Define columns for business info and review insights
business_info_col, _, review_insights_col = st.columns([0.6, 0.1, 0.3])
with business_info_col:
# Define columns for business image, business description, and business review summary
business_image_col, _, business_description_col, _, business_review_summary_col = st.columns([0.2, 0.05, 0.4, 0.05, 0.3])
if selected_business:
# Get a dictonary with all information for the selected business
selected_business_dict = get_business_info(business_dataset, selected_business, selected_location)
with st.container():
with business_image_col:
st.image(get_business_logo_url(selected_business_dict['name'].lower()))
with business_description_col:
st.subheader(selected_business_dict['name'])
st.markdown(f'''{selected_business_dict['address']}
{selected_business_dict['price_range']}  •  {selected_business_dict['wifi']} Wifi  •  {selected_business_dict['categories']}
''')
with business_review_summary_col:
st.subheader("Overall Rating")
st.image(get_business_stars_url(selected_business_dict['stars']), width=150)
st.markdown(f"##### {selected_business_dict['review_count']} reviews")
draw_space()
draw_line()
selected_business_reviews = get_selected_business_reviews(top_reviews_dataset, selected_business_dict['id'])
st.subheader('Recommended Reviews')
draw_space()
for i in range(5):
# Define columns for user avatar and user info
user_avatar_col, user_info_col = st.columns([0.1, 0.9])
# Load dependencies
review_dict = selected_business_reviews.iloc[i, :]
user_id = review_dict['user_id']
user_info_dict = get_user_info(user_dataset, user_id)
user_avatar_url = get_user_avatar_url(user_id)
with st.container():
with user_avatar_col:
st.image(user_avatar_url)
with user_info_col:
st.markdown(f"###### {user_info_dict['name']}")
st.markdown(f"{user_info_dict['review_count']} reviews  •  {user_info_dict['fans']} fans  •  {user_info_dict['friends_count']} friends  •  {user_info_dict['years_on_yelp']} years on Yelp  •  Elite for {user_info_dict['elite_years_count']} years")
with st.container():
review_rating_col, review_date_col = st.columns([0.12, 0.88])
with review_rating_col:
st.image(get_business_stars_url(review_dict['stars']))
with review_date_col:
st.markdown(review_dict['date'])
with st.container():
st.markdown(review_dict['text'])
draw_space()
with review_insights_col:
pass