File size: 3,046 Bytes
3e996d0
e6ac219
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
 
337a113
e6ac219
337a113
e6ac219
 
 
 
 
 
 
 
337a113
 
 
 
 
 
e6ac219
 
 
 
 
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
import streamlit as st
import pandas as pd
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')}")

        # Display occupancy chart using data from `popularTimesHistogram`
        st.subheader("Occupancy Data")
        occupancy_data = google_maps_data.get('popularTimesHistogram', {})
        df_occupancy = pd.DataFrame()
        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]
                df_occupancy[day] = pd.Series(occupancy, index=hours)
        st.line_chart(df_occupancy, use_container_width=True)

        # Display opening hours
        st.subheader("Opening Hours")
        opening_hours = google_maps_data.get('openingHours', [])
        for entry in opening_hours:
            st.write(f"{entry['day']}: {entry['hours']}")

        # Display reviews data
        st.subheader("Reviews Data")
        st.write(f"Total Reviews Count: {reviews_data['reviewsCount']}")
        df_reviews = pd.DataFrame(list(reviews_data['reviewsDistribution'].items()), columns=['Review', 'Count'])
        st.bar_chart(df_reviews.set_index('Review'))
    else:
        st.write("No results found for this website / company name on Google Maps.")