indiancitiesAQI / app.py
dindizz's picture
Update app.py
920f1bf verified
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()