Spaces:
Sleeping
Sleeping
import gradio as gr | |
def disaster_warning(wind_speed, rain_level, temperature, water_speed, air_pressure): | |
alerts = [] | |
color = "green" | |
# Umuyaga | |
if wind_speed > 80: | |
alerts.append("⚠️ Umuyaga ukabije! Ishyirwa mu bikorwa rya evacuation rirakenewe.") | |
color = "red" | |
elif wind_speed > 50: | |
alerts.append("⚠️ Umuyaga urimo gukaza, jya witegura.") | |
if color != "red": | |
color = "orange" | |
else: | |
alerts.append("✅ Umuyaga uri ku rugero rwiza.") | |
# Imvura | |
if rain_level > 100: | |
alerts.append("⚠️ Imvura nyinshi cyane! Hari ibyago byo kunyura mu mazi (Flood).") | |
color = "red" | |
elif rain_level > 50: | |
alerts.append("⚠️ Imvura iragwa, jya witegura gucunga neza umutekano.") | |
if color != "red": | |
color = "orange" | |
else: | |
alerts.append("✅ Imvura iri ku rugero rusanzwe.") | |
# Ubushyuhe | |
if temperature > 35: | |
alerts.append("⚠️ Ubushyuhe burenze! Hari ibyago byo gufatwa na heat stroke.") | |
color = "red" | |
elif temperature < 0: | |
alerts.append("⚠️ Ubushyuhe buke cyane! Hari ibyago byo gufatwa na hypothermia.") | |
if color != "red": | |
color = "orange" | |
else: | |
alerts.append("✅ Ubushyuhe buri ku rugero rwiza.") | |
# Umuvuduko w’amazi | |
if water_speed > 10: | |
alerts.append("⚠️ Umuvuduko w’amazi uri hejuru cyane, hari ibyago by’imyuzure.") | |
color = "red" | |
elif water_speed > 5: | |
alerts.append("⚠️ Umuvuduko w’amazi uri hejuru, witegure.") | |
if color != "red": | |
color = "orange" | |
else: | |
alerts.append("✅ Umuvuduko w’amazi uri ku rugero rwiza.") | |
# Uburemere bw’umwuka | |
if air_pressure < 980: | |
alerts.append("⚠️ Uburemere bw’umwuka buri hasi cyane, bishobora gutera ibiza.") | |
color = "red" | |
elif air_pressure < 1000: | |
alerts.append("⚠️ Uburemere bw’umwuka buri hasi, jya witegura.") | |
if color != "red": | |
color = "orange" | |
else: | |
alerts.append("✅ Uburemere bw’umwuka buri ku rugero rwiza.") | |
return "\n".join(alerts), color | |
def send_alert(email, message): | |
# Simulation yo kohereza email | |
if email and "@" in email: | |
return f"✅ Alert yoherejwe kuri {email}" | |
else: | |
return "❌ Email yinjijwe si nziza." | |
with gr.Blocks() as demo: | |
gr.Markdown("## Disaster Warning System (Version ifite Ibipimo byinshi, Alerts, na Colors)") | |
wind = gr.Slider(0, 150, step=1, label="Umuyaga (km/h)", value=20) | |
rain = gr.Slider(0, 200, step=1, label="Imvura (mm)", value=10) | |
temp = gr.Slider(-20, 50, step=1, label="Ubushyuhe (°C)", value=25) | |
water = gr.Slider(0, 20, step=0.1, label="Umuvuduko w’amazi (m/s)", value=2) | |
pressure = gr.Slider(950, 1050, step=1, label="Uburemere bw’umwuka (hPa)", value=1013) | |
output = gr.Textbox(label="Amakuru y'Ikibazo", lines=12) | |
email = gr.Textbox(label="Andika Email woherezaho Alert") | |
send_btn = gr.Button("📧 Ohereza Alert") | |
alert_status = gr.Textbox(label="Status yo kohereza Alert") | |
def update_output(*args): | |
alerts, color = disaster_warning(*args) | |
return alerts, f"background-color:{color}; padding:10px; border-radius:5px; color: white;" | |
wind.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output]) | |
rain.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output]) | |
temp.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output]) | |
water.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output]) | |
pressure.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output]) | |
send_btn.click(fn=send_alert, inputs=[email, output], outputs=alert_status) | |
# Kubanza kwerekana amakuru ya default | |
alerts, color = disaster_warning(20, 10, 25, 2, 1013) | |
output.value = alerts | |
# Styling ya default | |
output.style = {"background-color": color, "padding": "10px", "border-radius": "5px", "color": "white"} | |
demo.launch() | |