Spaces:
Sleeping
Sleeping
import requests | |
import streamlit as st | |
# Define the API key and base URL | |
API_KEY = 'your_openweathermap_api_key' # Replace with your OpenWeatherMap API key | |
BASE_URL = 'http://api.openweathermap.org/data/2.5/weather' | |
# Function to fetch weather data for Karachi | |
def get_weather(city='Karachi'): | |
params = { | |
'q': city, | |
'appid': API_KEY, | |
'units': 'metric' # Get temperature in Celsius | |
} | |
response = requests.get(BASE_URL, params=params) | |
if response.status_code == 200: | |
return response.json() | |
else: | |
return None | |
# Function to compute a score based on the weather conditions | |
def get_bike_ride_score(weather_data): | |
# Example logic to determine the weather score | |
# You can customize this based on your preferences for biking | |
temperature = weather_data['main']['temp'] | |
humidity = weather_data['main']['humidity'] | |
weather_condition = weather_data['weather'][0]['main'] | |
score = 0 | |
# Temperature: Ideal range for biking is 15°C to 25°C | |
if 15 <= temperature <= 25: | |
score += 50 | |
elif 10 <= temperature < 15 or 25 < temperature <= 30: | |
score += 30 | |
else: | |
score += 10 | |
# Humidity: Ideally below 70% for comfort | |
if humidity <= 60: | |
score += 20 | |
elif 60 < humidity <= 80: | |
score += 10 | |
else: | |
score += 5 | |
# Weather condition: Ideal is clear weather, less ideal are rain or storms | |
if weather_condition in ['Clear', 'Clouds']: | |
score += 30 | |
elif weather_condition in ['Rain', 'Thunderstorm']: | |
score -= 30 | |
else: | |
score -= 20 | |
# Make sure the score is between 0 and 100 | |
score = max(0, min(100, score)) | |
return score | |
# Streamlit UI to display the results | |
def main(): | |
st.title("Bike Ride Day Finder") | |
st.write("This app shows the best days to ride your bike in Karachi based on the weather conditions.") | |
# Get weather data for Karachi | |
weather_data = get_weather('Karachi') | |
if weather_data: | |
score = get_bike_ride_score(weather_data) | |
# Display weather information | |
st.subheader(f"Weather for Karachi: {weather_data['weather'][0]['description']}") | |
st.write(f"Temperature: {weather_data['main']['temp']}°C") | |
st.write(f"Humidity: {weather_data['main']['humidity']}%") | |
# Display the bike ride score on a scale of 0 to 100 | |
st.subheader("Bike Ride Score") | |
st.progress(score) # Display the progress bar | |
if score > 70: | |
st.success("Great day for biking!") | |
elif score > 40: | |
st.warning("Okay for biking, but be cautious.") | |
else: | |
st.error("Not ideal for biking today.") | |
else: | |
st.error("Unable to fetch weather data.") | |
if __name__ == '__main__': | |
main() | |