import requests import gradio as gr import pandas as pd import os from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder import numpy as np from datetime import datetime, timedelta # Load dataset file_path = "indian_cities_weather_2015.csv" df = pd.read_csv(file_path) # Convert Date to Datetime df['Date'] = pd.to_datetime(df['Date']) # Encode country names as numbers le = LabelEncoder() df['City'] = le.fit_transform(df['City']) # Extract useful features df['Hour'] = df['Date'].dt.hour df['Day'] = df['Date'].dt.day df['Month'] = df['Date'].dt.month # Features and Targets X = df[['Hour', 'Day', 'Month', 'City']] y = df[['Temperature', 'Humidity', 'Pressure', 'Rain', 'Cloud']] # Split data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Train Model model = RandomForestRegressor(n_estimators=100, random_state=42) model.fit(X_train, y_train) var1 = os.getenv("variable_1") var2 = os.getenv("variable_2") def get_weather(city): result = f"{var1}q={city}&appid={var2}&units=metric" response = requests.get(result).json() if response.get("cod") != "200": return "❌ Invalid city name! Please enter a correct city." weather_info = {} # Organizing data by date for entry in response["list"]: date = entry["dt_txt"].split(" ")[0] # Extract only the date time = entry["dt_txt"].split(" ")[1] # Extract only the time if date not in weather_info: weather_info[date] = [] weather_info[date].append([ time, f"{entry['main']['temp']}°C", f"{entry['main']['humidity']}%", f"{entry['main']['pressure']} hPa", f"{entry['wind']['speed']} m/s", f"{entry['rain']['3h']} mm" if "rain" in entry and "3h" in entry["rain"] else "0 mm", f"{entry['clouds']['all']}%" ]) # Formatting output as tables inside boxes markdown_output = "