Spaces:
Sleeping
Sleeping
File size: 3,262 Bytes
3e996d0 e6ac219 eccb5e1 ba1946b 932e360 e6ac219 932e360 fce2a17 e6ac219 fce2a17 d1daf4e 932e360 e6ac219 fce2a17 932e360 fce2a17 e6ac219 fce2a17 932e360 d1daf4e fce2a17 4bd8d7f e6ac219 d1daf4e fce2a17 d26ed7b fce2a17 4bd8d7f e6ac219 4bd8d7f e6ac219 eccb5e1 e6ac219 337a113 e6ac219 03ea6cd eccb5e1 745d383 eccb5e1 03ea6cd 337a113 fce2a17 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import streamlit as st
import pandas as pd
import numpy as np
from apify_client import ApifyClient
import requests
# Function to fetch Google Maps info
def fetch_google_maps_info(website_name):
apify_client = ApifyClient("apify_api_uz0y556N4IG2aLcESj67kmnGSUpHF12XAkLp")
run_input = {"searchStringsArray": [website_name]}
run = apify_client.actor("nwua9Gu5YrADL7ZDj").call(run_input=run_input)
items = list(apify_client.dataset(run["defaultDatasetId"]).iterate_items())
return items[0] if items else None
# Function to fetch weather info
def fetch_weather_info(lat, lon):
API_KEY = "91b23cab82ee530b2052c8757e343b0d"
url = f"https://api.openweathermap.org/data/3.0/onecall?lat={lat}&lon={lon}&exclude=hourly,daily&appid={API_KEY}"
response = requests.get(url)
return response.json()
# Streamlit app
st.title("Data Visualization")
website_name = st.text_input("Enter a website / company name:")
if website_name:
google_maps_data = fetch_google_maps_info(website_name)
if google_maps_data:
# Display website link in a specific output box
website_link = google_maps_data.get('website')
st.text_area("Website Link:", website_link)
# Display location and fetch weather info
lat = google_maps_data["location"]["lat"]
lng = google_maps_data["location"]["lng"]
if lat and lng:
st.map(pd.DataFrame({'lat': [lat], 'lon': [lng]})) # Display the map
weather_data = fetch_weather_info(lat, lng)
current_weather = weather_data.get("current", {})
temp_in_celsius = current_weather.get('temp') - 273.15
st.write(f"**Location:** {lat}, {lng}")
st.write(f"**Temperature:** {temp_in_celsius:.2f}°C")
st.write(f"**Weather:** {current_weather.get('weather')[0].get('description')}")
# Occupancy Data
st.subheader("Occupancy Data")
occupancy_data = google_maps_data.get('popularTimesHistogram', {})
for day, day_data in occupancy_data.items():
if day_data:
hours = [entry['hour'] for entry in day_data]
occupancy = [entry['occupancyPercent'] for entry in day_data]
st.write(day)
st.bar_chart(pd.Series(occupancy, index=hours), use_container_width=True)
# Review Count and Distribution
st.subheader("Review Count and Distribution")
st.write(f"Total Reviews Count: {google_maps_data['reviewsCount']}")
review_distribution = google_maps_data['reviewsDistribution']
days_order = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
ordered_distribution = {day: review_distribution.get(day, 0) for day in days_order}
st.bar_chart(pd.Series(ordered_distribution), use_container_width=True)
# Reviews Table
st.subheader("Customer Reviews")
reviews = google_maps_data.get('reviews', [])
if reviews:
review_df = pd.DataFrame(reviews)
st.table(review_df[['name', 'text', 'publishAt', 'likesCount', 'stars']])
else:
st.write("No reviews available.")
else:
st.write("No results found for this website / company name on Google Maps.") |