dindizz's picture
Update app.py
722968a verified
import requests
import gradio as gr
import os
import pandas as pd
# Predefined data for states and their latitude and longitude
locations = [
{"State/UT": "Andhra Pradesh", "Capital": "Amaravati", "Latitude": 16.5411, "Longitude": 80.515},
{"State/UT": "Arunachal Pradesh", "Capital": "Itanagar", "Latitude": 27.0844, "Longitude": 93.6053},
{"State/UT": "Assam", "Capital": "Dispur", "Latitude": 26.1445, "Longitude": 91.7362},
{"State/UT": "Bihar", "Capital": "Patna", "Latitude": 25.5941, "Longitude": 85.1376},
{"State/UT": "Chhattisgarh", "Capital": "Raipur", "Latitude": 21.2514, "Longitude": 81.6296},
{"State/UT": "Goa", "Capital": "Panaji", "Latitude": 15.4909, "Longitude": 73.8278},
{"State/UT": "Gujarat", "Capital": "Gandhinagar", "Latitude": 23.2156, "Longitude": 72.6369},
{"State/UT": "Haryana", "Capital": "Chandigarh", "Latitude": 30.7333, "Longitude": 76.7794},
{"State/UT": "Himachal Pradesh", "Capital": "Shimla", "Latitude": 31.1048, "Longitude": 77.1734},
{"State/UT": "Jharkhand", "Capital": "Ranchi", "Latitude": 23.3441, "Longitude": 85.3096},
{"State/UT": "Karnataka", "Capital": "Bengaluru", "Latitude": 12.9716, "Longitude": 77.5946},
{"State/UT": "Kerala", "Capital": "Thiruvananthapuram", "Latitude": 8.5241, "Longitude": 76.9366},
{"State/UT": "Madhya Pradesh", "Capital": "Bhopal", "Latitude": 23.2599, "Longitude": 77.4126},
{"State/UT": "Maharashtra", "Capital": "Mumbai", "Latitude": 19.076, "Longitude": 72.8777},
{"State/UT": "Manipur", "Capital": "Imphal", "Latitude": 24.817, "Longitude": 93.9368},
{"State/UT": "Meghalaya", "Capital": "Shillong", "Latitude": 25.5788, "Longitude": 91.8933},
{"State/UT": "Mizoram", "Capital": "Aizawl", "Latitude": 23.1645, "Longitude": 92.9376},
{"State/UT": "Nagaland", "Capital": "Kohima", "Latitude": 25.6747, "Longitude": 94.1103},
{"State/UT": "Odisha", "Capital": "Bhubaneswar", "Latitude": 20.2961, "Longitude": 85.8245},
{"State/UT": "Punjab", "Capital": "Chandigarh", "Latitude": 30.7333, "Longitude": 76.7794},
{"State/UT": "Rajasthan", "Capital": "Jaipur", "Latitude": 26.9124, "Longitude": 75.7873},
{"State/UT": "Sikkim", "Capital": "Gangtok", "Latitude": 27.3389, "Longitude": 88.6065},
{"State/UT": "Tamil Nadu", "Capital": "Chennai", "Latitude": 13.0827, "Longitude": 80.2707},
{"State/UT": "Telangana", "Capital": "Hyderabad", "Latitude": 17.385, "Longitude": 78.4867},
{"State/UT": "Tripura", "Capital": "Agartala", "Latitude": 23.8315, "Longitude": 91.2868},
{"State/UT": "Uttar Pradesh", "Capital": "Lucknow", "Latitude": 26.8467, "Longitude": 80.9462},
{"State/UT": "Uttarakhand", "Capital": "Dehradun", "Latitude": 30.3165, "Longitude": 78.0322},
{"State/UT": "West Bengal", "Capital": "Kolkata", "Latitude": 22.5726, "Longitude": 88.3639},
{"State/UT": "Andaman and Nicobar Islands", "Capital": "Port Blair", "Latitude": 11.6234, "Longitude": 92.7265},
{"State/UT": "Chandigarh", "Capital": "Chandigarh", "Latitude": 30.7333, "Longitude": 76.7794},
{"State/UT": "Dadra and Nagar Haveli and Daman and Diu", "Capital": "Daman", "Latitude": 20.3974, "Longitude": 72.8328},
{"State/UT": "Lakshadweep", "Capital": "Kavaratti", "Latitude": 10.5667, "Longitude": 72.6369},
{"State/UT": "Delhi", "Capital": "New Delhi", "Latitude": 28.6139, "Longitude": 77.209},
{"State/UT": "Puducherry", "Capital": "Puducherry", "Latitude": 11.9416, "Longitude": 79.8083},
{"State/UT": "Ladakh", "Capital": "Leh", "Latitude": 34.1526, "Longitude": 77.577}
]
# Function to get carbon intensity for a specific latitude and longitude
def get_carbon_intensity(lat, lon):
api_token = os.getenv('API_TOKEN') # Get API token from environment variables
url = f'https://api.electricitymap.org/v3/carbon-intensity/latest?lat={lat}&lon={lon}'
headers = {
'auth-token': api_token
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
carbon_intensity = data.get("carbonIntensity", "N/A")
return carbon_intensity
else:
return f"Failed to retrieve data: {response.status_code}, {response.text}"
# Function to handle multiple inputs
def get_all_carbon_intensities():
results = []
for location in locations:
lat = location["Latitude"]
lon = location["Longitude"]
carbon_intensity = get_carbon_intensity(lat, lon)
location["Carbon Intensity"] = carbon_intensity
results.append(location)
df = pd.DataFrame(results)
return df
# Gradio interface
iface = gr.Interface(fn=get_all_carbon_intensities,
inputs=[],
outputs=gr.DataFrame(),
title="Electricity Map Carbon Intensity",
description="Get the latest carbon intensity for predefined locations.")
iface.launch()