carbonintensity / app.py
dindizz's picture
Update app.py
973d9e1 verified
raw
history blame contribute delete
No virus
1.8 kB
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()