Spaces:
Sleeping
Sleeping
import requests | |
import gradio as gr | |
import os | |
# 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() | |
return data | |
else: | |
return f"Failed to retrieve data: {response.status_code}, {response.text}" | |
# Function to handle multiple inputs | |
def get_multiple_carbon_intensities(lat1, lon1, lat2, lon2, lat3, lon3, lat4, lon4, lat5, lon5): | |
coords = [(lat1, lon1), (lat2, lon2), (lat3, lon3), (lat4, lon4), (lat5, lon5)] | |
results = [] | |
for lat, lon in coords: | |
if lat and lon: | |
result = get_carbon_intensity(lat, lon) | |
results.append(f"Results for lat: {lat}, lon: {lon}\n{result}\n\n") | |
return "\n".join(results) | |
# Gradio interface | |
lat_lon_inputs = [ | |
gr.Textbox(label='Latitude 1'), gr.Textbox(label='Longitude 1'), | |
gr.Textbox(label='Latitude 2'), gr.Textbox(label='Longitude 2'), | |
gr.Textbox(label='Latitude 3'), gr.Textbox(label='Longitude 3'), | |
gr.Textbox(label='Latitude 4'), gr.Textbox(label='Longitude 4'), | |
gr.Textbox(label='Latitude 5'), gr.Textbox(label='Longitude 5') | |
] | |
iface = gr.Interface(fn=get_multiple_carbon_intensities, | |
inputs=lat_lon_inputs, | |
outputs="text", | |
title="Electricity Map Carbon Intensity", | |
description="Enter up to 5 pairs of latitude and longitude to get the latest carbon intensity.") | |
iface.launch() | |