import pandas as pd import requests import gradio as gr import os # Constants API_URL = 'https://api.electricitymap.org/v3/power-breakdown/latest' API_TOKEN = os.getenv('ELECTRICITYMAP_API_TOKEN') # Define the data data = { "State/UT": ["Andhra Pradesh", "Arunachal Pradesh", "Assam", "Bihar", "Chhattisgarh", "Goa", "Gujarat", "Haryana", "Himachal Pradesh", "Jharkhand", "Karnataka", "Kerala", "Madhya Pradesh", "Maharashtra", "Manipur", "Meghalaya", "Mizoram", "Nagaland", "Odisha", "Punjab", "Rajasthan", "Sikkim", "Tamil Nadu", "Telangana", "Tripura", "Uttar Pradesh", "Uttarakhand", "West Bengal", "Andaman and Nicobar Islands", "Chandigarh", "Dadra and Nagar Haveli and Daman and Diu", "Lakshadweep", "Delhi", "Puducherry", "Ladakh"], "Capital": ["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"], "Latitude": [16.5411, 27.0844, 26.1445, 25.5941, 21.2514, 15.4909, 23.2156, 30.7333, 31.1048, 23.3441, 12.9716, 8.5241, 23.2599, 19.076, 24.817, 25.5788, 23.1645, 25.6747, 20.2961, 30.7333, 26.9124, 27.3389, 13.0827, 17.385, 23.8315, 26.8467, 30.3165, 22.5726, 11.6234, 30.7333, 20.3974, 10.5667, 28.6139, 11.9416, 34.1526], "Longitude": [80.515, 93.6053, 91.7362, 85.1376, 81.6296, 73.8278, 72.6369, 76.7794, 77.1734, 85.3096, 77.5946, 76.9366, 77.4126, 72.8777, 93.9368, 91.8933, 92.9376, 94.1103, 85.8245, 76.7794, 75.7873, 88.6065, 80.2707, 78.4867, 91.2868, 80.9462, 78.0322, 88.3639, 92.7265, 76.7794, 72.8328, 72.6369, 77.209, 79.8083, 77.577] } df = pd.DataFrame(data) # Function to make API request def get_power_breakdown(lat, lon): headers = {'auth-token': API_TOKEN} params = {'lat': lat, 'lon': lon} response = requests.get(API_URL, headers=headers, params=params) if response.status_code == 200: return response.json().get('fossilFreePercentage', 'N/A') else: return 'Error' # Define the function to fetch fossil-free percentage for all states def fetch_fossil_free_percentages(): results = [] for index, row in df.iterrows(): lat, lon = row["Latitude"], row["Longitude"] fossil_free_percentage = get_power_breakdown(lat, lon) results.append({ "State/UT": row["State/UT"], "Capital": row["Capital"], "Latitude": row["Latitude"], "Longitude": row["Longitude"], "Fossil-Free Percentage": fossil_free_percentage }) return pd.DataFrame(results) # Define Gradio interface def show_fossil_free_table(): result_df = fetch_fossil_free_percentages() return result_df gr_interface = gr.Interface(fn=show_fossil_free_table, inputs=None, outputs="dataframe", title="Fossil-Free Percentage by State/UT", description="Click the button below to see the latest fossil-free energy usage percentages for all states and union territories.") gr_interface.launch()