import requests import gradio as gr import pandas as pd import os def fetch_air_quality(city, api_key): url = f"http://api.waqi.info/feed/{city}/?token={api_key}" response = requests.get(url) if response.status_code == 200: try: data = response.json() if 'data' in data and 'aqi' in data['data'] and 'time' in data['data'] and 's' in data['data']['time']: aqi = data['data']['aqi'] timestamp = data['data']['time']['s'] # Assuming the API's timestamp is in UTC timestamp_with_zone = f"{timestamp} UTC" return {'City': city, 'AQI': aqi, 'Timestamp': timestamp_with_zone} else: return {'City': city, 'AQI': 'Data not available', 'Timestamp': 'N/A'} except ValueError: return {'City': city, 'AQI': 'Invalid response', 'Timestamp': 'N/A'} else: return {'City': city, 'AQI': 'Error', 'Timestamp': 'N/A'} def get_air_quality(): cities = [ "Amaravati", "Itanagar", "Dispur", "Patna", "Raipur", "Panaji", "Gandhinagar", "Chandigarh", "Shimla", "Ranchi", "Bengaluru", "Thiruvananthapuram", "Bhopal", "Mumbai", "Imphal", "Shillong", "Aizawl", "Kohima", "Bhubaneswar", "Chandigarh", "Jaipur", "Gangtok", "Chennai", "Hyderabad", "Agartala", "Lucknow", "Dehradun", "Kolkata", "Port Blair", "Chandigarh", "Daman", "Kavaratti", "New Delhi", "Puducherry", "Leh" ] api_key = os.getenv("API_KEY") results = [fetch_air_quality(city, api_key) for city in cities] df = pd.DataFrame(results) return df def display_air_quality(): df = get_air_quality() return df iface = gr.Interface( fn=display_air_quality, inputs=None, outputs=gr.Dataframe(label="Air Quality Index by City"), title="Air Quality Index Checker", description="Displays the AQI and Timestamp (UTC) for various cities." ) iface.launch()